Follow-up to #66, discovered while verifying the native Bun.Transpiler fixes in #567 against the unchanged pinned transpiler corpus.
The exact source pin remains 4982b91e3702094330f3be3883354c52b8c01323.
Reproduction
HOME_NATIVE_VM=1 HOME_CORPUS_FULL_VM=1 ./zig-out/bin/home-debug test \
packages/runtime/test/bun-corpus/bundler/transpiler/transpiler.test.js \
-t 'runtime transpiler stack overflows'Native Home exits 134 with a bus error after recursively alternating through ParseStmt.t_for and ParseStmt.parseStmt; the failure reaches pushScopeForParsePass instead of converting parser stack exhaustion into the expected JavaScript Maximum call stack size exceeded error.
Installed Bun 1.3.14 is a control and passes the unchanged case: 1 pass / 188 filtered out / 0 fail / 1 assertion. The broader Home run also crashes before the adjacent transformSync, async transform, and deeply nested expression guards can complete.
Port the real parser stack-check/error-unwind behavior across runtime import, synchronous transform, asynchronous transform, and the shape matrix already present in the pinned file. Do not reduce the fixture nesting, grow thread stacks as a substitute for a parser guard, relax deadlines, or count filtered tests as passes. Verify that parse scopes unwind cleanly after the error by following each rejected deep input with valid transforms in the same VM and worker pool.
This is separate from #567 (a diagnostic-bearing placeholder AST reaching the async printer) and from #76 (Home-language interpreter recursion).