|
|
c0665ba58e
|
Adopt Step 7 language features across SX codebase
112 conversions across 19 .sx files using match, let-match, and pipe operators:
match (17): type/value dispatch replacing cond/if chains
- lib/vm.sx: HO form dispatch (for-each/map/filter/reduce/some/every?)
- lib/tree-tools.sx: node-display, node-matches?, rename, count, replace, free-symbols
- lib/types.sx: narrow-type, substitute-in-type, infer-type, resolve-type
- web/engine.sx: default-trigger, resolve-target, classify-trigger
- web/deps.sx: scan-refs-walk, scan-io-refs-walk
let-match (89): dict destructuring replacing (get d "key") patterns
- shared/page-functions.sx (20), blog/admin.sx (17), pub-api.sx (13)
- events/ layouts/page/tickets/entries/forms (27 total)
- specs-explorer.sx (7), federation/social.sx (3), lib/ small files (3)
-> pipes (6): replacing triple-chained gets in lib/vm.sx
- frame-closure → closure-code → code-bytecode chains
Also: lib/vm.sx accessor upgrades (get vm "sp" → vm-sp vm throughout)
2650/2650 tests pass, zero regressions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-04 20:49:02 +00:00 |
|
|
|
2d7dd7d582
|
Step 5 piece 6: migrate 23 .sx files to define-library/import
Wraps all core .sx files in R7RS define-library with explicit export
lists, plus (import ...) at end for backward-compatible global re-export.
Libraries registered:
(sx bytecode) — 83 opcode constants
(sx render) — 15 tag registries + render helpers
(sx signals) — 23 reactive signal primitives
(sx r7rs) — 21 R7RS aliases
(sx compiler) — 42 compiler functions
(sx vm) — 32 VM functions
(sx freeze) — 9 freeze/thaw functions
(sx content) — 6 content store functions
(sx callcc) — 1 call/cc wrapper
(sx highlight) — 13 syntax highlighting functions
(sx stdlib) — 47 stdlib functions
(sx swap) — 13 swap algebra functions
(sx render-trace) — 8 render trace functions
(sx harness) — 21 test harness functions
(sx canonical) — 12 canonical serialization functions
(web adapter-html) — 13 HTML renderer functions
(web adapter-sx) — 13 SX wire format functions
(web engine) — 33 hypermedia engine functions
(web request-handler) — 4 request handling functions
(web page-helpers) — 12 page helper functions
(web router) — 36 routing functions
(web deps) — 19 dependency analysis functions
(web orchestration) — 59 page orchestration functions
Key changes:
- define-library now inherits parent env (env-extend env instead of
env-extend make-env) so library bodies can access platform primitives
- sx_server.ml: added resolve_library_path + load_library_file for
import resolution (maps library specs to file paths)
- cek_run_with_io: handles "import" locally instead of sending to
Python bridge
2608/2608 tests passing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-03 21:48:54 +00:00 |
|
|
|
aa508bad77
|
Implement sx-swap pure tree rewriting and fix handler test infrastructure
Write lib/sx-swap.sx — string-level SX scanner that finds elements by :id
and applies swap operations (innerHTML, outerHTML, beforeend, afterbegin,
beforebegin, afterend, delete, none). Includes OOB extraction via
find-oob-elements/strip-oob/apply-response for out-of-band targeted swaps.
Fix &rest varargs bug in test-handlers.sx helper mock — fn doesn't support
&rest, so change to positional (name a1 a2) with nil defaults. Fix into
branch, add run-handler sx-expr unwrapping.
Add missing primitives to run_tests.ml: scope-peek, callable?, make-sx-expr,
sx-expr-source, sx-expr?, spread?, call-lambda. These unblock aser-based
handler evaluation in tests.
Add algebraic integration tests (test-swap-integration.sx) demonstrating the
sx1 ⊕(mode,target) sx2 = sx3 pattern with real handler execution.
1219 → 1330 passing tests (+111).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-01 18:00:51 +00:00 |
|