Esper

An Embeddable Compiler Backend

A language frontend links it, builds an representation in memory, and gets back an executable, an object file, C, LLVM IR, or a running program. A C99 core, approachable text, and backends you can choose.

Built in memory

A frontend calls the builder API directly. The text format is one client of it, not a layer above it.

Runs everywhere it claims

x86_64, arm64 and riscv64, in ELF, Mach-O or COFF, with the target chosen at run time. One binary cross-compiles.

Checked by running

Every optimization pass has to agree with no passes at all, on every program in the corpus, on four architectures.

Embeddable VM

The interpreter executes IR directly, for tests, compile-time evaluation, or a scripting runtime.