diff --git a/lib/lua/scoreboard.json b/lib/lua/scoreboard.json new file mode 100644 index 00000000..cd886261 --- /dev/null +++ b/lib/lua/scoreboard.json @@ -0,0 +1,171 @@ +{ + "totals": { + "pass": 0, + "fail": 16, + "timeout": 0, + "skip": 8, + "total": 24, + "runnable": 16, + "pass_rate": 0.0 + }, + "top_failure_modes": [ + [ + "parse error", + 14 + ], + [ + "undefined symbol: print\\", + 1 + ], + [ + "transpile: unsupported node", + 1 + ] + ], + "results": [ + { + "name": "all.lua", + "status": "skip", + "reason": "driver uses dofile to chain other tests", + "ms": 0 + }, + { + "name": "api.lua", + "status": "skip", + "reason": "requires testC (C debug library)", + "ms": 0 + }, + { + "name": "attrib.lua", + "status": "fail", + "reason": "parse error", + "ms": 3243 + }, + { + "name": "big.lua", + "status": "fail", + "reason": "undefined symbol: print\\", + "ms": 4383 + }, + { + "name": "calls.lua", + "status": "fail", + "reason": "parse error", + "ms": 3565 + }, + { + "name": "checktable.lua", + "status": "skip", + "reason": "internal debug helpers", + "ms": 0 + }, + { + "name": "closure.lua", + "status": "fail", + "reason": "parse error", + "ms": 3465 + }, + { + "name": "code.lua", + "status": "skip", + "reason": "bytecode inspection via debug library", + "ms": 0 + }, + { + "name": "constructs.lua", + "status": "fail", + "reason": "parse error", + "ms": 2522 + }, + { + "name": "db.lua", + "status": "skip", + "reason": "debug library", + "ms": 0 + }, + { + "name": "errors.lua", + "status": "fail", + "reason": "parse error", + "ms": 2371 + }, + { + "name": "events.lua", + "status": "fail", + "reason": "parse error", + "ms": 5133 + }, + { + "name": "files.lua", + "status": "skip", + "reason": "io library", + "ms": 0 + }, + { + "name": "gc.lua", + "status": "skip", + "reason": "collectgarbage / finalisers", + "ms": 0 + }, + { + "name": "literals.lua", + "status": "fail", + "reason": "parse error", + "ms": 1434 + }, + { + "name": "locals.lua", + "status": "fail", + "reason": "parse error", + "ms": 1386 + }, + { + "name": "main.lua", + "status": "skip", + "reason": "standalone interpreter driver", + "ms": 0 + }, + { + "name": "math.lua", + "status": "fail", + "reason": "parse error", + "ms": 2427 + }, + { + "name": "nextvar.lua", + "status": "fail", + "reason": "parse error", + "ms": 4241 + }, + { + "name": "pm.lua", + "status": "fail", + "reason": "parse error", + "ms": 5026 + }, + { + "name": "sort.lua", + "status": "fail", + "reason": "parse error", + "ms": 930 + }, + { + "name": "strings.lua", + "status": "fail", + "reason": "parse error", + "ms": 3424 + }, + { + "name": "vararg.lua", + "status": "fail", + "reason": "transpile: unsupported node", + "ms": 1931 + }, + { + "name": "verybig.lua", + "status": "fail", + "reason": "parse error", + "ms": 450 + } + ] +} \ No newline at end of file diff --git a/lib/lua/scoreboard.md b/lib/lua/scoreboard.md new file mode 100644 index 00000000..a8f5f486 --- /dev/null +++ b/lib/lua/scoreboard.md @@ -0,0 +1,39 @@ +# Lua-on-SX conformance scoreboard + +**Pass rate:** 0/16 runnable (0.0%) +fail=16 timeout=0 skip=8 total=24 + +## Top failure modes + +- **14x** parse error +- **1x** undefined symbol: print\ +- **1x** transpile: unsupported node + +## Per-test results + +| Test | Status | Reason | ms | +|---|---|---|---:| +| all.lua | skip | driver uses dofile to chain other tests | 0 | +| api.lua | skip | requires testC (C debug library) | 0 | +| attrib.lua | fail | parse error | 3243 | +| big.lua | fail | undefined symbol: print\ | 4383 | +| calls.lua | fail | parse error | 3565 | +| checktable.lua | skip | internal debug helpers | 0 | +| closure.lua | fail | parse error | 3465 | +| code.lua | skip | bytecode inspection via debug library | 0 | +| constructs.lua | fail | parse error | 2522 | +| db.lua | skip | debug library | 0 | +| errors.lua | fail | parse error | 2371 | +| events.lua | fail | parse error | 5133 | +| files.lua | skip | io library | 0 | +| gc.lua | skip | collectgarbage / finalisers | 0 | +| literals.lua | fail | parse error | 1434 | +| locals.lua | fail | parse error | 1386 | +| main.lua | skip | standalone interpreter driver | 0 | +| math.lua | fail | parse error | 2427 | +| nextvar.lua | fail | parse error | 4241 | +| pm.lua | fail | parse error | 5026 | +| sort.lua | fail | parse error | 930 | +| strings.lua | fail | parse error | 3424 | +| vararg.lua | fail | transpile: unsupported node | 1931 | +| verybig.lua | fail | parse error | 450 | diff --git a/plans/lua-on-sx.md b/plans/lua-on-sx.md index e83a7731..06ac655e 100644 --- a/plans/lua-on-sx.md +++ b/plans/lua-on-sx.md @@ -57,7 +57,7 @@ Each item: implement → tests → tick box → update progress log. - [x] Raw table access `t.k` / `t[k]` (no metatables yet) - [x] Vendor PUC-Rio 5.1.5 suite to `lib/lua/lua-tests/` (just `.lua` files) - [x] `lib/lua/conformance.sh` + Python runner (model on `lib/js/test262-runner.py`) -- [ ] `scoreboard.json` + `scoreboard.md` baseline +- [x] `scoreboard.json` + `scoreboard.md` baseline ### Phase 4 — metatables + error handling (next run) - [ ] Metatable dispatch: `__index`, `__newindex`, `__add`/`__sub`/…, `__eq`, `__lt`, `__call`, `__tostring`, `__len` @@ -82,6 +82,7 @@ Each item: implement → tests → tick box → update progress log. _Newest first. Agent appends on every commit._ +- 2026-04-24: lua: PUC-Rio scoreboard baseline — 0/16 runnable pass (0.0%). Top modes: 14× parse error, 1× `print` undef, 1× vararg transpile. Phase 3 complete. - 2026-04-24: lua: conformance runner — `conformance.sh` shim + `conformance.py` (long-lived sx_server, epoch protocol, classify_error, writes scoreboard.{json,md}). 24 files classified in full run: 8 skip / 16 fail / 0 timeout. - 2026-04-24: lua: vendored PUC-Rio 5.1 test suite (lua5.1-tests.tar.gz from lua.org) to `lib/lua/lua-tests/` — 22 .lua files, 6304 lines; README kept for context. - 2026-04-24: lua: raw table access — fix `lua-set!` to use `dict-set!` (mutating), fix `lua-len` `has?`→`has-key?`, `#t` works, mutation/chained/computed-key writes + reference semantics. 224 total tests.