Most of this week went into the JIT, and the short version is that the chase got close enough to describe without ratios doing the heavy lifting.
Three changes carried it. Self-recursive functions, the parsers and
tree walkers and fib shapes, now inline two levels of their
own recursion in compiled code, roughly a third faster on ARM64.
Linearly recursive functions, accumulators and list walks that make one
self-call, compile their descent as a loop instead of a chain of calls,
about 40% faster on ARM64 and a third on x86-64. And the x86-64 backend
caught up to the ARM one capability by capability until the two boards
agree on shape.
Where it stands, on the repo suite's August 10 board: on Apple silicon the realistic tier now runs ahead of LuaJIT overall, and on x86-64 it sits at parity. LuaJIT still owns the micro tier and deep recursion, twenty years of tuning is twenty years of tuning, and the string-keyed dictionary lane remains its win.
The standing caveat applies and we will keep repeating it: these are our benchmarks, on our machines, chosen as development targets. They steer the work honestly, and they are more sport than science relative to whatever your real workload is. Progress marker, never verdict.