- Formato de serialização binária zero-copy desenvolvido para eliminar a fronteira entre parsing e serialização de dados
- Codifica os dados em uma estrutura B-tree dentro de um único buffer contínuo, permitindo acesso e modificação de campos arbitrários em tempo
O(log n)
- O formato em memória funciona como o próprio formato de transmissão, permitindo envio e recebimento imediatos sem parsing ou reserialização separados
- Assim que os dados são recebidos, busca de chaves, modificação de valores e transmissão podem ser feitos apenas com cópia de memória (
memcpy)
- Estrutura sem schema (self-describing), utilizável sem IDL nem definição de schema
- Suporta conversão bidirecional com JSON, garantindo compatibilidade com APIs e conjuntos de dados existentes
- Em depuração e inspeção de mensagens, pode ser exibido em formato JSON
- Projeto orientado a desempenho
- Composto por uma estrutura B-tree amigável a cache e uma implementação mínima em C de 9.3 kB
- Até 120 vezes mais rápido que as bibliotecas JSON mais rápidas com SIMD e até 242 vezes mais rápido que Google Flatbuffers
- É um dos formatos de dados schemaless mais rápidos do mundo
- Características técnicas
- Suporte a leitura/escrita zero-copy, com todas as operações de I/O em complexidade
O(log n)
- Verificação de ponteiros e segurança de tipos em tempo de execução integradas
- Não usa
malloc(), com o buffer sendo fornecido diretamente pelo chamador
- Latência previsível e baixo uso de memória
- Baseado em C11 (sintaxe GNU C), sem dependências externas
- Opcionalmente usa yyjson como subdependência para suportar conversão com JSON
- Composição da API
- Buffer API: baseada em buffer fornecido pelo usuário, maximizando o controle de memória
- Context API: abstrai o gerenciamento de memória e oferece uma interface simples
- Resultados de comparação e benchmark
- Velocidade de processamento esmagadora em relação a formatos de texto como JSON, BSON e MessagePack
- Oferece maior flexibilidade e possibilidade de modificação do que formatos binários como Cap’n Proto e Flatbuffers
- Registrou desempenho de ponta em dados reais da API do Twitter, Kostya JSON, benchmarks de serialização em C++ e outros
- Projeto de segurança
- Inclui verificações de limites com proteção contra overflow, macros de ponteiro por geração, limite de recursão e validação de tipos em tempo de execução
- Estrutura adequada para processar dados de entrada não confiáveis
- Contextos de uso
- Máxima eficiência de CPU em mensageria de rede de alto desempenho, processamento de dados em tempo real, ambientes embarcados e afins
- Pode ser aplicado imediatamente em sistemas baseados em interface C
- Licença e extensibilidade
- Publicado sob a licença MIT, como implementação independente em C
- Há um roadmap futuro com bindings para linguagens, benchmarks de compressão e especificação oficial, entre outros
- Origem e contexto
- Projeto reimplementado de forma independente com base no conceito proposto no artigo Lite², publicado em 2024
- O nome Lite³ significa que ele é ainda mais leve que Lite²
Ainda não há comentários.