axl is rayforce minus the database
summary: axldb is the rayforce kernel with the database parts removed to test where the engine boundary actually sits.
Core idea: AxlDB was a boundary test: remove language, tables, persistence, and REPL until only the vector engine remains.
AxlDB is rayforce with the database parts torn out, because I want to find out where the boundary is.
In rayforce, the engine and the database are tangled. Some of that tangling is honest (the query optimiser is the engine; the kernel is the engine), some of it is not (an error chain in the engine that exists because the language wants it; a memory layout that compromises the kernel because the table abstraction needs it). I cannot see which is which until I hold the engine in one hand.
So today I started AxlDB: vectors of fixed-width types, a few dozen primitives, a single entry point that takes a function id and an argument list and runs it. Day-one is around five hundred lines, the engine itself in axl.c is about two hundred and forty. No language. No tables. No persistence. No REPL.
I do not yet know whether AxlDB ships as its own thing, gets reabsorbed into rayforce, or becomes a lab notebook for ideas that find their way back. All three are fine. The point of the experiment is to be honest about which parts of rayforce are the engine and which are the database. By the time you finish writing two of something, you usually know.