Soil is a file-based, transactional object database for Pharo — it stores object graphs directly, with no mapping layer between your objects and the disk. This series builds it from the ground up: it starts with turning a single object into bytes and works outward through object graphs, identity, transactions, MVCC, indexes and crash recovery. It assumes you know databases in general but nothing about Soil's internals, and it trades grand theory for how one concrete system actually works.
Soil: turning an object into bytes A few years ago I wrote two posts about building an object database from scratch, BYOB - build your own (data)base and BYOB - object serialization, and then went quiet and just built the thing. Soil is real now: a file-based, transactional object database for Pharo, running in production. I want to go through its architecture properly this time, from the beginnin
22 July 2026
Soil: serializing a graph In the last post we turned a single object into a self-describing stream of bytes and read it back. That was the easy half. Real objects don't live alone. They point at other objects, those point at more, and before long you have a graph. Sometimes that graph shares a node from two places, and sometimes it points back at itself in a cycle. This post is about writing such
23 July 2026