ccf8a0fb90
GUEST-plan: claim step 1 — conformance.sx
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 22:02:31 +00:00
c265c6e376
GUEST-plan: log step 0 done
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 22:02:08 +00:00
2f7f8189ea
GUEST: step 0 — baseline snapshot
...
Created lib/guest/baseline/ with normalised scoreboards for all 11 guests:
lua 185/185, forth 64/64, ruby 76/76, apl 73/73, prolog 590/590,
common-lisp 309/309, smalltalk 625/629, tcl 3/4, haskell 0/18 programs,
js 94/148 (test262-slice), erlang 0/0 (suite all-zero).
Re-ran every conformance.sh and test.sh; refreshed each guest's own
scoreboard.{json,md} so per-guest scoreboard matches lib/guest/baseline/<lang>.json.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 22:01:51 +00:00
d25cb1223e
plan: record step 2 commit hash
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 21:45:52 +00:00
e80e655b51
sx: step 2 — restore frame locals on browser VmSuspension resume
...
In `resume_vm`'s `restore_reuse`, the saved sp captured by
`call_closure_reuse` was ignored when restoring the caller frame after the
async callback finished. The suspended callee's locals/temps stayed on the
value stack above saved_sp, so subsequent LOCAL_GET/SET in the caller
frame (e.g. letrec sibling bindings waiting on the suspending call) read
stale callee data instead of their own slots. Sibling bindings appeared
nil after a perform/resume cycle on the JIT path used by the WASM
browser kernel.
Fix: after popping the callback result and restoring saved_frames, reset
`vm.sp <- saved_sp` (when sp is above), then push the callback result.
Mirrors the OP_RETURN+sp-reset discipline that sync `call_closure_reuse`
already follows.
New tests in `spec/tests/test-letrec-resume.sx` cover single binding,
sibling bindings, mutual recursion siblings, and nested letrec —
all four pass. Full OCaml run_tests: 4529/5868 (was 4525/5864), zero
regressions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 21:45:44 +00:00
4332b4032f
apl: outer product ∘.f (+12 tests, 151/151)
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
2026-05-06 21:41:15 +00:00
e85a828de8
plan: record step 1 commit hash
2026-05-06 21:30:27 +00:00
882a4b76cb
sx: step 1 — fix JIT call_closure_reuse for closure returns
...
In `call_closure_reuse`, the success path used a bare `pop vm` that relied on
OP_RETURN having left the stack at exactly `saved_sp + 1`. When the callee
returns a closure (or hits the bytecode-exhausted fallback path), `vm.sp` can
end up inconsistent with the parent frame's expected layout, corrupting
intermediate values such as parser combinator state in `parse-bind`/`many`/
`seq`.
Fix: read the result at the expected slot, then explicitly reset
`vm.sp <- saved_sp` before returning so the parent frame sees a clean stack
regardless of what the callee left behind.
OCaml run_tests baseline: 4525/5864 unchanged. WASM kernel tests: 24/29
unchanged. No regressions.
2026-05-06 21:30:19 +00:00
3489c9f131
apl: each f¨ monadic + dyadic (+14 tests, 139/139)
Test, Build, and Deploy / test-build-deploy (push) Failing after 51s
2026-05-06 21:14:49 +00:00
d39ef786ba
GUEST-plan: claim step 0 — baseline snapshot
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-06 21:04:19 +00:00
a32561a07d
merge: architecture → loops/tcl — R7RS, JIT, env-as-value
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
Resolved conflicts in hosts/ocaml/lib/sx_primitives.ml:
- Took architecture's make-regexp/regexp-* primitives (Tcl runtime depends on them)
- Took architecture's Integer typing for clock-seconds/milliseconds/format
- Kept Phase 4 env-lookup/env-extend additions
Tcl: 342/342 tests passing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 21:00:51 +00:00
c56f400403
apl: scan f\ + f⍀ (+15 tests, 125/125)
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
2026-05-06 20:46:16 +00:00
c63c0d26e8
plans: tick reduce f/ f⌿, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:39:34 +00:00
c5ceb9c718
apl: reduce f/ and f⌿ (last+first axis); 110/110 tests
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:39:11 +00:00
e42aec8957
plans: Phase 3 complete — tick membership/without/40+tests boxes
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:25:07 +00:00
ce72070d2a
apl: membership ∊, dyadic ⍳, without ~ (dyadic); 94/94 tests
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:24:46 +00:00
32efdfe4aa
plans: tick Phase 3 enclose/disclose, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:17:56 +00:00
e06e3ad014
apl: enclose ⊂ / disclose ⊃; 82/82 tests
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:17:30 +00:00
40f0e73386
briefing: tick Phase 4, update progress log — env-as-value complete
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:13:45 +00:00
83dbb5958a
tcl: Phase 4 env-as-value — current-env/eval-in-env/env-lookup/env-extend (+5 tests, 342/342 total)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:13:28 +00:00
ad914b413c
plans: tick Phase 3 grade-up/down, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:03:05 +00:00
7dfa092ed2
apl: Phase 3 grade-up ⍋ / grade-down ⍒ — 74/74 tests green
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Add apl-grade (stable insertion sort helper), apl-grade-up, apl-grade-down.
Stability guaranteed via secondary sort key (original index). 8 new tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:02:49 +00:00
16cf4d9316
plans: sx-improvements roadmap + loop briefing (14 steps)
...
Phases: bug fixes (JIT combinator, letrec+resume), E38 source info
completion, native ADTs (define-type/match), plugin system, performance.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 19:01:23 +00:00
03e9df3ecf
plans: tick Phase 3 squad ⌷, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:57:24 +00:00
e11fbd6140
apl: Phase 3 squad ⌷ indexing — 66/66 tests green
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Add apl-squad: scalar index into vector, fully-specified multi-dim index,
partial index returning sub-array slice. 7 new tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:57:07 +00:00
eaab8db840
merge: architecture → hs-f (R7RS steps 4-6, IO suspension, JIT, language libs)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 56s
Brings in 306 commits from architecture:
- R7RS: call/cc, raise/guard, records, parameters, syntax-rules, define-library/import
- IO suspension: perform/resume, third CEK phase
- JIT expansion: component/island JIT, OP_SWAP, exception handler stack, scope forms
- OCaml: HTML renderer, Python bridge, epoch protocol, sx_scope.ml
- Language libs: common-lisp, erlang, forth, apl, prolog, tcl, smalltalk, ruby
Conflict resolution: hs-f version kept for all hyperscript .sx files (superseding
architecture's smaller additions). Architecture's platform.py kept with hs-f's
domListen _driveAsync fix applied.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:54:06 +00:00
248dca5b32
plans: tick Phase 3 catenate, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:51:58 +00:00
c5d9a8b789
HS: wip — parser every-fix, integration boot, test tooling expansion
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:51:32 +00:00
71ad7d2d24
apl: Phase 3 catenate , and first-axis — 59/59 tests green
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Add apl-catenate (dyadic ,, last-axis join, scalar promotion) and
apl-catenate-first (first-axis join, row-major append). 9 new tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:51:32 +00:00
c03ba9eccb
plans: tick Phase 3 step 2 take/drop/rotate, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 50s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:45:37 +00:00
3c83985841
apl: Phase 3 take ↑ / drop ↓ / rotate ⌽⊖ — 50/50 tests green
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Add apl-take (dyadic ↑, multi-axis, cycling pad), apl-drop (dyadic ↓),
apl-reverse (monadic ⌽), apl-rotate (dyadic ⌽, last axis),
apl-reverse-first (monadic ⊖), apl-rotate-first (dyadic ⊖, first axis),
apl-safe-mod helper for negative rotation arithmetic.
23 new tests in lib/apl/tests/structural.sx.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:45:12 +00:00
6a6a94e203
plans: tick Phase 3 step 1 reshape/transpose, progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:37:10 +00:00
be26f77410
apl: Phase 3 reshape ⍴ / transpose ⍉ — 27/27 structural tests green
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Add apl-reshape (dyadic ⍴, cycling), apl-transpose (monadic ⍉, reverse
axes), apl-transpose-dyadic (dyadic ⍉, permutation), plus helpers
apl-strides / apl-flat->multi / apl-multi->flat.
lib/apl/tests/structural.sx: 27 new tests covering ravel, reshape,
monadic/dyadic transpose across scalar/vector/matrix/3-D cases.
test.sh now runs structural.sx via its own inline framework (skips
stale tests/runtime.sx which targeted a pre-Phase-2 list-based API).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:36:43 +00:00
8a009df4a3
haskell: merge loops/haskell — Phases 1–6 complete (775 tests)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
Parser, layout, desugar, lazy eval, ADTs, HM inference, typeclasses
(Eq/Ord/Show/Num/Functor/Monad), real IO monad, full Prelude. 775/775
green across 13 program suites.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:28:12 +00:00
2249863d2d
tcl: Phase 3 OCaml primitives — file I/O + clock; refresh prolog scoreboard
...
file-read/write/append/exists?/glob + clock-seconds/milliseconds/format
registered in sx_primitives.ml; unix dep added to dune. Unlocks Tcl
open/read/puts-to-file, glob, clock seconds/format commands.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:27:48 +00:00
2314735431
apl: merge architecture — Tcl/Prolog/CL/Smalltalk + spec updates
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:21:03 +00:00
d21cde336a
tcl: Phase 3 OCaml primitives — file-read/write/append/exists?/glob + clock-seconds/milliseconds/format in sx_primitives.ml + unix dep; tcl-cmd-clock/file wired up; 337/337 green
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 50s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 18:10:22 +00:00
859361d86a
plans: haskell-completeness phases 7-16 + updated loop briefing
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
String=[Char] via pure-SX views, show, error, numeric tower,
Data.Map, Data.Set, records, IORef, exceptions. Briefing updated
to point at new plan; old phases 1-6 plan untouched.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 17:40:53 +00:00
f0f339709e
tcl: replace eager coroutine pre-execution with true suspension via fibers
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Rewrote the coroutine implementation to use lib/fiber.sx (make-fiber,
fiber-resume, fiber-done?) instead of eagerly running the proc body and
collecting all yields into a list. Each coroutine is now a live fiber —
calls to the coro command invoke fiber-resume, yield suspends via call/cc.
- make-tcl-interp: remove :coroutines/:in-coro/:coro-yields, add :coro-yield-fn nil
- tcl-cmd-yield: calls :coro-yield-fn (fiber's yield fn) to truly suspend
- tcl-cmd-yieldto: same pattern, yields "" to resumer
- make-coro-cmd: takes fiber (not coro-name), calls fiber-resume on each invoke
- tcl-cmd-coroutine: creates a fiber whose body runs the proc with :coro-yield-fn set
- tcl-call-proc result merge: drop :coro-yields/:coroutines propagation
- test.sh: load lib/fiber.sx before lib/tcl/runtime.sx in epoch 4
All 337/337 tests pass including all 20 coro tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 17:30:47 +00:00
09d65d2d7b
haskell: 13 new program suites + scoreboard 156/156 (775 tests)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
collatz, palindrome, maybe, fizzbuzz, anagram, roman, binary, either,
primes, zipwith, matrix, wordcount, powers — all 18/18 programs green.
conformance.sh PROGRAMS array updated; scoreboard.md regenerated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 17:02:02 +00:00
0596376199
tcl: Phase 2 fiber.sx — make-fiber/fiber-resume/fiber-done? via call/cc
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 16:58:18 +00:00
35511db15b
tcl: array get/set/names/size/exists/unset commands (+8 tests, 337 total)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 16:29:28 +00:00
f86d07401d
plans: tick Phase 6 prelude + progress log (635/635)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 15:51:36 +00:00
6bfb7b19f4
haskell: Phase 6 prelude extras (635/635)
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
- hk-list-append: string ++ string via str (fixes unwords/unlines/intercalate)
- --sx-to-hk-- in words/lines builtins: use ":"/"[]" not "Cons"/"Nil"
- lines builtin: empty-string case returns ("[]") not ("Nil")
- New test file prelude-extra.sx: 47 tests covering ord, isAlpha/isDigit/
isSpace/isUpper/isLower/isAlphaNum, digitToInt, words, lines, unwords,
unlines, sort, nub, splitAt, span, break, partition, intercalate,
intersperse, isPrefixOf, isSuffixOf, isInfixOf
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 15:51:12 +00:00
74e020359f
plans: tick Phase 1 apply in tcl-sx-completion
2026-05-06 15:37:40 +00:00
40ce4df6b1
tcl: apply command — anonymous proc call reusing tcl-call-proc frame machinery
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
2026-05-06 15:37:26 +00:00
db52a6d77c
plans: tick Phase 1 regexp/regsub in tcl-sx-completion
2026-05-06 15:31:55 +00:00
0cc36450c4
tcl: regexp + regsub commands wrapping SX regex primitives
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
regexp: -nocase/-all/-inline flags, optional matchVar + subgroup var args.
regsub: -all/-nocase flags, optional varName (stores result + returns count)
or inline use (returns result string). Both wrap make-regexp/regexp-match/
regexp-match-all/regexp-replace/regexp-replace-all. 329/329 tests green.
2026-05-06 15:31:36 +00:00
679b45e3fc
plans: tick Phase 1 float expr, add progress log to tcl-sx-completion
2026-05-06 15:20:17 +00:00
21e8e51174
tcl: float expr — tcl-parse-num + float-aware binop/unary/pow/funcs
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 16s
parse-int "2.0" returns nil in SX (strict integer parse); fixed by adding
tcl-num-float? (char scan for ./e/E) and tcl-parse-num (routes to
parse-float when float-shaped). Applied in tcl-apply-binop (all arith +
comparisons), tcl-apply-func (parse-float for all math args), unary minus,
and tcl-expr-parse-power (**). Real sqrt/floor/ceil/round/pow/sin/cos/tan/
exp/log now used instead of integer stubs. Integer division still truncates
when both operands are integer-shaped. 329/329 tests green.
2026-05-06 15:20:10 +00:00