Phase 1 of the jit-perf-regression plan reproduced and quantified the alleged
30× substrate slowdown across 5 guests (tcl, lua, erlang, prolog, haskell). On
a quiet machine all five suites pass cleanly:
tcl test.sh 57.8s wall, 16.3s user, 376/376 ✓
lua test.sh 27.3s wall, 4.2s user, 185/185 ✓
erlang conformance 3m25s wall, 36.8s user, 530/530 ✓ (needs ≥600s budget)
prolog conformance 3m54s wall, 1m08s user, 590/590 ✓
haskell conformance 6m59s wall, 2m37s user, 156/156 ✓
Per-test user-time at architecture HEAD vs pre-substrate-merge baseline
(83dbb595) is essentially flat (tcl 0.83×, lua 1.4×, prolog 0.82×). The
symptoms reported in the plan (test timeouts, OOMs, 30-min hangs) were heavy
CPU contention from concurrent loops + one undersized internal `timeout 120`
in erlang's conformance script. There is no substrate regression to bisect.
Changes:
* lib/tcl/test.sh: `timeout 2400` → `timeout 300`. The original 180s deadline
is comfortable on a quiet machine (3.1× headroom); 300s gives some safety
margin for moderate contention without masking real regressions.
* lib/erlang/conformance.sh: `timeout 120` → `timeout 600`. The 120s budget
was actually too tight for the full 9-suite chain even before this work.
* lib/erlang/scoreboard.{json,md}: 0/0 → 530/530 — populated by a successful
conformance run with the new deadline. The previous 0/0 was a stale
artefact of the run timing out before parsing any markers.
* plans/jit-perf-regression.md: full Phase 1 progress log including
per-guest perf table, quiet-machine re-measurement, and conclusion.
Phases 2–4 (bisect, diagnose, fix) skipped — there is no substrate regression
to find. Phase 6 (perf-regression alarm) still planned to catch the next
quadratic blow-up early instead of via watchdog bumps.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17 lines
590 B
JSON
17 lines
590 B
JSON
{
|
|
"language": "erlang",
|
|
"total_pass": 530,
|
|
"total": 530,
|
|
"suites": [
|
|
{"name":"tokenize","pass":62,"total":62,"status":"ok"},
|
|
{"name":"parse","pass":52,"total":52,"status":"ok"},
|
|
{"name":"eval","pass":346,"total":346,"status":"ok"},
|
|
{"name":"runtime","pass":39,"total":39,"status":"ok"},
|
|
{"name":"ring","pass":4,"total":4,"status":"ok"},
|
|
{"name":"ping-pong","pass":4,"total":4,"status":"ok"},
|
|
{"name":"bank","pass":8,"total":8,"status":"ok"},
|
|
{"name":"echo","pass":7,"total":7,"status":"ok"},
|
|
{"name":"fib","pass":8,"total":8,"status":"ok"}
|
|
]
|
|
}
|