OPEN SOURCE · 2026 · MIT LICENSE

libvdb/

A small, journaled, embedded database written in portable C89 — built for Classic Mac OS, DOS, and the retro and embedded hardware that time forgot.

lang
C89
targets
Mac OS 7–9 · DOS · Linux · UNIX
storage
512-byte pages · B-Trees
safety
WAL + CRC16
license
MIT

## why

vDB is a record manager in the style of the embedded databases of the 1980s and 1990s. It uses almost no dynamic memory, so it runs on memory-constrained vintage machines, and it serializes every value byte by byte, so a file written on a big-endian Mac opens on a little-endian PC.

Writes go through a write-ahead journal with CRC16 checksums. If the power fails mid-write, the next open replays or discards the journal and the data stays consistent.

fig. 1 — write path
your appvdb_put() journal (WAL)CRC16 per entry data pages512 B each primary indexB-Tree by record ID secondaryint or CRC16(string)

## how it was built

I wrote the design specification by hand. Claude Code implemented it with two agents: a software engineer that wrote the code, and a QA engineer that reviewed each change against the spec.

QA FINDING 1

Insufficient bounds checking on key counts read back from disk.

QA FINDING 2

Missing validation when following overflow page chains.

Both are real security bugs that an unreviewed implementation would have shipped. The build log goes through the whole workflow.

← cd ../projects