c93fe4453a
HS: scoreboard — E36 commit hash
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 11:44:31 +00:00
623529d3be
HS: socket feature (E36) — WebSocket wrapper + RPC proxy (+16 tests)
...
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Parser: socket feature (name, url, with timeout, on message, json/raw).
Runtime: hs-socket-register!, hs-socket-normalise-url, hs-socket-bind-name!,
hs-socket-reconnect!, hs-socket-rpc!, hs-socket-resolve-rpc! — full
WebSocket lifecycle with reconnect, pending-map RPC, and timeout.
Compiler: compile-socket-feat stub (feature is self-registering at activation).
Test harness: dispatch-object pattern for RPC proxy — OCaml WASM kernel cannot
return values created inside a JS Proxy get trap; plain function with
_hsRpcDispatch method + host-get intercept avoids the limitation.
Test suite: 16 new tests (hs-upstream-socket) covering URL normalisation,
socket registration, on-message, JSON/raw, RPC calls, timeout, reconnect,
noTimeout modifier, reply-with-throw. 16/16 pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 11:44:13 +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
6c1a953c80
plans: tick standard classes + progress log
Test, Build, and Deploy / test-build-deploy (push) Failing after 42s
2026-05-06 10:57:41 +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
fb51620a4c
plans: tick dict-passing elaborator + progress log
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
2026-05-06 08:57:23 +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
d8cf74fd28
briefing: push to origin/loops/apl after each commit
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
2026-05-06 06:47:10 +00:00
41a69ecca7
haskell: class/instance declarations — parse + instance dict eval (+11 tests, 503/503)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 00:22:44 +00:00
5c00b5c58b
haskell: inference unit tests — 55+ expressions, Phase 4 complete (+16 tests, 492/492)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 23:47:57 +00:00
622c0851ce
haskell: let-polymorphism tests — id/const/nested/twice at multiple types (+6 tests, 476/476)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 23:26:01 +00:00
d8f3f8c3b2
haskell: type-sig checking — hk-ast-type + hk-check-sig + sig-aware infer-prog (+6 tests, 470/470)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 39s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 23:02:34 +00:00
2606b83920
haskell: reject untypeable programs — hk-typecheck + hk-run-typed (+9 tests, 464/464)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 46s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 22:32:18 +00:00
68124adc3b
haskell: type error reporting — hk-expr->brief + hk-infer-decl/prog (+21 tests, 455/455)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 48s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 21:40:16 +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
8f3b0d9301
haskell: Algorithm W type inference + 32 tests (434/434)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 43s
Full HM inference in lib/haskell/infer.sx: unification, substitution,
occurs check, instantiation, generalisation, let-polymorphism.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 20:26:44 +00:00
5a402a02be
briefing: push to origin/loops/haskell after each commit
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
2026-05-05 20:15:35 +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
f547ebf43e
HS: of-expression chain rebase + null-safe/queryRef test fixes
...
- parser.sx: rebase-of-chain handles property chains like bar.doh of foo → (. (. foo bar) doh)
- generator: MANUAL_TEST_BODIES for null-safe access (host-call-fn wrapper), queryRef no-match, classRef no-match, JS this-binding SKIP
- propertyAccess: 12/12, possessiveExpression: 23/23, queryRef: 13/13
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 05:31:03 +00:00
abbb1fe5c6
HS: asyncError — rejected promise triggers catch block (+1 test)
...
Test, Build, and Deploy / test-build-deploy (push) Failing after 48s
Three-part fix for hs-upstream-core/asyncError test 2/2:
1. runtime.sx hs-win-call: when an async call returns a rejected promise,
store the error value in window.__hs_async_error (side-channel) and
raise the sentinel "__hs_async_error__" so the value survives the
raise boundary intact.
2. compiler.sx catch clause: inject `(let ((var (host-hs-normalize-exc var))) ...)`
around the catch body so the sentinel gets swapped for the real error
object before user code runs. Uses let (not set!) so shadowing works
correctly for guard catch variables.
3. tests/hs-run-filtered.js:
- host-promise-state wraps JS Error objects as plain {message:...} dicts
before they cross the WASM boundary (Error.toString() was producing
"Error: boom" strings instead of accessible objects)
- host-hs-normalize-exc native retrieves the side-channel value when
the sentinel arrives in a catch variable
- host-get coercion restricted to El instances — plain JS objects with
a "value" key were being stringified to "[object Object]"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 02:07:52 +00:00