- Formato de serialización binaria Zero-Copy desarrollado para eliminar la frontera entre el parseo de datos y la serialización
- Codifica los datos en una estructura de árbol B dentro de un único búfer contiguo, lo que permite acceso y modificación de campos arbitrarios en tiempo
O(log n)
- El formato en memoria funciona también como formato de transmisión, por lo que se puede enviar y recibir de inmediato sin procesos separados de parseo o reserialización
- Desde el momento de la recepción, la búsqueda de claves, la modificación de valores y la transmisión se manejan solo con copias de memoria (
memcpy)
- Estructura sin esquema (self-describing), utilizable sin IDL ni definición de esquema
- Soporta conversión bidireccional con JSON, asegurando compatibilidad con APIs y datasets existentes
- Puede imprimirse en formato JSON para depuración e inspección de mensajes
- Diseño centrado en el rendimiento
- Compuesto por una estructura de árbol B amigable con la caché y una implementación mínima en C de 9.3 kB
- Hasta 120 veces más rápido que las bibliotecas JSON más rápidas que usan SIMD, y hasta 242 veces más rápido que Google Flatbuffers
- Es uno de los formatos de datos sin esquema más rápidos del mundo
- Características técnicas
- Soporta lectura/escritura zero-copy, con todas las operaciones de E/S de complejidad
O(log n)
- Incluye validación de punteros y seguridad de tipos en tiempo de ejecución
- No usa
malloc(), el búfer lo proporciona directamente quien llama
- Latencia predecible y bajo uso de memoria
- Basado en C11 (sintaxis GNU C), sin dependencias externas
- Opcionalmente usa yyjson como subdependencia para soportar conversión con JSON
- Composición de la API
- Buffer API: basada en un búfer proporcionado por el usuario, maximiza el control de memoria
- Context API: abstrae la gestión de memoria y ofrece una interfaz simple
- Comparaciones y resultados de benchmarks
- Velocidad de procesamiento abrumadora frente a formatos de texto como JSON, BSON y MessagePack
- Ofrece mayor flexibilidad y capacidad de modificación que formatos binarios como Cap’n Proto y Flatbuffers
- Registra rendimiento de primer nivel con datos reales de la API de Twitter, Kostya JSON y benchmarks de serialización en C++
- Diseño de seguridad
- Incluye verificaciones de límites con protección contra overflow, macros de punteros por generación, límites de recursión y validación de tipos en tiempo de ejecución
- Estructura adecuada para procesar datos de entrada no confiables
- Contextos de uso
- Máxima eficiencia de CPU en mensajería de red de alto rendimiento, procesamiento de datos en tiempo real y entornos embebidos
- Aplicable de inmediato en sistemas basados en interfaces C
- Licencia y extensibilidad
- Publicado bajo licencia MIT, con una implementación independiente en C
- Tiene una hoja de ruta futura con bindings de lenguaje, benchmarks de compresión y una especificación oficial, entre otros
- Origen y antecedentes
- Proyecto reimplementado de forma independiente a partir del concepto propuesto en el artículo Lite² publicado en 2024
- El nombre Lite³ significa que es más ligero que Lite²
Aún no hay comentarios.