omniLua vs
reference C
About 1.37× the wall-clock time of reference C across the tracked workloads (1.3× with PGO). Memory safety costs almost nothing — the gap is value representation and dispatch.
tracked workloads, stock
2.4× faster than C
bounds + RefCell guards
vs reference C
The numbers
Ratio = omniLua ÷ reference C on the same workload. Lower is better; 1.00× is parity.
Latest commit, by workload
Wall-time ratio at the most recent benchmarked commit (), fastest to slowest.
Wall-time ratio over commits
Execution time vs reference C, per workload, at every benchmarked commit.
Memory (RSS) ratio over commits
Peak resident-set vs reference C, per workload, at every benchmarked commit.
omniLua ÷ reference Lua 5.4.7, best of interleaved runs per commit. Three workloads beat C (table-bulk); the slowest are GC- and call-heavy. Method: docs/MEASUREMENT_PROTOCOL.md.
Where the gap is
We removed the bounds checks and borrow guards to measure them. That's not where the time goes.
Safety tax
Bounds checks and RefCell guards cost almost no wall time. No unsafe outside the GC, the loader, and the wasm ABI.
Representation
Each value is 16 bytes where C packs 8 (no NaN-boxing yet) — most of the ~2.3× instruction gap on the hot path.
Dispatch
A match loop versus C's computed-goto threading. PGO recovers some of it.