28P by xguru 2일전 | ★ favorite | 댓글과 토론
  • 데이터 파싱과 직렬화의 경계를 제거하기 위해 개발된 Zero-Copy 이진 직렬화 포맷
  • 단일 연속 버퍼 내에서 B-트리 구조로 데이터를 인코딩해, 임의 필드 접근과 수정이 O(log n) 시간에 가능
  • 메모리 포맷이 곧 전송 포맷으로 동작해, 별도의 파싱이나 재직렬화 과정 없이 즉시 송수신 가능
    • 수신 즉시 키 조회, 값 수정, 전송까지 모두 메모리 복사(memcpy)만으로 처리
  • 스키마 없는(self-describing) 구조로, IDL이나 스키마 정의 없이 사용 가능
    • JSON과 상호 변환 지원, 기존 API·데이터셋과 호환성 확보
    • 디버깅 및 메시지 검사 시 JSON 형태로 출력 가능
  • 성능 중심 설계
    • 캐시 친화적 B-트리 구조와 9.3 kB의 최소 C 구현체로 구성
    • SIMD를 사용하는 최고속 JSON 라이브러리 대비 최대 120배, Google Flatbuffers 대비 최대 242배 빠른 성능
    • 세계에서 가장 빠른 스키마리스 데이터 포맷 중 하나임
  • 기술적 특징
    • 제로-카피 읽기/쓰기 지원, 모든 I/O 연산 O(log n) 복잡도
    • 포인터 검증 및 런타임 타입 안전성 내장
    • malloc() 사용 안함, 호출자가 버퍼를 직접 제공
    • 예측 가능한 지연 시간낮은 메모리 사용량
    • C11 (GNU C 문법) 기반, 외부 의존성 없음
    • 선택적으로 yyjson을 서브 의존성으로 사용해 JSON 변환 지원
  • API 구성
    • Buffer API: 사용자 제공 버퍼 기반, 메모리 제어 극대화
    • Context API: 메모리 관리 추상화, 단순한 인터페이스 제공
  • 비교 및 벤치마크 결과
    • JSON, BSON, MessagePack 등 텍스트 포맷 대비 압도적 처리 속도
    • Cap’n Proto, Flatbuffers 등 이진 포맷보다 더 높은 유연성과 수정 가능성 제공
    • 실제 트위터 API 데이터, Kostya JSON, C++ 직렬화 벤치마크 등에서 최상위 성능 기록
  • 보안 설계
    • 오버플로 보호 경계 검사, 세대별 포인터 매크로, 재귀 제한, 런타임 타입 검증 포함
    • 신뢰할 수 없는 입력 데이터 처리에 적합한 구조
  • 활용 컨텍스트
    • 고성능 네트워크 메시징, 실시간 데이터 처리, 임베디드 환경 등에서 CPU 효율 극대화
    • C 인터페이스 기반 시스템에서 즉시 적용 가능
  • 라이선스 및 확장성
    • MIT 라이선스로 공개, 독립적인 C 구현체
    • 향후 언어 바인딩, 압축 벤치마크, 공식 스펙 작성 등 추가 로드맵 있음
  • 기원 및 배경
    • 2024년 발표된 Lite² 논문에서 제안된 개념을 기반으로, 독립적으로 재구현된 프로젝트
    • 이름 Lite³Lite²보다 더 가볍다는 의미