- Zero-Copy-Binärserialisierungsformat, entwickelt, um die Grenze zwischen Daten-Parsing und Serialisierung aufzuheben
- Kodiert Daten in einer B-Baum-Struktur innerhalb eines einzelnen zusammenhängenden Puffers, sodass der Zugriff auf und die Änderung von beliebigen Feldern in
O(log n) möglich sind
- Das Speicherformat ist zugleich das Übertragungsformat, sodass Senden und Empfangen sofort ohne separates Parsing oder erneute Serialisierung möglich sind
- Direkt nach dem Empfang können Schlüsselabfragen, Wertänderungen und das erneute Senden vollständig nur per Speicherkopie (
memcpy) verarbeitet werden
- Schemafreie (self-describing) Struktur, nutzbar ohne IDL oder Schemadefinition
- Unterstützt wechselseitige Konvertierung mit JSON und stellt damit Kompatibilität mit bestehenden APIs und Datensätzen sicher
- Für Debugging und Nachrichteninspektion ist die Ausgabe im JSON-Format möglich
- Leistungsorientiertes Design
- Besteht aus einer cachefreundlichen B-Baum-Struktur und einer minimalen C-Implementierung von 9,3 kB
- Bis zu 120-mal schneller als die schnellsten JSON-Bibliotheken mit SIMD und bis zu 242-mal schneller als Google Flatbuffers
- Gehört zu den schnellsten schemafreien Datenformaten der Welt
- Technische Merkmale
- Unterstützung für Zero-Copy-Lesen/Schreiben, alle I/O-Operationen mit Komplexität
O(log n)
- Eingebaute Pointer-Validierung und Laufzeit-Typsicherheit
- Kein Einsatz von
malloc(), der Aufrufer stellt den Puffer direkt bereit
- Vorhersagbare Latenzzeiten und geringer Speicherverbrauch
- Basierend auf C11 (GNU-C-Syntax), ohne externe Abhängigkeiten
- Optional Nutzung von yyjson als Unterabhängigkeit für JSON-Konvertierung
- API-Aufbau
- Buffer API: basiert auf vom Nutzer bereitgestellten Puffern, maximale Speicherkontrolle
- Context API: abstrahiert Speicherverwaltung und bietet eine einfache Schnittstelle
- Vergleiche und Benchmark-Ergebnisse
- Gegenüber Textformaten wie JSON, BSON und MessagePack überragende Verarbeitungsgeschwindigkeit
- Bietet gegenüber Binärformaten wie Cap’n Proto und Flatbuffers mehr Flexibilität und bessere Änderbarkeit
- Erzielt Spitzenwerte in der Performance mit realen Twitter-API-Daten, Kostya JSON, C++-Serialisierungs-Benchmarks usw.
- Sicherheitsdesign
- Enthält Bounds-Checks zum Overflow-Schutz, generationsbasierte Pointer-Makros, Rekursionsbegrenzung und Laufzeit-Typprüfung
- Geeignet für die Verarbeitung nicht vertrauenswürdiger Eingabedaten
- Einsatzkontext
- Maximiert CPU-Effizienz in Hochleistungs-Netzwerk-Messaging, Echtzeit-Datenverarbeitung, Embedded-Umgebungen usw.
- Sofort einsetzbar in Systemen auf Basis von C-Schnittstellen
- Lizenz und Erweiterbarkeit
- Als MIT-Lizenz veröffentlicht, eigenständige C-Implementierung
- Es gibt eine zusätzliche Roadmap mit Sprach-Bindings, Kompressions-Benchmarks und einer offiziellen Spezifikation
- Ursprung und Hintergrund
- Unabhängig neu implementiertes Projekt auf Basis des im 2024 veröffentlichten Papers Lite² vorgeschlagenen Konzepts
- Der Name Lite³ bedeutet, dass es noch leichter als Lite² ist
Noch keine Kommentare.