Toolchain

Four backends

The same .sig source, four binary shapes.

Signum has four code-generators in the same tree. The language surface does not change; the backend you pick affects speed, portability, and debugging.

1. Tree-walking interpreter

Everything in src/interpreter/. The default for development and the engine this website runs. Starts in milliseconds; perfect for the playground.

2. AOT — codegen_c

src/codegen/ emits portable C that links against signum_rt.h. Compile once with any C compiler, ship a native binary. Deterministic; the output is reproducible across machines.

3. JIT — asmjit

src/jit/ generates machine code at run time via asmjit. Used by long-running tools that benefit from a warm compile step.

4. LLVM skeleton

src/ir/ plus LLVM glue produces an LLVM module for whole-program compilation. Still a skeleton compared to the three above, but the shape is in place.

You get the same semantics everywhere. If a program behaves differently across backends, it's a bug — the test-aot gate exists precisely to catch that.