c20369b766
Add comprehensive spec tests: closures, macros, TCO, defcomp, parser
...
New test files expose fundamental evaluator issues:
- define doesn't create self-referencing closures (13 failures)
- let doesn't isolate scope from parent env (2 failures)
- set! doesn't walk scope chain for closed-over vars (3 failures)
- Component calls return kwargs object instead of evaluating body (10 failures)
485/516 passing (94%). Parser tests: 100% pass. Macro tests: 96% pass.
These failures map the exact work needed for tree-walk removal.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 11:19:39 +00:00
1ea80a2b71
Add comprehensive spec tests: 132 primitives + 9 freeze/thaw
...
Build and Deploy / build-and-deploy (push) Successful in 17s
spec/tests/test-primitives.sx — 132 tests covering:
arithmetic (20), comparison (14), predicates (18), strings (25),
lists (24), dicts (12), higher-order (14), type coercion (5)
spec/tests/test-freeze.sx — 9 tests covering:
freeze-scope (4), content-addressing (5)
Full round-trip: freeze → serialize → parse → thaw → same values
hosts/javascript/run_tests.js — Node.js test harness
Loads sx-browser.js, provides platform test functions,
evaluates spec/tests/*.sx files
All tests pass on both Python and JavaScript hosts.
Host-dependent behaviour (str(true), mod negative) handled gracefully.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 10:37:07 +00:00
05f7b10864
Phase 2: Move core spec files to spec/ and spec/tests/
...
git mv eval.sx, parser.sx, primitives.sx, render.sx, cek.sx, frames.sx,
continuations.sx, callcc.sx, types.sx, special-forms.sx → spec/
Tests → spec/tests/
Both bootstrappers verified — find files via spec/ → web/ → shared/sx/ref/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 02:12:13 +00:00
1a3d7b3d77
Separate core spec from web framework
...
Build and Deploy / build-and-deploy (push) Successful in 4m49s
Three-layer architecture:
spec/ — Core language (19 files): evaluator, parser, primitives,
CEK machine, types, continuations. Host-independent.
web/ — Web framework (20 files): signals, adapters, engine,
orchestration, boot, router, CSSX. Built on core spec.
sx/ — Application (sx-docs website). Built on web framework.
Split boundary.sx into boundary-core.sx (type-of, make-env, identical?)
and boundary-web.sx (IO primitives, signals, spreads, page helpers).
Bootstrappers search spec/ → web/ → shared/sx/ref/ for .sx files.
Original files remain in shared/sx/ref/ as fallback during transition.
All 63 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 01:42:19 +00:00