I6 native compiler

I’ve been working on an AOT transpiler, provisionally called Flux, though I’m open to better name ideas!

It takes Inform 6 source, including the auto.inf generated by Inform 7, and compiles it through C to native code or WebAssembly.

Inform routines become compiled functions, calls go directly to them where possible, and object/property checks get specialised fast paths. Static strings are already uncompressed too, so no Huffman decoding when printing. Then the C compiler gets a go at optimising the whole thing.

I’ve been testing with Counterfeit Monkey, Kerkerkruip, Hadean Lands and Blue Lacuna. Startup and turn timings are currently 10-50× faster than Git (when it doesn’t crash).

It needs the I6 source rather than an existing .ulx. Still developing it, and I’m not doing a public release just yet, but thought I’d put it out there and see if there’s any interest.

Interesting. So it turns out into an executable rather than a game file for an interpreter?

It still needs a frontend, but essentially yes.

Note that Inform 7 already has a C output mode.

Yeah this comes in at roughly 2x faster than that, since it makes things more x86 shaped and decompresses strings, and targets compile at older games in Inform6.