fed58b2814
vm-ext: exclude js parser (jp-*) from JIT — fixes js 147/148 -> 148/148
...
The lone js opt-in-JIT residual was async/await_in_loop, which failed to PARSE
under JIT ("Unexpected token: op '<'" on `i < 5`) while passing on CEK. The js
exclusion was "js-*", but the recursive-descent parser is the jp-* namespace
(75 functions in lib/js/parser.sx) — only the lexer/transpile/runtime are js-*.
So the parser was left JIT-eligible and a jp-* function miscompiled this
construct (the long-standing parser-miscompile class).
Fix: extend the js exclusion to "js-* jp-*" so the parser is interpret-only too,
matching how every other guest's front-end is handled. js conformance under
SX_SERVING_JIT=1 is now 148/148, == CEK.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:42:27 +00:00
bf298684fd
vm-ext: gate serving-JIT behind SX_SERVING_JIT + fix continuation-guest regressions
...
Enabling the epoch serving-mode JIT globally regressed continuation-based guest
interpreters (the epoch mode is the shared command channel every loop's
conformance runner uses). Two-part fix:
1. SAFE DEFAULT GATE. register_jit_hook in the persistent server branch is now
opt-in via SX_SERVING_JIT=1 (default OFF). Default behaviour is unchanged
(no JIT in epoch serving) → zero regression for sibling loops. The
content/Smalltalk page server opts in.
2. GENERAL FIXES + per-guest interpret-only declarations:
- callable? (sx_server/run_tests/integration_tests/mcp_tree) now accepts
VmClosure. A JIT-compiled higher-order function returns its inner closure
as a VmClosure; callable? previously rejected it, so scheme-apply's
(callable? proc) guard failed with "not a procedure: <vm:anon>".
- jit-exclude! gains a trailing-"*" namespace-prefix form
(Sx_types.jit_excluded_prefixes), the robust way to mark a whole guest
interpreter interpret-only (a name-list misses functions in extra files —
it left erlang's vm/dispatcher JIT'd and 13 tests short).
- Per-guest exclusions in each guest's runtime.sx:
scheme "scheme-*" "scm-*" erlang "er-*" "erlang-*"
prolog "pl-*" common-lisp "cl-*" "clos-*"
js "js-*" haskell "hk-*"
Verified under opt-in JIT (== CEK, no hang): smalltalk 847/847, scheme/flow
166/166, erlang 530/530, prolog 590/590, apl 152/152, js 147/148. Residual
(documented, protected by the default gate): common-lisp 6 fails in advanced
suites (parser-recovery/debugger/CLOS/MOP). lua (0/16) and tcl (3/4) fail
identically on CEK — pre-existing, not JIT. run_tests --jit/no-jit unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 22:22:40 +00:00
480462646d
Merge loops/js into architecture: var hoisting + ASI + matchAll on top of regex engine / TDZ scaffolding
...
Combined arch's regex platform dispatch (runtime.sx) with loops/js's var-hoisting transpiler
(transpile.sx) and matchAll string method. Plan checkboxes updated to reflect both done.
Conflicts: lib/js/runtime.sx, lib/js/transpile.sx, lib/js/test.sh, plans/js-on-sx.md.
2026-05-12 20:47:05 +00:00
154e2297fe
js-on-sx: fix js-string-repeat arity collision, repeat() raises RangeError on neg/inf
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
2026-05-11 05:55:51 +00:00
01d0e97706
js-on-sx: real Date prototype setters (setFullYear/Month/Date/Hours/Minutes/Seconds/Milliseconds)
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
2026-05-10 16:29:22 +00:00
a8596bd090
js-on-sx: Object.assign uses js-set-prop so keys appear in __js_order__
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
2026-05-10 15:37:15 +00:00
9d364a0c20
js-on-sx: user function prototype chain links Object.prototype + sets constructor
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
2026-05-10 14:52:49 +00:00
019a0c6105
js-on-sx: Math.hypot and Math.cbrt honour NaN/Infinity/+-0 edges
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
2026-05-10 12:32:14 +00:00
1e29bba1be
js-on-sx: globalThis self-ref, toFixed range + 1e21 fallback
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
2026-05-10 12:01:14 +00:00
551c24c5a0
js-on-sx: Math.round/max/min spec edges (NaN, +/-Infinity, +/-0)
Test, Build, and Deploy / test-build-deploy (push) Failing after 29s
2026-05-10 10:17:12 +00:00
85414df868
js-on-sx: Map/Set prototype methods throw TypeError on non-Map/Set this
Test, Build, and Deploy / test-build-deploy (push) Failing after 19s
2026-05-10 09:31:52 +00:00
237ea5ce84
js-on-sx: Date.UTC and new Date propagate NaN/Infinity args
Test, Build, and Deploy / test-build-deploy (push) Failing after 4m20s
2026-05-10 09:03:42 +00:00
df4aa8eb0a
js-on-sx: real Date construction + getters via Howard-Hinnant civil arithmetic
Test, Build, and Deploy / test-build-deploy (push) Failing after 27s
2026-05-10 08:33:22 +00:00
5bb65d8315
js-on-sx: Date.prototype.toISOString proper YMDhms format + Type/RangeError gates
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
2026-05-10 07:39:40 +00:00
fb8bb9f105
js-on-sx: JSON.stringify replacer (fn+array), space, toJSON
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
2026-05-10 07:04:14 +00:00
769559bae7
js-on-sx: JSON.parse raises SyntaxError, rejects trailing content + control chars
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
2026-05-10 06:32:11 +00:00
d7cc6d1b39
js-on-sx: split(undefined) returns whole string, funcexpr implicit return is undefined
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
2026-05-10 04:56:02 +00:00
df5e36aa5e
js-on-sx: number/boolean method dispatch falls back to Number/Boolean.prototype
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
2026-05-10 04:18:20 +00:00
8a06c2d72b
js-on-sx: String.prototype.* ToString-coerces non-string this; .call/.apply skip global-coerce for built-ins
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
2026-05-10 03:45:25 +00:00
058dcd5600
js-on-sx: ** / Math.pow spec edges (NaN exp, abs(base)=1+inf), Number.valueOf ignores args
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
2026-05-10 03:01:02 +00:00
1a34cc4456
js-on-sx: Number.prototype.toString(radix) avoids rational div-by-zero
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
2026-05-10 02:23:38 +00:00
ad897122d7
js-on-sx: array elision, list-instanceof-Array, array toString identity
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
2026-05-10 01:27:33 +00:00
ce067e32a4
js-on-sx: getOwnPropertyDescriptor skips internal __proto__/__js_order__
Test, Build, and Deploy / test-build-deploy (push) Failing after 28s
2026-05-10 00:13:08 +00:00
25b30788b4
js-on-sx: object literal spread {...src}
Test, Build, and Deploy / test-build-deploy (push) Failing after 31s
2026-05-09 23:42:13 +00:00
f15a8d8fef
js-on-sx: Object.getOwnPropertyNames throws on null, adds length for str/arr
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
2026-05-09 23:12:43 +00:00
b4f7f814be
js-on-sx: Object.values/entries throw on null/undefined, walk strings
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
2026-05-09 22:42:24 +00:00
dedb82565b
js-on-sx: Object.keys throws on null/undefined, walks indices on string/array
Test, Build, and Deploy / test-build-deploy (push) Failing after 20s
2026-05-09 22:12:05 +00:00
7d575cb1fe
js-on-sx: Object.assign ToObjects target, throws on null, walks string sources
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
2026-05-09 21:42:15 +00:00
793eccfce2
js-on-sx: Number.prototype methods unwrap Number wrappers, TypeError on non-Number
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
2026-05-09 21:09:56 +00:00
ada7a147e5
js-on-sx: Array.prototype methods carry spec lengths + names
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
2026-05-09 20:41:10 +00:00
65f3b6fcc0
js-on-sx: Number/String.prototype methods carry spec lengths + names
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
2026-05-09 20:12:41 +00:00
f256132eb3
js-on-sx: Boolean.prototype.toString/valueOf throw TypeError on non-Boolean
Test, Build, and Deploy / test-build-deploy (push) Failing after 21s
2026-05-09 19:41:24 +00:00
d4be87166b
js-on-sx: reduce/reduceRight callback receives (acc, cur, idx, array)
Test, Build, and Deploy / test-build-deploy (push) Failing after 27s
2026-05-09 19:13:12 +00:00
0655b942a5
js-on-sx: Array.prototype find/findIndex/some/every honour thisArg + (v,i,arr)
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
2026-05-09 18:42:20 +00:00
1fef6ec94d
js-on-sx: Array.prototype forEach/map/filter honour thisArg + pass (v,i,arr)
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
2026-05-09 18:08:33 +00:00
87bf3711c4
js-on-sx: Map/Set.prototype.forEach honour thisArg + pass (v,k,coll)
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
2026-05-09 17:33:29 +00:00
8ae7187c55
js-on-sx: for-in walks proto chain with shadowing, stops at native prototypes
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
2026-05-09 17:01:31 +00:00
7fc37abe02
js-on-sx: bind returns dict-with-__callable__ for property mutation + length
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
2026-05-09 14:47:54 +00:00
802544fdc6
js-on-sx: call/apply box primitive thisArg per non-strict ToObject
Test, Build, and Deploy / test-build-deploy (push) Failing after 48s
2026-05-09 14:13:57 +00:00
699b30ed1b
js-on-sx: Function.prototype.bind throws TypeError on non-callable target
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
2026-05-09 13:41:25 +00:00
16e21ef6fa
js-on-sx: Function.prototype.{call,apply,bind,toString} expose spec length/name
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
2026-05-09 13:09:11 +00:00
cd014cdb29
js-on-sx: Function.prototype call/apply/bind/toString delegate to real impl
Test, Build, and Deploy / test-build-deploy (push) Failing after 21s
2026-05-09 12:36:48 +00:00
adc4cb89c6
js-on-sx: fn proto chain walks through functions; fn.prototype = X persists
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
2026-05-09 12:07:34 +00:00
4481f5f98b
js-on-sx: call/apply substitute global for null/undefined this (non-strict)
Test, Build, and Deploy / test-build-deploy (push) Failing after 28s
2026-05-09 11:33:23 +00:00
b59f08a1b8
js-on-sx: expose more built-ins on js-global (Function, Errors, Promise, etc.)
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
2026-05-09 10:58:38 +00:00
d145532afe
js-on-sx: instanceof accepts function operands (fn instanceof Function/Object)
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
2026-05-09 09:44:48 +00:00
86f7a351fb
js-on-sx: relational ops ToPrimitive operands + NaN-safe le/ge
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
2026-05-09 09:13:06 +00:00
e4c92a19d4
js-on-sx: Error/TypeError/etc return instance when called without new
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
2026-05-09 08:35:11 +00:00
5632830118
js-on-sx: js-loose-eq honours NaN inequality across numeric/string paths
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
2026-05-09 07:33:03 +00:00
cb272317bc
js-on-sx: js-to-number returns NaN for functions, coerces lists
Test, Build, and Deploy / test-build-deploy (push) Failing after 21s
2026-05-09 06:29:06 +00:00