smoke test for the ir-driven transpiler: every translation unit starts with the core preamble, optionally declares types (forward + full def in topological order), then forward-decls all functions, then bodies, then the runtime trailer when a `main` is present. `main` is renamed to `catskill_main` so the runtime can wrap it. <<< main = fun () { } >>> #include "core.c" void catskill_main(void); void catskill_main(void) { } #include "runtime.c"