1 dépôt
Techniques for controlling the bit-width and integer size of structured data fields to minimize memory footprints.
Distinct from Memory Size Calculators: Closest candidates focus on memory pool management or size calculation, not the definition of field bit-widths and integer types during code generation.
Explore 1 awesome GitHub repository matching operating systems & systems programming · Binary Field Layout Optimizations. Refine with filters or upvote what's useful.
Nanopb est une implémentation C légère de Protocol Buffers conçue pour les systèmes aux ressources limitées et les microcontrôleurs. Il fonctionne à la fois comme une bibliothèque de sérialisation embarquée pour encoder et décoder des données structurées, et comme un générateur de code qui transforme les fichiers de définition en fichiers source et en-tête C compacts. Le projet se distingue par son accent sur l'allocation mémoire statique, utilisant des tailles maximales fixes pour les chaînes et les tableaux afin d'éviter l'allocation mémoire dynamique et la fragmentation du tas. Il emploie un mécanisme de streaming basé sur des callbacks pour traiter les messages ou les champs qui dépassent la RAM physique disponible, permettant la gestion de données de longueur variable sans épuiser la mémoire système. La bibliothèque fournit de larges capacités pour la sérialisation binaire, incluant le calcul de taille encodée, le suivi de présence des sous-messages et le framing au niveau transport. Elle inclut également des utilitaires de réflexion pour l'itération sur les champs, la validation de chaînes UTF-8 et l'application stricte des limites pour garantir la sécurité mémoire lors du parsing d'entrées binaires non fiables.
Controls the memory footprint of arrays and enums by specifying integer sizes and bit-widths during generation.