← writing

one judgment, three subsystems

summary: the bet i made in 2016 that i am, finally, fairly sure was right.

ThePlatform ThePlatform: proving the shared runtime in production work: 2016-2020 retrospective

Core idea: ThePlatform was an attempt to reduce vector evaluation, reaction firing, and grammar reduction to one judgment form.

There is one extension protocol in O, and adding a subsystem to the runtime is a row in the same table.

A primitive has an arity, an effect class, and a shape signature. The runtime indexes implementations by those. Vector ops are primitives. Reactions are primitives. Parser rules are primitives. They all live in the same table. When a reaction misbehaves I see the same trace shape I see when a vector op misbehaves; the optimiser fuses a parse-then-aggregate the same way it fuses two maps; profiling, tracing, error reporting, and cancellation attach to the dispatch, not to the subsystem.

In the kernel, the registry is one struct, populated by the arity-classed crates (monad, dyad1..dyad4, triad, tetrad1..tetrad3) and the reactor and parser registrations. The day there are two extension protocols is the day the system stops being O and starts being something else.

If I had to give up one idea from the last four years, it would not be this one.