omniLua

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.

1.37×
wall-time geomean
tracked workloads, stock
0.42×
table_ops_long
2.4× faster than C
~0%
safety tax
bounds + RefCell guards
1.72×
peak memory geomean
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.

faster than C typical slower (≥1.9×) │ parity (1.00×)

Wall-time ratio over commits

Execution time vs reference C, per workload, at every benchmarked commit.

y-max commits

Memory (RSS) ratio over commits

Peak resident-set vs reference C, per workload, at every benchmarked commit.

y-max commits

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.

~0%

Safety tax

Bounds checks and RefCell guards cost almost no wall time. No unsafe outside the GC, the loader, and the wasm ABI.

16 vs 8

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

Dispatch

A match loop versus C's computed-goto threading. PGO recovers some of it.