29 points par xguru 2025-12-12 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Format de sérialisation binaire zero-copy développé pour effacer la frontière entre l’analyse des données et la sérialisation
  • Les données sont encodées dans une structure en B-arbre au sein d’un unique buffer contigu, ce qui permet l’accès et la modification de champs arbitraires en temps O(log n)
  • Le format mémoire est aussi le format de transmission, permettant un envoi et une réception immédiats sans étape distincte d’analyse ni de re-sérialisation
    • Dès la réception, la recherche de clés, la modification de valeurs et la transmission peuvent être entièrement traitées par simple copie mémoire (memcpy)
  • Structure sans schéma (auto-descriptive), utilisable sans IDL ni définition de schéma
    • Prise en charge de la conversion bidirectionnelle avec JSON, assurant la compatibilité avec les API et jeux de données existants
    • Possibilité d’affichage au format JSON pour le débogage et l’inspection des messages
  • Conception axée sur les performances
    • Repose sur une structure en B-arbre favorable au cache et sur une implémentation C minimale de 9,3 kB
    • Jusqu’à 120 fois plus rapide que les bibliothèques JSON les plus rapides utilisant le SIMD, et jusqu’à 242 fois plus rapide que Google Flatbuffers
    • Fait partie des formats de données sans schéma les plus rapides au monde
  • Caractéristiques techniques
    • Prise en charge de la lecture/écriture zero-copy, avec toutes les opérations d’E/S en complexité O(log n)
    • Validation des pointeurs et sûreté de type à l’exécution intégrées
    • N’utilise pas malloc(), le buffer étant fourni directement par l’appelant
    • Latence prévisible et faible empreinte mémoire
    • Basé sur C11 (syntaxe GNU C), sans dépendance externe
    • Utilise éventuellement yyjson comme sous-dépendance pour prendre en charge la conversion JSON
  • Composition de l’API
    • Buffer API : basée sur un buffer fourni par l’utilisateur, pour un contrôle mémoire maximal
    • Context API : abstraction de la gestion mémoire, offrant une interface simple
  • Comparaisons et résultats de benchmarks
    • Vitesse de traitement écrasante face aux formats texte comme JSON, BSON ou MessagePack
    • Offre davantage de flexibilité et de capacité de modification que des formats binaires comme Cap’n Proto et Flatbuffers
    • Enregistre des performances de tout premier plan sur des données réelles de l’API Twitter, Kostya JSON et des benchmarks de sérialisation C++
  • Conception de la sécurité
    • Comprend des vérifications de bornes contre les débordements, des macros de pointeurs générationnels, des limites de récursion et une vérification de type à l’exécution
    • Structure adaptée au traitement de données d’entrée non fiables
  • Contextes d’utilisation
    • Maximise l’efficacité CPU dans des cas comme la messagerie réseau haute performance, le traitement de données en temps réel et les environnements embarqués
    • Applicable immédiatement dans les systèmes basés sur une interface C
  • Licence et extensibilité
    • Publié sous licence MIT, avec une implémentation C autonome
    • Une feuille de route prévoit notamment des bindings pour d’autres langages, des benchmarks de compression et la rédaction d’une spécification officielle
  • Origine et contexte
    • Projet réimplémenté de manière indépendante à partir du concept proposé dans l’article Lite² publié en 2024
    • Le nom Lite³ signifie qu’il est encore plus léger que Lite²

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.