← writing

starting in c, again

summary: a year and a half of thinking. the database i want to ship lives in someone else's binary, so it has to be in c.

RayforceDB Rayforce: restart in C for embeddability work: 2020-2022 milestone

Core idea: rewriting the embeddable engine in C was a deployment decision: ownership of ABI, binary size, allocator behavior, and integration mattered more than implementation comfort.

A year and a half of thinking. Today I started, in C.

The decision is C because the whole point of the next thing is that it embeds. The database I want to ship lives inside someone else's binary - a desk's analytics process, a partner's pipeline, a microcontroller in a vehicle - and that someone is not going to inherit a Cargo workspace and a tokio runtime to use my library. They are going to want a single static .a, a header, and a stable C ABI.

Rust would be more pleasant in a hundred small ways. It would cost me the size of the linked artifact and the complexity of the toolchain to build it. ThePlatform is Rust and I am happy with that, but ThePlatform is a server. Servers can carry a runtime. Libraries cannot.

The repo is private and will probably stay private for a few years while the shape settles. I am writing this for myself.