kavak.run compiler stack

Conformance · measured, not claimed

How much Lua actually runs.

The Lua team's own test suite, run through luakc unmodified. The unit is the individual assert, not the file: a file stops at its first failure, so counting files would say nothing.

56.8%1,422 of 2,505 in-scope asserts
  • passing1,422
  • not yet supported1,082
  • wrong — a real defect1
  • out of scope / no arbiter772
What was measured
Authority
languages/Lua/vendor/lua-5.4.8-tests
Arbiter
Lua 5.4.8 (a reference interpreter built from the vendored source — NOT the system's 5.5.0, so that the version matches the suite)
Unit
assert
Measured
2026-08-02 02:33

breakdown

Breakdown by suite file

suite filetestspassingnot yetwrongout of scopepass ratesplit
math.lua (426 assert)4263900036100.0%
strings.lua (229 assert)2291803901082.2%
pm.lua (167 assert)167167000100.0%
nextvar.lua (161 assert)1611380023100.0%
events.lua (144 assert)144138006100.0%
tpack.lua (94 assert)9493001100.0%
constructs.lua (68 assert)686350092.6%
closure.lua (55 assert)5555000100.0%
utf8.lua (51 assert)5151000100.0%
vararg.lua (33 assert)3333000100.0%
goto.lua (25 assert)2525000100.0%
gc.lua (89 assert)89203803134.5%
calls.lua (84 assert)8418650121.7%
gengc.lua (26 assert)261810794.7%
errors.lua (62 assert)6216381729.1%
attrib.lua (126 assert)126114407120.0%
verybig.lua (6 assert)6510083.3%
files.lua (280 assert)28011902605.0%
api.lua (267 assert)267000267
coroutine.lua (216 assert)2160216000.0%
db.lua (192 assert)1920192000.0%
locals.lua (155 assert)1550155000.0%
bitwise.lua (149 assert)1490147020.0%
literals.lua (61 assert)61061000.0%
sort.lua (34 assert)34034000.0%
main.lua (33 assert)330100230.0%
code.lua (15 assert)1500015
big.lua (12 assert)12012000.0%
cstack.lua (12 assert)1205070.0%
heavy.lua (5 assert)50005
all.lua (0 assert)00000
bwcoercion.lua (0 assert)00000
tracegc.lua (0 assert)00000

blockers

What blocks the rest

The ten most expensive blockers. Next to each is how many asserts it costs — one compiler gap can stop a whole file, so the cost is what matters, not the count of distinct errors.

costreason — the measurement's own wordsblamed
216compiler: luakc: captured binding '…' was not boxed — capture analysis disagreed → blocks all 216 asserts in this filecoroutine.lua
192compiler: luakc: yield through a recursive helper frame is not implemented → blocks all 192 asserts in this filedb.lua
155compiler: luakc: too many functions in this module → blocks all 155 asserts in this filelocals.lua
147bitwise.lua:6: module 'bwcoercion' not found: — no field package.preload['bwcoercion'] → blocks all 147 asserts in this filebitwise.lua
65calls.lua:119: stack overflow → blocks all 65 asserts in this filecalls.lua
61compiler: luakc: yield through a recursive helper frame is not implemented → blocks all 61 asserts in this fileliterals.lua
44attrib.lua:30: attempt to call a nil value → blocks all 44 asserts in this fileattrib.lua
39strings.lua:345: invalid conversion in 'string.format' → blocks all 39 asserts in this filestrings.lua
38assertion failed! → blocks all 38 asserts in this fileerrors.lua
38gc.lua:261: attempt to concatenate a table value (local 'k') → blocks all 38 asserts in this filegc.lua

A further 87 asserts are blocked by smaller causes; the full list is in the raw measurement (JSON).