Graven

How we got here

Graven started from FlatBuffers and Cap'n Proto. Both showed that a message can be read in place, without parsing, and both made choices we wanted to revisit: FlatBuffers builds messages back to front, and Cap'n Proto pads every value to 8 bytes. The project began as an experiment called zidl. The question was simple: could a format be written front to back, straight into a pooled buffer, smaller than both, and still win on speed? Every answer had to come from a benchmark.

The documents below are the record of that exploration: the designs, the implementation plans and the benchmark reports, in the order they were written. They are not normative. Several decisions in them were changed later (the name, the magic bytes, versions in namespaces). The format specification is the text that counts.

Timeline

1. The first design (2026-11-12)

Original design: the goals, in priority order, and the first version of the format. Tables with a fixed part and presence bits, relative i32 pointers, no alignment padding, and lists that can be written as a stream.

2. A runtime, and a fair fight

3. Hardening into v1

4. A compiler

5. Robustness

6. Graven

The project was renamed Graven, the magic became GRVN, and namespaces lost their versions. Imports between schema files, doc comments, the full 128-bit literal range and the tools came after that. The changelog and proposal 0001 cover that part.