096faf2c40
plans: tcl-sx-completion — phased plan for remaining Tcl limitations
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 17s
Phase 1: zero-cost wins (float/regex/apply/arrays, no SX changes)
Phase 2: lib/fiber.sx (pure SX fibers via call/cc + set!)
Phase 3: small OCaml additions (file-read, clock-seconds, etc.)
Phase 4: env-as-value (optional architectural cleanup)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 13:21:59 +00:00
bf190b8fc4
tcl: merge loops/tcl — complete Tcl 8.6 subset (329 tests)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
Phases 1-6: Dodekalogue tokenizer/parser, eval engine, expr mini-language,
string/list/dict commands, proc + uplevel/upvar (the headline showcase),
catch/try/throw, namespaces + ensembles, generator coroutines, idiom corpus.
Resolved add/add conflicts by taking loops/tcl (the complete tested impl)
over the architecture branch's earlier prototype.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 11:36:59 +00:00
74ce9e7c75
merge loops/prolog: complete Prolog-on-SX implementation
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
590 tests passing across 29 suites. Brings in: parser, runtime,
query API, compiler, conformance harness, integration suite, and
hs-bridge (combined hook + factory styles).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 11:20:44 +00:00
bc45b7abf5
tcl: tick Phase 6 checkboxes, update progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 33s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 11:06:05 +00:00
ea064346e1
tcl: tick Phase 5 checkboxes, update 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 10:21:47 +00:00
5e0fcb9316
tcl: tick Phase 4 checkboxes, update 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 09:59:09 +00:00
afddc92c70
tcl: update progress log with conformance/classic programs entry
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 38s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 09:45:07 +00:00
95f96efb78
tcl: conformance.sh + scoreboard, annotate classic programs
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Adds lib/tcl/conformance.sh: runs .tcl programs through the epoch
protocol, compares against # expected: annotations, writes
scoreboard.json and scoreboard.md. All 3 classic programs pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 09:44:44 +00:00
cffd3bec83
tcl: tick Phase 3 core checkboxes, update 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 09:31:17 +00:00
985671cd76
hs: query targets, prolog hook, loop scripts, new plans, WASM regen
...
Hyperscript compiler/runtime:
- query target support in set/fire/put commands
- hs-set-prolog-hook! / hs-prolog-hook / hs-prolog in runtime
- runtime log-capture cleanup
Scripts: sx-loops-up/down, sx-hs-e-up/down, sx-primitives-down
Plans: datalog, elixir, elm, go, koka, minikanren, ocaml, hs-bucket-f,
designs (breakpoint, null-safety, step-limit, tell, cookies, eval,
plugin-system)
lib/prolog/hs-bridge.sx: initial hook-based bridge draft
lib/common-lisp/tests/runtime.sx: CL runtime tests
WASM: regenerate sx_browser.bc.js from updated hs sources
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 09:19:56 +00:00
a49b1a9f79
tcl: tick dict/60+ tests checkboxes, update progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 38s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 09:00:39 +00:00
0dbf9b9f73
tcl: tick list commands checkbox, update progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 08:54:47 +00:00
a26be0bfd0
tcl: tick string commands checkbox, update progress log
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 08:49:17 +00:00
ac013c9381
tcl: expr mini-language — recursive descent parser (+20 tests, 127 total)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
Replaces 3-token flat evaluator with full recursive descent parser:
operator precedence, parentheses, unary ops, ** power, function calls
(abs/sqrt/pow/max/min/int/double), expression tokenizer for dense syntax.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 08:43:02 +00:00
f07b6e497e
prolog: Hyperscript bridge (+19)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 51s
pl-hs-query, pl-hs-predicate/1,2,3, pl-hs-install in hs-bridge.sx.
No parser/compiler changes: Hyperscript already compiles
`when allowed(user, action)` to (allowed user action).
Total 590/590.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 08:30:46 +00:00
72ccaf4565
briefing: push to origin/loops/tcl after each commit
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
2026-05-06 06:47:36 +00:00
ef736112ef
prolog: integration test suite (+20)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
20 end-to-end tests via pl-query-* API: permission system, graph
reachability, quicksort, dynamic KB, fibonacci. Total 571/571.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 20:41:45 +00:00
e4eab6a309
briefing: push after each commit, unblock hyperscript bridge
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
2026-05-05 20:15:33 +00:00
c311d4ebc4
cl: Phase 5 set-macro-character + Phase 6 corpus 200+ — 518/518 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
set-macro-character/set-dispatch-macro-character/get-macro-character
stubs: cl-reader-macros + cl-dispatch-macros dicts, full dispatch in
eval.sx. All Phase 5+6 roadmap items ticked. 518 total tests, 0 failed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 12:35:26 +00:00
99f8ccb30e
cl: Phase 6 packages — defpackage/in-package + pkg:sym — 518/518 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
cl-packages dict, cl-current-package, cl-package-sep? strips pkg:
prefix from symbol/function lookups. defpackage/in-package/export/
use-package/import/find-package/package-name dispatch. Package-
qualified calls like (cl:car ...) and (cl:mapcar ...) work.
4 package tests added to stdlib.sx.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 12:33:36 +00:00
4f9da65b3d
cl: Phase 6 FORMAT + substr fixes — 514/514 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
FORMAT with ~A/~S/~D/~F/~%/~&/~T/~P/~{...~}/~^; cl-fmt-loop,
cl-fmt-find-close, cl-fmt-iterate, cl-fmt-a/cl-fmt-s helpers.
Fix substr(start,length) semantics throughout: SUBSEQ end formula
corrected to (- end start), cl-fmt-loop char extraction fixed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 12:23:54 +00:00
025ddbebdd
cl: Phase 6 stdlib — sequence/list/string functions, 508/508 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
mapc/mapcan/reduce/find/find-if/position/count/every/some/notany/
notevery/remove/remove-if/subst/member; assoc/rassoc/getf/last/
butlast/nthcdr/list*/cadr/caddr/cadddr; subseq/coerce/make-list.
44 new tests in tests/stdlib.sx. Helpers: cl-member-helper,
cl-subst-helper, cl-position-helper.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 12:17:13 +00:00
f449f82fdd
cl: Phase 5 macros+LOOP + Phase 2 dynamic vars — 464/464 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
defmacro/macrolet/symbol-macrolet/macroexpand, gensym/gentemp, full
LOOP macro (loop.sx) with all clause types. Phase 2 dynamic variables:
cl-apply-dyn, cl-letstar-bind, cl-mark-special!/cl-special? for
defvar/defparameter specials with let-based dynamic rebinding.
27 macro+LOOP tests; 182 eval tests (8 new dynamic var tests).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 12:04:37 +00:00
0e426cfea8
cl: Phase 4 CLOS complete — generic functions, multi-dispatch, method qualifiers, 437/437 tests
...
- lib/common-lisp/clos.sx (27 forms): class registry (8 built-in classes),
defclass/make-instance/slot-value/slot-boundp/change-class, defgeneric/defmethod
with :before/:after/:around, clos-call-generic (standard combination: sort by
specificity, fire befores, call primary chain, fire afters reversed),
call-next-method/next-method-p, with-slots, deferred accessor installation
- lib/common-lisp/tests/clos.sx: 41 tests (class-of, subclass-of?, defclass,
make-instance, slot ops, inheritance, method specificity, qualifiers, accessors,
with-slots, change-class)
- lib/common-lisp/tests/programs/geometry.sx: 12 tests — intersect generic
dispatching on geo-point×geo-point, geo-point×geo-line, geo-line×geo-line,
geo-line×geo-plane (multi-dispatch by class precedence)
- lib/common-lisp/tests/programs/mop-trace.sx: 13 tests — :before/:after
tracing on area and describe-shape generics, call-next-method in circle/rect
- eval.sx: dynamic variables — cl-apply-dyn saves/restores global slot for
specials; cl-mark-special!/cl-special?/cl-dyn-unbound; defvar now marks
specials; let/let* rebind via cl-apply-dyn; 8 new tests (182 eval total)
- conformance.sh + test.sh: Phase 4 suites wired in
- plans/common-lisp-on-sx.md: Phase 4 + dynamic variable boxes ticked
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:38:37 +00:00
71c4b5e33f
cl: Phase 3 all complete — conformance.sh runner, 363/363 tests green
...
conformance.sh runs all 7 test suites (reader/parser/eval/conditions/
restart-demo/parse-recover/interactive-debugger), writes scoreboard.json
and scoreboard.md. 363 total tests: 79 tokenizer, 31 parser/lambda-lists,
174 evaluator (including unwind-protect), 59 conditions, 20 classic programs.
Phase 3 fully complete — all roadmap boxes ticked.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:24:50 +00:00
4cd8773766
cl: multiple values — 15 new tests (174 eval, 346 total green)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 46s
VALUES wraps 2+ values in {:cl-type "mv"}; cl-mv-primary strips to
primary in IF/AND/OR/COND/cl-call-fn single-value contexts; cl-mv-vals
expands for MULTIPLE-VALUE-BIND, MULTIPLE-VALUE-CALL, NTH-VALUE.
2026-05-05 11:23:12 +00:00
733b1ebefa
cl: Phase 3 complete — *debugger-hook*, *break-on-signals*, invoke-restart-interactively (147 tests)
...
cl-debugger-hook: mutable global (fn (c hook) result); cl-invoke-debugger
calls it with infinite-recursion guard (sets hook nil during call).
cl-error now routes unhandled errors through cl-invoke-debugger instead of
bare host error — allows the hook to invoke a restart and resume.
cl-break-on-signals: when set to a type name, cl-signal fires the debugger
hook before walking handlers if the condition matches.
cl-invoke-restart-interactively: calls the restart fn with no args (no
terminal protocol — equivalent to (invoke-restart name)).
4 new tests in conditions.sx covering all three; Phase 3 fully complete.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:21:52 +00:00
85911d7b84
cl: Phase 3 interactive-debugger — *debugger-hook* pattern, 7 tests (143 total)
...
cl-debugger-hook global (nil = default), cl-invoke-debugger walks the hook,
cl-error-with-debugger routes unhandled errors through the hook, and
make-policy-debugger builds a hook from a (fn (condition restarts) name)
policy function. Tests: hook receives condition, policy selects use-zero/abort
restarts, compute-restarts visible inside hook, handler wins before hook fires,
infinite-recursion guard. Wired into test.sh program suite runner.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:17:57 +00:00
ab66b29a74
cl: Phase 3 classic programs — restart-demo (7 tests) + parse-recover (6 tests)
...
restart-demo.sx: safe-divide with division-by-zero condition, use-zero
and retry restarts. Demonstrates handler-bind invoking a restart to
resume computation with a corrected value.
parse-recover.sx: token parser signalling parse-error on non-integer
tokens, skip-token and use-zero restarts. Demonstrates recovery-via-
restart and handler-case abort patterns.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:16:35 +00:00
32a82a2e12
cl: unwind-protect — 8 new tests (159 eval, 331 total green)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 44s
cl-eval-unwind-protect evaluates protected form, runs cleanup via
for-each (results discarded, sentinels preserved), returns original
result — correctly propagates block-return/go-tag through cleanup.
2026-05-05 11:14:39 +00:00
7d6df6fd5f
cl: Phase 3 conditions + restarts — handler-bind, handler-case, restart-case, 55 tests (123 total runtime)
...
define-condition with 15-type ANSI hierarchy (condition/error/warning/
simple-error/simple-warning/type-error/arithmetic-error/division-by-zero/
cell-error/unbound-variable/undefined-function/program-error/storage-condition).
cl-condition-of-type? walks the hierarchy; cl-make-condition builds tagged
dicts {:cl-type "cl-condition" :class name :slots {...}}. cl-signal-obj
walks cl-handler-stack for non-unwinding dispatch. cl-handler-case and
cl-restart-case use call/cc escape continuations for unwinding. All stacks
are mutable SX globals (the built-in handler-bind/restart-case only accept
literal AST specs — not computed lists). Key fix: cl-condition-of-type?
captures cl-condition-classes at define-time via let-closure to avoid
free-variable failure through env_merge parent chain.
55 tests in lib/common-lisp/tests/conditions.sx, wired into test.sh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:14:04 +00:00
a12a6a11cb
cl: tagbody + go — 11 new tests (151 eval, 323 total green)
...
Sentinel-based tagbody: cl-build-tag-map indexes tags by str-normalised key
(handles integer tags); cl-eval-tagbody loops with go-jump restart;
go-tag propagates through cl-eval-body alongside block-return.
2026-05-05 11:07:43 +00:00
ce7243a1fb
cl: block + return-from — 13 new tests (140 eval, 312 total green)
...
Sentinel propagation in cl-eval-body; cl-eval-block catches matching
sentinels; BLOCK/RETURN-FROM/RETURN dispatch added to cl-eval-list.
Parser: CL strings now {:cl-type "string"} dicts for proper CL semantics.
2026-05-05 10:57:33 +00:00
3f8fe41d4d
Merge architecture into loops/common-lisp
2026-05-05 10:47:02 +00:00
086ad028ce
Merge loops/erlang into architecture — 530/530 tests, all phases complete
2026-05-05 10:42:07 +00:00
97ccd61f74
Merge loops/smalltalk into architecture — 847/847 tests, all phases complete
2026-05-05 10:41:58 +00:00
90bc1208d9
plan: tick Phase 22 Forth — all Phase 22 items complete
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
2026-05-01 23:31:08 +00:00
2edd426748
plan: tick Phase 22 Tcl — complete, Forth next
Test, Build, and Deploy / test-build-deploy (push) Failing after 21s
2026-05-01 23:25:14 +00:00
bcde5e126a
plan: tick Phase 22 Ruby — complete, Tcl next
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
2026-05-01 23:18:28 +00:00
912de5a274
phase-22 APL: runtime.sx vectors/bitwise/sets/reduce/format
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
lib/apl/runtime.sx (60 forms):
- Core: apl-iota (1..N), apl-rho (shape), apl-at (1-indexed access).
- Rank-polymorphic apl-dyadic/apl-monadic helpers: scalar×scalar,
scalar×vector, vector×vector all supported uniformly.
- Arithmetic: add/sub/mul/div/mod/pow/max/min, neg/abs/floor/ceil/sqrt.
- Comparison: eq/neq/lt/le/gt/ge → 0/1 result vectors.
- Boolean: and/or/not on 0/1 values, element-wise.
- Bitwise: bitand/bitor/bitxor/bitnot/lshift/rshift — element-wise.
- Reduction: reduce-add/mul/max/min/and/or; scan-add/mul.
- Vector ops: reverse, cat (scalar/vector catenate), take (±N), drop (±N),
rotate, compress (boolean mask), index (multi-index).
- Set ops: member (∊, → 0/1), nub (∪, unique preserve-order),
union, intersect (∩), without (~). All use SX make-set internally.
- Format (⍕): vector → space-separated string, scalar → str.
lib/apl/tests/runtime.sx + lib/apl/test.sh: 73/73 pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 22:49:38 +00:00
077f4a5d38
phase-22 Smalltalk: runtime.sx numeric/char/Array/Dict/Set/Stream
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
lib/smalltalk/runtime.sx (72 forms):
- Numeric helpers: abs/max/min/gcd/lcm/quo/rem/mod/even?/odd?/floor/ceil/truncate/round.
- Character: st-char-value/from-int/is-letter?/is-digit?/uppercase?/lowercase?/
separator?/as-uppercase/as-lowercase/digit-value. SX chars via char->integer.
- Array: 1-indexed mutable arrays backed by dict {__st_array__ size "1" v1 ...};
at/at-put!/do/->list/list->array/copy-from-to.
- Dictionary: any-key hash map via list-of-pairs + linear scan;
at/at-put!/includes-key?/at-default/remove-key!/keys/values/do/do-associations.
- Set: backed by SX make-set; set-member?/add!/includes?/remove! take (set item) order.
- WriteStream/ReadStream: dict-backed buffers; printString for nil/bool/number/
string/symbol/char/list/array.
lib/smalltalk/tests/runtime.sx + lib/smalltalk/test.sh: 86/86 pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 22:43:04 +00:00
36e6762539
phase-22 JS: stdlib.sx bitwise/Map/Set/RegExp + 25 tests
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 38s
lib/js/stdlib.sx (36 forms):
- Bitwise ops (js-bitand/bitor/bitxor/lshift/rshift/urshift/bitnot) use
truncate instead of js-num-to-int (which calls integer /0 and crashes).
- Map class: dict-backed list-of-pairs with linear-scan find, mutable via
dict-set!; js-map-new/get/set!/has/delete!/clear/keys/vals/entries/for-each.
- Set class: backed by SX make-set primitive; set-member?/set-add!/set-remove!
all take (set item) argument order — fixed from (item set) which threw.
- RegExp: callable lambda wrapping js-regex-new (not a dict, so directly callable).
- Wires Map/Set/RegExp into js-global.
lib/js/test.sh: epochs 6000-6032 (25 tests) — all pass.
Result: 492/585 tests pass (was 466/560 before this phase).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 22:33:27 +00:00
4022b60901
plan: tick Phase 22 Haskell — runtime.sx done, 148/148 tests
Test, Build, and Deploy / test-build-deploy (push) Failing after 32s
2026-05-01 21:41:38 +00:00
a7790418f8
plan: tick Phase 22 Erlang — runtime.sx complete, 55/55 pass
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 21:21:57 +00:00
a8613656e9
plan: tick Phase 22 Lua — stdlib complete, 185/185 pass
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 21:14:47 +00:00
10c278d073
plan: tick Phase 22 CL — runtime.sx complete, 68/68 pass
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 21:00:42 +00:00
f4193a2e8e
plan: tick Phase 22 step 1 — baseline sections added
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
2026-05-01 20:21:07 +00:00
f43659ce51
plan: add SX primitive baseline section to CL/APL/Ruby/Tcl plans
2026-05-01 20:20:56 +00:00
d4964c166c
plan: tick Phase 21 format — complete, Phase 22 next
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
2026-05-01 19:59:23 +00:00
6a34ae3ae1
plan: tick Phase 20 bytevectors — complete, Phase 21 next
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 37s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 19:16:28 +00:00