The JS parser transpiled from parser.sx used tail-recursive functions (readStrLoop, skipWs, readListLoop, etc.) which overflow the stack on large inputs — the bootstrapper page highlights 100KB of Python and 143KB of JavaScript, producing 7620 spans in a 907KB response. The bootstrapper now detects zero-arg self-tail-recursive functions and emits them as while(true) loops with continue instead of recursive calls. Tested with 150K char strings and 8000 sibling elements. Also enables SX_USE_REF=1 in dev via x-dev-env anchor. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
140 KiB
140 KiB