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
- 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
- Raw data
- raw measurement (JSON)
breakdown
Breakdown by suite file
| suite file | tests | passing | not yet | wrong | out of scope | pass rate | split |
|---|---|---|---|---|---|---|---|
| math.lua (426 assert) | 426 | 390 | 0 | 0 | 36 | 100.0% | |
| strings.lua (229 assert) | 229 | 180 | 39 | 0 | 10 | 82.2% | |
| pm.lua (167 assert) | 167 | 167 | 0 | 0 | 0 | 100.0% | |
| nextvar.lua (161 assert) | 161 | 138 | 0 | 0 | 23 | 100.0% | |
| events.lua (144 assert) | 144 | 138 | 0 | 0 | 6 | 100.0% | |
| tpack.lua (94 assert) | 94 | 93 | 0 | 0 | 1 | 100.0% | |
| constructs.lua (68 assert) | 68 | 63 | 5 | 0 | 0 | 92.6% | |
| closure.lua (55 assert) | 55 | 55 | 0 | 0 | 0 | 100.0% | |
| utf8.lua (51 assert) | 51 | 51 | 0 | 0 | 0 | 100.0% | |
| vararg.lua (33 assert) | 33 | 33 | 0 | 0 | 0 | 100.0% | |
| goto.lua (25 assert) | 25 | 25 | 0 | 0 | 0 | 100.0% | |
| gc.lua (89 assert) | 89 | 20 | 38 | 0 | 31 | 34.5% | |
| calls.lua (84 assert) | 84 | 18 | 65 | 0 | 1 | 21.7% | |
| gengc.lua (26 assert) | 26 | 18 | 1 | 0 | 7 | 94.7% | |
| errors.lua (62 assert) | 62 | 16 | 38 | 1 | 7 | 29.1% | |
| attrib.lua (126 assert) | 126 | 11 | 44 | 0 | 71 | 20.0% | |
| verybig.lua (6 assert) | 6 | 5 | 1 | 0 | 0 | 83.3% | |
| files.lua (280 assert) | 280 | 1 | 19 | 0 | 260 | 5.0% | |
| api.lua (267 assert) | 267 | 0 | 0 | 0 | 267 | — | |
| coroutine.lua (216 assert) | 216 | 0 | 216 | 0 | 0 | 0.0% | |
| db.lua (192 assert) | 192 | 0 | 192 | 0 | 0 | 0.0% | |
| locals.lua (155 assert) | 155 | 0 | 155 | 0 | 0 | 0.0% | |
| bitwise.lua (149 assert) | 149 | 0 | 147 | 0 | 2 | 0.0% | |
| literals.lua (61 assert) | 61 | 0 | 61 | 0 | 0 | 0.0% | |
| sort.lua (34 assert) | 34 | 0 | 34 | 0 | 0 | 0.0% | |
| main.lua (33 assert) | 33 | 0 | 10 | 0 | 23 | 0.0% | |
| code.lua (15 assert) | 15 | 0 | 0 | 0 | 15 | — | |
| big.lua (12 assert) | 12 | 0 | 12 | 0 | 0 | 0.0% | |
| cstack.lua (12 assert) | 12 | 0 | 5 | 0 | 7 | 0.0% | |
| heavy.lua (5 assert) | 5 | 0 | 0 | 0 | 5 | — | |
| all.lua (0 assert) | 0 | 0 | 0 | 0 | 0 | — | |
| bwcoercion.lua (0 assert) | 0 | 0 | 0 | 0 | 0 | — | |
| tracegc.lua (0 assert) | 0 | 0 | 0 | 0 | 0 | — |
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.
| cost | reason — the measurement's own words | blamed |
|---|---|---|
| 216 | compiler: luakc: captured binding '…' was not boxed — capture analysis disagreed → blocks all 216 asserts in this file | coroutine.lua |
| 192 | compiler: luakc: yield through a recursive helper frame is not implemented → blocks all 192 asserts in this file | db.lua |
| 155 | compiler: luakc: too many functions in this module → blocks all 155 asserts in this file | locals.lua |
| 147 | bitwise.lua:6: module 'bwcoercion' not found: — no field package.preload['bwcoercion'] → blocks all 147 asserts in this file | bitwise.lua |
| 65 | calls.lua:119: stack overflow → blocks all 65 asserts in this file | calls.lua |
| 61 | compiler: luakc: yield through a recursive helper frame is not implemented → blocks all 61 asserts in this file | literals.lua |
| 44 | attrib.lua:30: attempt to call a nil value → blocks all 44 asserts in this file | attrib.lua |
| 39 | strings.lua:345: invalid conversion in 'string.format' → blocks all 39 asserts in this file | strings.lua |
| 38 | assertion failed! → blocks all 38 asserts in this file | errors.lua |
| 38 | gc.lua:261: attempt to concatenate a table value (local 'k') → blocks all 38 asserts in this file | gc.lua |
A further 87 asserts are blocked by smaller causes; the full list is in the raw measurement (JSON).