Jeffrey M. Barber

Tombstone

zmlc

Nov 2005 โ€“ May 2006 ยท age 23โ€“24

What it was

"Zen's model language compiler." You wrote a schema that looked like a stripped-down C++ header, with classes, fields, pointers, arrays sized by another field, and note() annotations, and zmlc generated the rest for both C++ and C#: the classes, their accessors, single-owner ownership rules, deep equality, an XML serializer that kept shared references intact, and a flat binary format you loaded with one cast and a pass that turned file offsets back into pointers. The C# side carried each note into a property grid, giving every object a documented editor. The example that mattered was a scene format for Jeff's Cauldron game engine, so an editor in one language and an engine in the other could agree on one data model. Almost all of it was built in two days in May 2006, then licensed, documented and packaged.

Wins, for the age

What it taught

Genealogy

Ancestors: none on record. This is where the schema compilers begin. Descendants: Cauldron v2 ZMLC: the same compiler grown up inside the engine. Inferno: schema to C++ or C# with ownership and flat binary. Jovian Suite: a schema-generated model behind a web designer. Kitchen: the engine that ran on its generated data classes. Kitchen ZMLC2: the header-shaped schema, now emitting reflection and script field maps.

Epitaph

Here lies zmlc, a header file that compiled itself into two languages, three formats and an editor. It wrote pointers to disk, read them back with a cast, and said the shape once.