Files
rose-ash/shared/static/wasm/sx/compiler.sxbc.json
giles b274e428eb WASM kernel fixes: parse, env sync, iterative CEK, click delegation
Browser kernel:
- Add `parse` native fn (matches server: unwrap single, list for multiple)
- Restore env==global_env guard on _env_bind_hook (let bindings must not
  leak to _vm_globals — caused JIT CSSX "Not callable: nil" errors)
- Add _env_bind_hook call in env_set_id so set! mutations sync to VM globals
- Fire _vm_global_set_hook from OP_DEFINE so VM defines sync back to CEK env

CEK evaluator:
- Replace recursive cek_run with iterative while loop using sx_truthy
  (previous attempt used strict Bool true matching, broke in wasm_of_ocaml)
- Remove dead cek_run_iterative function

Web modules:
- Remove find-matching-route and parse-route-pattern stubs from
  boot-helpers.sx that shadowed real implementations from router.sx
- Sync boot-helpers.sx to dist/static dirs for bytecode compilation

Platform (sx-platform.js):
- Set data-sx-ready attribute after boot completes (was only in boot-init
  which sx-platform.js doesn't call — it steps through boot manually)
- Add document-level click delegation for a[sx-get] links as workaround
  for bytecoded bind-event not attaching per-element listeners (VM closure
  issue under investigation — bind-event runs but dom-add-listener calls
  don't result in addEventListener)

Tests:
- New test_kernel.js: 24 tests covering env sync, parse, route matching,
  host FFI/preventDefault, deep recursion
- New navigation test: "sx-get link fetches SX not HTML and preserves layout"
  (currently catches layout breakage after SPA swap — known issue)

Known remaining issues:
- JIT CSSX failures: closure-captured variables resolve to nil in VM bytecode
- SPA content swap via execute-request breaks page layout
- Bytecoded bind-event doesn't attach per-element addEventListener (root
  cause unknown — when listen-target guard appears to block despite element
  being valid)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:33:13 +00:00

1 line
40 KiB
JSON

{"magic":"SXBC","version":1,"hash":"9f12bfb447e36aeb","module":{"bytecode":[51,1,0,128,0,0,5,51,3,0,128,2,0,5,51,5,0,128,4,0,5,51,7,0,128,6,0,5,51,9,0,128,8,0,5,51,11,0,128,10,0,5,51,13,0,128,12,0,5,51,15,0,128,14,0,5,51,17,0,128,16,0,5,51,19,0,128,18,0,5,51,21,0,128,20,0,5,51,23,0,128,22,0,5,51,25,0,128,24,0,5,51,27,0,128,26,0,5,51,29,0,128,28,0,5,51,31,0,128,30,0,5,51,33,0,128,32,0,5,51,35,0,128,34,0,5,51,37,0,128,36,0,5,51,39,0,128,38,0,5,51,41,0,128,40,0,5,51,43,0,128,42,0,5,51,45,0,128,44,0,5,51,47,0,128,46,0,5,51,49,0,128,48,0,5,51,51,0,128,50,0,5,51,53,0,128,52,0,5,51,55,0,128,54,0,5,51,57,0,128,56,0,5,51,59,0,128,58,0,5,51,61,0,128,60,0,5,51,63,0,128,62,0,5,51,65,0,128,64,0,5,51,67,0,128,66,0,5,51,69,0,128,68,0,5,51,71,0,128,70,0,5,51,73,0,128,72,0,5,51,75,0,128,74,0,5,51,77,0,128,76,0,5,51,79,0,128,78,0,5,51,81,0,128,80,0,50],"constants":[{"t":"s","v":"make-pool"},{"t":"code","v":{"bytecode":[1,0,0,1,2,0,52,1,0,1,33,7,0,52,2,0,0,32,4,0,52,3,0,0,1,4,0,1,5,0,1,6,0,65,1,0,65,2,0,50],"constants":[{"t":"s","v":"entries"},{"t":"s","v":"primitive?"},{"t":"s","v":"mutable-list"},{"t":"s","v":"list"},{"t":"s","v":"index"},{"t":"s","v":"_count"},{"t":"n","v":0}]}},{"t":"s","v":"pool-add"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,1,0,1,17,2,16,0,1,3,0,52,2,0,2,17,3,16,3,16,2,52,4,0,2,33,11,0,16,3,16,2,52,2,0,2,32,60,0,16,3,1,5,0,52,2,0,2,17,4,16,3,16,2,16,4,52,6,0,3,5,16,3,1,5,0,16,4,1,8,0,52,7,0,2,52,6,0,3,5,20,9,0,16,0,1,10,0,52,2,0,2,16,1,48,2,5,16,4,50],"constants":[{"t":"s","v":"Add a value to the constant pool, return its index. Deduplicates."},{"t":"s","v":"serialize"},{"t":"s","v":"get"},{"t":"s","v":"index"},{"t":"s","v":"has-key?"},{"t":"s","v":"_count"},{"t":"s","v":"dict-set!"},{"t":"s","v":"+"},{"t":"n","v":1},{"t":"s","v":"append!"},{"t":"s","v":"entries"}],"arity":2}},{"t":"s","v":"make-scope"},{"t":"code","v":{"bytecode":[1,0,0,1,1,0,1,2,0,52,3,0,0,1,4,0,52,3,0,0,1,5,0,16,0,1,6,0,4,65,5,0,50],"constants":[{"t":"s","v":"next-slot"},{"t":"n","v":0},{"t":"s","v":"upvalues"},{"t":"s","v":"list"},{"t":"s","v":"locals"},{"t":"s","v":"parent"},{"t":"s","v":"is-function"}],"arity":1}},{"t":"s","v":"scope-define-local"},{"t":"code","v":{"bytecode":[1,0,0,5,51,3,0,1,1,16,0,1,5,0,52,4,0,2,52,2,0,2,52,1,0,1,17,2,16,2,33,12,0,16,2,1,6,0,52,4,0,2,32,64,0,16,0,1,7,0,52,4,0,2,17,3,20,8,0,16,0,1,5,0,52,4,0,2,1,9,0,4,1,6,0,16,3,1,10,0,16,1,65,3,0,48,2,5,16,0,1,7,0,16,3,1,13,0,52,12,0,2,52,11,0,3,5,16,3,50],"constants":[{"t":"s","v":"Add a local variable, return its slot index.\n Idempotent: if name already has a slot, return it."},{"t":"s","v":"first"},{"t":"s","v":"filter"},{"t":"code","v":{"bytecode":[16,0,1,2,0,52,1,0,2,18,0,52,0,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"get"},{"t":"s","v":"name"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"get"},{"t":"s","v":"locals"},{"t":"s","v":"slot"},{"t":"s","v":"next-slot"},{"t":"s","v":"append!"},{"t":"s","v":"mutable"},{"t":"s","v":"name"},{"t":"s","v":"dict-set!"},{"t":"s","v":"+"},{"t":"n","v":1}],"arity":2}},{"t":"s","v":"scope-resolve"},{"t":"code","v":{"bytecode":[1,0,0,5,16,0,52,1,0,1,33,17,0,1,2,0,16,1,1,3,0,1,4,0,65,2,0,32,61,1,16,0,1,6,0,52,5,0,2,17,2,51,8,0,1,1,16,2,52,7,0,2,17,3,16,3,33,41,0,51,8,0,1,1,16,2,52,10,0,2,52,9,0,1,17,4,1,2,0,16,4,1,11,0,52,5,0,2,1,3,0,1,12,0,65,2,0,32,247,0,16,0,1,13,0,52,5,0,2,17,4,51,8,0,1,1,16,4,52,7,0,2,17,5,16,5,33,41,0,51,8,0,1,1,16,4,52,10,0,2,52,9,0,1,17,6,1,2,0,16,6,1,14,0,52,5,0,2,1,3,0,1,15,0,65,2,0,32,177,0,16,0,1,16,0,52,5,0,2,17,6,16,6,52,1,0,1,33,17,0,1,2,0,16,1,1,3,0,1,4,0,65,2,0,32,140,0,20,17,0,16,6,16,1,48,2,17,7,16,7,1,3,0,52,5,0,2,1,4,0,52,18,0,2,33,5,0,16,7,32,105,0,16,0,1,19,0,52,5,0,2,33,91,0,16,0,1,13,0,52,5,0,2,52,20,0,1,17,8,20,21,0,16,0,1,13,0,52,5,0,2,1,2,0,16,7,1,2,0,52,5,0,2,1,22,0,16,7,1,3,0,52,5,0,2,1,12,0,52,18,0,2,1,14,0,16,8,1,23,0,16,1,65,4,0,48,2,5,1,2,0,16,8,1,3,0,1,15,0,65,2,0,32,2,0,16,7,50],"constants":[{"t":"s","v":"Resolve a variable name. Returns {:type \"local\"|\"upvalue\"|\"global\", :index N}.\n Upvalue captures only happen at function boundaries (is-function=true).\n Let scopes share the enclosing function's frame — their locals are\n accessed directly without upvalue indirection."},{"t":"s","v":"nil?"},{"t":"s","v":"index"},{"t":"s","v":"type"},{"t":"s","v":"global"},{"t":"s","v":"get"},{"t":"s","v":"locals"},{"t":"s","v":"some"},{"t":"code","v":{"bytecode":[16,0,1,2,0,52,1,0,2,18,0,52,0,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"get"},{"t":"s","v":"name"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"first"},{"t":"s","v":"filter"},{"t":"s","v":"slot"},{"t":"s","v":"local"},{"t":"s","v":"upvalues"},{"t":"s","v":"uv-index"},{"t":"s","v":"upvalue"},{"t":"s","v":"parent"},{"t":"s","v":"scope-resolve"},{"t":"s","v":"="},{"t":"s","v":"is-function"},{"t":"s","v":"len"},{"t":"s","v":"append!"},{"t":"s","v":"is-local"},{"t":"s","v":"name"}],"arity":2}},{"t":"s","v":"make-emitter"},{"t":"code","v":{"bytecode":[1,0,0,20,1,0,48,0,1,2,0,1,4,0,52,3,0,1,33,7,0,52,4,0,0,32,4,0,52,5,0,0,65,2,0,50],"constants":[{"t":"s","v":"pool"},{"t":"s","v":"make-pool"},{"t":"s","v":"bytecode"},{"t":"s","v":"primitive?"},{"t":"s","v":"mutable-list"},{"t":"s","v":"list"}]}},{"t":"s","v":"emit-byte"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,2,0,52,1,0,2,16,1,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"get"},{"t":"s","v":"bytecode"}],"arity":2}},{"t":"s","v":"emit-u16"},{"t":"code","v":{"bytecode":[20,0,0,16,0,16,1,1,2,0,52,1,0,2,48,2,5,20,0,0,16,0,16,1,1,2,0,52,4,0,2,52,3,0,1,1,2,0,52,1,0,2,49,2,50],"constants":[{"t":"s","v":"emit-byte"},{"t":"s","v":"mod"},{"t":"n","v":256},{"t":"s","v":"floor"},{"t":"s","v":"/"}],"arity":2}},{"t":"s","v":"emit-i16"},{"t":"code","v":{"bytecode":[16,1,1,1,0,52,0,0,2,33,12,0,16,1,1,3,0,52,2,0,2,32,2,0,16,1,17,2,20,4,0,16,0,16,2,49,2,50],"constants":[{"t":"s","v":"<"},{"t":"n","v":0},{"t":"s","v":"+"},{"t":"n","v":65536},{"t":"s","v":"emit-u16"}],"arity":2}},{"t":"s","v":"emit-op"},{"t":"code","v":{"bytecode":[20,0,0,16,0,16,1,49,2,50],"constants":[{"t":"s","v":"emit-byte"}],"arity":2}},{"t":"s","v":"emit-const"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,2,0,52,1,0,2,16,1,48,2,17,2,20,3,0,16,0,1,4,0,48,2,5,20,5,0,16,0,16,2,49,2,50],"constants":[{"t":"s","v":"pool-add"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"emit-op"},{"t":"n","v":1},{"t":"s","v":"emit-u16"}],"arity":2}},{"t":"s","v":"current-offset"},{"t":"code","v":{"bytecode":[16,0,1,2,0,52,1,0,2,52,0,0,1,50],"constants":[{"t":"s","v":"len"},{"t":"s","v":"get"},{"t":"s","v":"bytecode"}],"arity":1}},{"t":"s","v":"patch-i16"},{"t":"code","v":{"bytecode":[1,0,0,5,16,2,1,2,0,52,1,0,2,33,12,0,16,2,1,4,0,52,3,0,2,32,2,0,16,2,17,3,16,0,1,6,0,52,5,0,2,17,4,16,4,16,1,16,3,1,9,0,52,8,0,2,52,7,0,3,5,16,4,16,1,1,10,0,52,3,0,2,16,3,1,9,0,52,12,0,2,52,11,0,1,1,9,0,52,8,0,2,52,7,0,3,50],"constants":[{"t":"s","v":"Patch a previously emitted i16 at the given bytecode offset."},{"t":"s","v":"<"},{"t":"n","v":0},{"t":"s","v":"+"},{"t":"n","v":65536},{"t":"s","v":"get"},{"t":"s","v":"bytecode"},{"t":"s","v":"set-nth!"},{"t":"s","v":"mod"},{"t":"n","v":256},{"t":"n","v":1},{"t":"s","v":"floor"},{"t":"s","v":"/"}],"arity":3}},{"t":"s","v":"compile-expr"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,1,0,1,33,13,0,20,2,0,16,0,1,3,0,49,2,32,12,1,16,1,52,5,0,1,1,6,0,52,4,0,2,33,12,0,20,7,0,16,0,16,1,49,2,32,240,0,16,1,52,5,0,1,1,8,0,52,4,0,2,33,12,0,20,7,0,16,0,16,1,49,2,32,212,0,16,1,52,5,0,1,1,9,0,52,4,0,2,33,24,0,20,2,0,16,0,16,1,33,6,0,1,10,0,32,3,0,1,11,0,49,2,32,172,0,16,1,52,5,0,1,1,12,0,52,4,0,2,33,17,0,20,7,0,16,0,20,13,0,16,1,48,1,49,2,32,139,0,16,1,52,5,0,1,1,14,0,52,4,0,2,33,19,0,20,15,0,16,0,20,16,0,16,1,48,1,16,2,49,3,32,104,0,16,1,52,5,0,1,1,17,0,52,4,0,2,33,49,0,16,1,52,18,0,1,33,24,0,20,2,0,16,0,1,19,0,48,2,5,20,20,0,16,0,1,21,0,49,2,32,13,0,20,22,0,16,0,16,1,16,2,16,3,49,4,32,39,0,16,1,52,5,0,1,1,23,0,52,4,0,2,33,14,0,20,24,0,16,0,16,1,16,2,49,3,32,9,0,20,7,0,16,0,16,1,49,2,50],"constants":[{"t":"s","v":"Compile an expression. tail? indicates tail position for TCO."},{"t":"s","v":"nil?"},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"number"},{"t":"s","v":"emit-const"},{"t":"s","v":"string"},{"t":"s","v":"boolean"},{"t":"n","v":3},{"t":"n","v":4},{"t":"s","v":"keyword"},{"t":"s","v":"keyword-name"},{"t":"s","v":"symbol"},{"t":"s","v":"compile-symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"list"},{"t":"s","v":"empty?"},{"t":"n","v":64},{"t":"s","v":"emit-u16"},{"t":"n","v":0},{"t":"s","v":"compile-list"},{"t":"s","v":"dict"},{"t":"s","v":"compile-dict"}],"arity":4}},{"t":"s","v":"compile-symbol"},{"t":"code","v":{"bytecode":[20,0,0,16,2,16,1,48,2,17,3,16,3,1,3,0,52,2,0,2,1,4,0,52,1,0,2,33,30,0,20,5,0,16,0,1,6,0,48,2,5,20,7,0,16,0,16,3,1,8,0,52,2,0,2,49,2,32,87,0,16,3,1,3,0,52,2,0,2,1,9,0,52,1,0,2,33,30,0,20,5,0,16,0,1,10,0,48,2,5,20,7,0,16,0,16,3,1,8,0,52,2,0,2,49,2,32,38,0,20,11,0,16,0,1,12,0,52,2,0,2,16,1,48,2,17,4,20,5,0,16,0,1,13,0,48,2,5,20,14,0,16,0,16,4,49,2,50],"constants":[{"t":"s","v":"scope-resolve"},{"t":"s","v":"="},{"t":"s","v":"get"},{"t":"s","v":"type"},{"t":"s","v":"local"},{"t":"s","v":"emit-op"},{"t":"n","v":16},{"t":"s","v":"emit-byte"},{"t":"s","v":"index"},{"t":"s","v":"upvalue"},{"t":"n","v":18},{"t":"s","v":"pool-add"},{"t":"s","v":"pool"},{"t":"n","v":20},{"t":"s","v":"emit-u16"}],"arity":3}},{"t":"s","v":"compile-dict"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,3,16,3,52,1,0,1,17,4,51,3,0,1,0,1,1,1,2,16,3,52,2,0,2,5,20,4,0,16,0,1,5,0,48,2,5,20,6,0,16,0,16,4,49,2,50],"constants":[{"t":"s","v":"keys"},{"t":"s","v":"len"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,48,2,5,20,1,0,18,0,18,1,16,0,52,2,0,2,18,2,4,49,4,50],"constants":[{"t":"s","v":"emit-const"},{"t":"s","v":"compile-expr"},{"t":"s","v":"get"}],"arity":1,"upvalue-count":3}},{"t":"s","v":"emit-op"},{"t":"n","v":65},{"t":"s","v":"emit-u16"}],"arity":3}},{"t":"s","v":"compile-list"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,4,16,1,52,1,0,1,17,5,16,4,52,4,0,1,1,5,0,52,3,0,2,52,2,0,1,33,18,0,20,6,0,16,0,16,4,16,5,16,2,16,3,49,5,32,54,3,20,7,0,16,4,48,1,17,6,16,6,1,8,0,52,3,0,2,33,16,0,20,9,0,16,0,16,5,16,2,16,3,49,4,32,17,3,16,6,1,10,0,52,3,0,2,33,16,0,20,11,0,16,0,16,5,16,2,16,3,49,4,32,245,2,16,6,1,12,0,52,3,0,2,33,16,0,20,13,0,16,0,16,5,16,2,16,3,49,4,32,217,2,16,6,1,14,0,52,3,0,2,33,16,0,20,15,0,16,0,16,5,16,2,16,3,49,4,32,189,2,16,6,1,16,0,52,3,0,2,33,16,0,20,17,0,16,0,16,5,16,2,16,3,49,4,32,161,2,16,6,1,18,0,52,3,0,2,33,16,0,20,17,0,16,0,16,5,16,2,16,3,49,4,32,133,2,16,6,1,19,0,52,3,0,2,33,16,0,20,20,0,16,0,16,5,16,2,16,3,49,4,32,105,2,16,6,1,21,0,52,3,0,2,33,16,0,20,20,0,16,0,16,5,16,2,16,3,49,4,32,77,2,16,6,1,22,0,52,3,0,2,33,14,0,20,23,0,16,0,16,5,16,2,49,3,32,51,2,16,6,1,24,0,52,3,0,2,33,14,0,20,23,0,16,0,16,5,16,2,49,3,32,25,2,16,6,1,25,0,52,3,0,2,33,14,0,20,26,0,16,0,16,5,16,2,49,3,32,255,1,16,6,1,27,0,52,3,0,2,33,14,0,20,28,0,16,0,16,5,16,2,49,3,32,229,1,16,6,1,29,0,52,3,0,2,33,12,0,20,30,0,16,0,16,5,49,2,32,205,1,16,6,1,31,0,52,3,0,2,33,16,0,20,32,0,16,0,16,5,16,2,16,3,49,4,32,177,1,16,6,1,33,0,52,3,0,2,33,16,0,20,34,0,16,0,16,5,16,2,16,3,49,4,32,149,1,16,6,1,35,0,52,3,0,2,33,16,0,20,36,0,16,0,16,5,16,2,16,3,49,4,32,121,1,16,6,1,37,0,52,3,0,2,33,14,0,20,38,0,16,0,16,5,16,2,49,3,32,95,1,16,6,1,39,0,52,3,0,2,33,14,0,20,38,0,16,0,16,5,16,2,49,3,32,69,1,16,6,1,40,0,52,3,0,2,33,14,0,20,41,0,16,0,16,5,16,2,49,3,32,43,1,16,6,1,42,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,18,1,16,6,1,45,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,249,0,16,6,1,46,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,224,0,16,6,1,47,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,199,0,16,6,1,48,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,174,0,16,6,1,49,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,149,0,16,6,1,50,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,124,0,16,6,1,51,0,52,3,0,2,33,13,0,20,43,0,16,0,1,44,0,49,2,32,99,0,16,6,1,39,0,52,3,0,2,33,14,0,20,38,0,16,0,16,5,16,2,49,3,32,73,0,16,6,1,52,0,52,3,0,2,33,18,0,20,53,0,16,0,16,5,52,0,0,1,16,2,49,3,32,43,0,16,6,1,54,0,52,3,0,2,33,16,0,20,55,0,16,0,16,5,16,2,16,3,49,4,32,15,0,20,6,0,16,0,16,4,16,5,16,2,16,3,49,5,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"not"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"symbol"},{"t":"s","v":"compile-call"},{"t":"s","v":"symbol-name"},{"t":"s","v":"if"},{"t":"s","v":"compile-if"},{"t":"s","v":"when"},{"t":"s","v":"compile-when"},{"t":"s","v":"and"},{"t":"s","v":"compile-and"},{"t":"s","v":"or"},{"t":"s","v":"compile-or"},{"t":"s","v":"let"},{"t":"s","v":"compile-let"},{"t":"s","v":"let*"},{"t":"s","v":"begin"},{"t":"s","v":"compile-begin"},{"t":"s","v":"do"},{"t":"s","v":"lambda"},{"t":"s","v":"compile-lambda"},{"t":"s","v":"fn"},{"t":"s","v":"define"},{"t":"s","v":"compile-define"},{"t":"s","v":"set!"},{"t":"s","v":"compile-set"},{"t":"s","v":"quote"},{"t":"s","v":"compile-quote"},{"t":"s","v":"cond"},{"t":"s","v":"compile-cond"},{"t":"s","v":"case"},{"t":"s","v":"compile-case"},{"t":"s","v":"->"},{"t":"s","v":"compile-thread"},{"t":"s","v":"defcomp"},{"t":"s","v":"compile-defcomp"},{"t":"s","v":"defisland"},{"t":"s","v":"defmacro"},{"t":"s","v":"compile-defmacro"},{"t":"s","v":"defstyle"},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"s","v":"defhandler"},{"t":"s","v":"defpage"},{"t":"s","v":"defquery"},{"t":"s","v":"defaction"},{"t":"s","v":"defrelation"},{"t":"s","v":"deftype"},{"t":"s","v":"defeffect"},{"t":"s","v":"quasiquote"},{"t":"s","v":"compile-quasiquote"},{"t":"s","v":"letrec"},{"t":"s","v":"compile-letrec"}],"arity":4}},{"t":"s","v":"compile-if"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,4,16,1,1,2,0,52,1,0,2,17,5,16,1,52,4,0,1,1,5,0,52,3,0,2,33,12,0,16,1,1,5,0,52,1,0,2,32,1,0,2,17,6,20,6,0,16,0,16,4,16,2,4,48,4,5,20,7,0,16,0,1,8,0,48,2,5,20,9,0,16,0,48,1,17,7,20,10,0,16,0,1,11,0,48,2,5,20,6,0,16,0,16,5,16,2,16,3,48,4,5,20,7,0,16,0,1,12,0,48,2,5,20,9,0,16,0,48,1,17,8,20,10,0,16,0,1,11,0,48,2,5,20,13,0,16,0,16,7,20,9,0,16,0,48,1,16,7,1,5,0,52,15,0,2,52,14,0,2,48,3,5,16,6,52,16,0,1,33,13,0,20,7,0,16,0,1,5,0,48,2,32,13,0,20,6,0,16,0,16,6,16,2,16,3,48,4,5,20,13,0,16,0,16,8,20,9,0,16,0,48,1,16,8,1,5,0,52,15,0,2,52,14,0,2,49,3,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":">"},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":33},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"n","v":32},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"s","v":"nil?"}],"arity":4}},{"t":"s","v":"compile-when"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,4,16,1,52,1,0,1,17,5,20,2,0,16,0,16,4,16,2,4,48,4,5,20,3,0,16,0,1,4,0,48,2,5,20,5,0,16,0,48,1,17,6,20,6,0,16,0,1,7,0,48,2,5,20,8,0,16,0,16,5,16,2,16,3,48,4,5,20,3,0,16,0,1,9,0,48,2,5,20,5,0,16,0,48,1,17,7,20,6,0,16,0,1,7,0,48,2,5,20,10,0,16,0,16,6,20,5,0,16,0,48,1,16,6,1,13,0,52,12,0,2,52,11,0,2,48,3,5,20,3,0,16,0,1,13,0,48,2,5,20,10,0,16,0,16,7,20,5,0,16,0,48,1,16,7,1,13,0,52,12,0,2,52,11,0,2,49,3,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":33},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"s","v":"compile-begin"},{"t":"n","v":32},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"n","v":2}],"arity":4}},{"t":"s","v":"compile-and"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,33,13,0,20,1,0,16,0,1,2,0,49,2,32,153,0,16,1,52,4,0,1,1,5,0,52,3,0,2,33,20,0,20,6,0,16,0,16,1,52,7,0,1,16,2,16,3,49,4,32,117,0,20,6,0,16,0,16,1,52,7,0,1,16,2,4,48,4,5,20,1,0,16,0,1,8,0,48,2,5,20,1,0,16,0,1,9,0,48,2,5,20,10,0,16,0,48,1,17,4,20,11,0,16,0,1,12,0,48,2,5,20,1,0,16,0,1,13,0,48,2,5,20,14,0,16,0,16,1,52,15,0,1,16,2,16,3,48,4,5,20,16,0,16,0,16,4,20,10,0,16,0,48,1,16,4,1,19,0,52,18,0,2,52,17,0,2,49,3,50],"constants":[{"t":"s","v":"empty?"},{"t":"s","v":"emit-op"},{"t":"n","v":3},{"t":"s","v":"="},{"t":"s","v":"len"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"n","v":6},{"t":"n","v":33},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"n","v":5},{"t":"s","v":"compile-and"},{"t":"s","v":"rest"},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"n","v":2}],"arity":4}},{"t":"s","v":"compile-or"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,33,13,0,20,1,0,16,0,1,2,0,49,2,32,153,0,16,1,52,4,0,1,1,5,0,52,3,0,2,33,20,0,20,6,0,16,0,16,1,52,7,0,1,16,2,16,3,49,4,32,117,0,20,6,0,16,0,16,1,52,7,0,1,16,2,4,48,4,5,20,1,0,16,0,1,8,0,48,2,5,20,1,0,16,0,1,9,0,48,2,5,20,10,0,16,0,48,1,17,4,20,11,0,16,0,1,12,0,48,2,5,20,1,0,16,0,1,13,0,48,2,5,20,14,0,16,0,16,1,52,15,0,1,16,2,16,3,48,4,5,20,16,0,16,0,16,4,20,10,0,16,0,48,1,16,4,1,19,0,52,18,0,2,52,17,0,2,49,3,50],"constants":[{"t":"s","v":"empty?"},{"t":"s","v":"emit-op"},{"t":"n","v":4},{"t":"s","v":"="},{"t":"s","v":"len"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"n","v":6},{"t":"n","v":34},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"n","v":5},{"t":"s","v":"compile-or"},{"t":"s","v":"rest"},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"n","v":2}],"arity":4}},{"t":"s","v":"compile-begin"},{"t":"code","v":{"bytecode":[16,1,52,1,0,1,52,0,0,1,6,33,18,0,5,16,2,1,4,0,52,3,0,2,52,2,0,1,52,0,0,1,33,14,0,51,6,0,1,2,16,1,52,5,0,2,32,1,0,2,5,16,1,52,1,0,1,33,13,0,20,7,0,16,0,1,8,0,49,2,32,81,0,16,1,52,10,0,1,1,11,0,52,9,0,2,33,20,0,20,12,0,16,0,16,1,52,13,0,1,16,2,16,3,49,4,32,45,0,20,12,0,16,0,16,1,52,13,0,1,16,2,4,48,4,5,20,7,0,16,0,1,14,0,48,2,5,20,15,0,16,0,16,1,52,16,0,1,16,2,16,3,49,4,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"nil?"},{"t":"s","v":"get"},{"t":"s","v":"parent"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,52,1,0,1,1,2,0,52,0,0,2,6,33,59,0,5,16,0,52,4,0,1,1,5,0,52,3,0,2,6,33,41,0,5,16,0,52,6,0,1,52,1,0,1,1,7,0,52,0,0,2,6,33,19,0,5,20,8,0,16,0,52,6,0,1,48,1,1,9,0,52,0,0,2,33,53,0,16,0,1,11,0,52,10,0,2,17,1,16,1,52,1,0,1,1,7,0,52,0,0,2,33,10,0,20,8,0,16,1,48,1,32,2,0,16,1,17,2,20,12,0,18,0,16,2,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"list"},{"t":"s","v":">="},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"define"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"scope-define-local"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"s","v":"="},{"t":"s","v":"len"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"n","v":5},{"t":"s","v":"compile-begin"},{"t":"s","v":"rest"}],"arity":4}},{"t":"s","v":"compile-let"},{"t":"code","v":{"bytecode":[16,1,52,2,0,1,52,1,0,1,1,3,0,52,0,0,2,33,136,0,20,4,0,16,1,52,2,0,1,48,1,17,4,16,1,1,6,0,52,5,0,2,17,5,16,1,1,8,0,52,7,0,2,17,6,52,9,0,0,17,7,52,9,0,0,17,8,51,11,0,1,7,1,8,16,5,52,10,0,2,5,1,14,0,52,13,0,1,16,7,52,9,0,2,16,6,52,12,0,2,17,9,16,4,52,13,0,1,16,9,52,9,0,2,52,9,0,1,17,10,16,4,52,13,0,1,16,8,52,15,0,2,17,11,20,16,0,16,0,16,10,16,11,52,9,0,2,16,2,16,3,49,4,32,71,0,16,1,52,2,0,1,17,4,16,1,52,17,0,1,17,5,20,18,0,16,2,48,1,17,6,16,6,1,20,0,16,2,1,20,0,52,21,0,2,52,19,0,3,5,51,22,0,1,6,1,0,16,4,52,10,0,2,5,20,23,0,16,0,16,5,16,6,16,3,49,4,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"slice"},{"t":"n","v":2},{"t":"s","v":"list"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,52,3,0,1,52,2,0,1,1,4,0,52,1,0,2,33,9,0,16,0,52,3,0,1,32,10,0,16,0,52,3,0,1,52,5,0,1,48,2,5,20,0,0,18,1,16,0,1,7,0,52,6,0,2,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"make-symbol"},{"t":"s","v":"nth"},{"t":"n","v":1}],"arity":1,"upvalue-count":2}},{"t":"s","v":"concat"},{"t":"s","v":"make-symbol"},{"t":"s","v":"fn"},{"t":"s","v":"cons"},{"t":"s","v":"compile-letrec"},{"t":"s","v":"rest"},{"t":"s","v":"make-scope"},{"t":"s","v":"dict-set!"},{"t":"s","v":"next-slot"},{"t":"s","v":"get"},{"t":"code","v":{"bytecode":[16,0,52,2,0,1,52,1,0,1,1,3,0,52,0,0,2,33,14,0,20,4,0,16,0,52,2,0,1,48,1,32,6,0,16,0,52,2,0,1,17,1,16,0,1,6,0,52,5,0,2,17,2,20,7,0,18,0,16,1,48,2,17,3,20,8,0,18,1,16,2,18,0,4,48,4,5,20,9,0,18,1,1,10,0,48,2,5,20,11,0,18,1,16,3,49,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"scope-define-local"},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":17},{"t":"s","v":"emit-byte"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"compile-begin"}],"arity":4}},{"t":"s","v":"compile-letrec"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,1,0,1,17,4,16,1,52,2,0,1,17,5,20,3,0,16,2,48,1,17,6,16,6,1,5,0,16,2,1,5,0,52,6,0,2,52,4,0,3,5,51,8,0,1,6,1,0,16,4,52,7,0,2,17,7,51,10,0,1,0,1,6,51,11,0,1,4,1,7,1,13,0,16,4,52,14,0,1,52,12,0,2,52,7,0,2,52,9,0,2,5,20,15,0,16,0,16,5,16,6,16,3,49,4,50],"constants":[{"t":"s","v":"Compile letrec: all names visible during value compilation.\n 1. Define all local slots (initialized to nil).\n 2. Compile each value and assign — names are already in scope\n so mutually recursive functions can reference each other."},{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"make-scope"},{"t":"s","v":"dict-set!"},{"t":"s","v":"next-slot"},{"t":"s","v":"get"},{"t":"s","v":"map"},{"t":"code","v":{"bytecode":[16,0,52,2,0,1,52,1,0,1,1,3,0,52,0,0,2,33,14,0,20,4,0,16,0,52,2,0,1,48,1,32,6,0,16,0,52,2,0,1,17,1,20,5,0,18,0,16,1,48,2,17,2,20,6,0,18,1,1,7,0,48,2,5,20,6,0,18,1,1,8,0,48,2,5,20,9,0,18,1,16,2,48,2,5,16,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"scope-define-local"},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"n","v":17},{"t":"s","v":"emit-byte"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,17,1,16,0,1,2,0,52,1,0,2,17,2,20,3,0,18,0,16,1,1,2,0,52,1,0,2,18,1,4,48,4,5,20,4,0,18,0,1,5,0,48,2,5,20,6,0,18,0,16,2,49,2,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":17},{"t":"s","v":"emit-byte"}],"arity":1,"upvalue-count":2}},{"t":"code","v":{"bytecode":[18,0,16,0,52,1,0,2,18,1,16,0,52,1,0,2,52,0,0,2,50],"constants":[{"t":"s","v":"list"},{"t":"s","v":"nth"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"range"},{"t":"n","v":0},{"t":"s","v":"len"},{"t":"s","v":"compile-begin"}],"arity":4}},{"t":"s","v":"compile-lambda"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,3,16,1,52,1,0,1,17,4,20,2,0,16,2,48,1,17,5,20,3,0,48,0,17,6,16,5,1,5,0,3,52,4,0,3,5,51,7,0,1,5,16,3,52,6,0,2,5,20,8,0,16,6,16,4,16,5,3,48,4,5,20,9,0,16,6,1,10,0,48,2,5,16,5,1,12,0,52,11,0,2,17,7,1,13,0,16,7,52,14,0,1,1,15,0,16,5,1,16,0,52,11,0,2,52,14,0,1,1,17,0,16,6,1,18,0,52,11,0,2,1,19,0,52,11,0,2,1,20,0,16,6,1,20,0,52,11,0,2,65,4,0,17,8,20,21,0,16,0,1,18,0,52,11,0,2,16,8,48,2,17,9,20,9,0,16,0,1,22,0,48,2,5,20,23,0,16,0,16,9,48,2,5,51,24,0,1,0,16,7,52,6,0,2,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"make-scope"},{"t":"s","v":"make-emitter"},{"t":"s","v":"dict-set!"},{"t":"s","v":"is-function"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,52,1,0,1,1,2,0,52,0,0,2,33,10,0,20,3,0,16,0,48,1,32,62,0,16,0,52,4,0,1,6,33,33,0,5,16,0,52,6,0,1,52,5,0,1,6,33,18,0,5,16,0,52,7,0,1,52,1,0,1,1,2,0,52,0,0,2,33,14,0,20,3,0,16,0,52,7,0,1,48,1,32,2,0,16,0,17,1,16,1,1,8,0,52,0,0,2,52,5,0,1,6,33,14,0,5,16,1,1,9,0,52,0,0,2,52,5,0,1,33,12,0,20,10,0,18,0,16,1,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"list?"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"first"},{"t":"s","v":"&key"},{"t":"s","v":"&rest"},{"t":"s","v":"scope-define-local"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"compile-begin"},{"t":"s","v":"emit-op"},{"t":"n","v":50},{"t":"s","v":"get"},{"t":"s","v":"upvalues"},{"t":"s","v":"upvalue-count"},{"t":"s","v":"len"},{"t":"s","v":"arity"},{"t":"s","v":"locals"},{"t":"s","v":"constants"},{"t":"s","v":"pool"},{"t":"s","v":"entries"},{"t":"s","v":"bytecode"},{"t":"s","v":"pool-add"},{"t":"n","v":51},{"t":"s","v":"emit-u16"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,1,2,0,52,1,0,2,33,6,0,1,3,0,32,3,0,1,4,0,48,2,5,20,0,0,18,0,16,0,1,5,0,52,1,0,2,49,2,50],"constants":[{"t":"s","v":"emit-byte"},{"t":"s","v":"get"},{"t":"s","v":"is-local"},{"t":"n","v":1},{"t":"n","v":0},{"t":"s","v":"index"}],"arity":1,"upvalue-count":1}}],"arity":3}},{"t":"s","v":"compile-define"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,17,3,16,3,52,2,0,1,1,3,0,52,1,0,2,33,10,0,20,4,0,16,3,48,1,32,2,0,16,3,17,4,16,1,52,5,0,1,17,6,16,6,52,7,0,1,52,6,0,1,6,33,18,0,5,16,6,52,0,0,1,52,2,0,1,1,8,0,52,1,0,2,33,16,0,51,9,0,1,7,17,7,16,7,16,6,48,1,32,6,0,16,6,52,0,0,1,17,5,16,2,1,12,0,52,11,0,2,52,10,0,1,52,6,0,1,33,47,0,20,13,0,16,2,16,4,48,2,17,6,20,14,0,16,0,16,5,16,2,4,48,4,5,20,15,0,16,0,1,16,0,48,2,5,20,17,0,16,0,16,6,49,2,32,51,0,20,18,0,16,0,1,19,0,52,11,0,2,16,4,48,2,17,6,20,14,0,16,0,16,5,16,2,4,48,4,5,20,15,0,16,0,1,20,0,48,2,5,20,21,0,16,0,16,6,49,2,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"rest"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"keyword"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,33,4,0,2,32,43,0,16,0,52,3,0,1,52,2,0,1,1,4,0,52,1,0,2,33,17,0,18,0,16,0,52,5,0,1,52,5,0,1,49,1,32,6,0,16,0,52,3,0,1,50],"constants":[{"t":"s","v":"empty?"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"keyword"},{"t":"s","v":"rest"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"nil?"},{"t":"s","v":"get"},{"t":"s","v":"parent"},{"t":"s","v":"scope-define-local"},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":17},{"t":"s","v":"emit-byte"},{"t":"s","v":"pool-add"},{"t":"s","v":"pool"},{"t":"n","v":128},{"t":"s","v":"emit-u16"}],"arity":3}},{"t":"s","v":"compile-set"},{"t":"code","v":{"bytecode":[16,1,52,2,0,1,52,1,0,1,1,3,0,52,0,0,2,33,14,0,20,4,0,16,1,52,2,0,1,48,1,32,6,0,16,1,52,2,0,1,17,3,16,1,1,6,0,52,5,0,2,17,4,20,7,0,16,2,16,3,48,2,17,5,20,8,0,16,0,16,4,16,2,4,48,4,5,16,5,1,10,0,52,9,0,2,1,11,0,52,0,0,2,33,30,0,20,12,0,16,0,1,13,0,48,2,5,20,14,0,16,0,16,5,1,15,0,52,9,0,2,49,2,32,87,0,16,5,1,10,0,52,9,0,2,1,16,0,52,0,0,2,33,30,0,20,12,0,16,0,1,17,0,48,2,5,20,14,0,16,0,16,5,1,15,0,52,9,0,2,49,2,32,38,0,20,18,0,16,0,1,19,0,52,9,0,2,16,3,48,2,17,6,20,12,0,16,0,1,20,0,48,2,5,20,21,0,16,0,16,6,49,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"scope-resolve"},{"t":"s","v":"compile-expr"},{"t":"s","v":"get"},{"t":"s","v":"type"},{"t":"s","v":"local"},{"t":"s","v":"emit-op"},{"t":"n","v":17},{"t":"s","v":"emit-byte"},{"t":"s","v":"index"},{"t":"s","v":"upvalue"},{"t":"n","v":19},{"t":"s","v":"pool-add"},{"t":"s","v":"pool"},{"t":"n","v":21},{"t":"s","v":"emit-u16"}],"arity":3}},{"t":"s","v":"compile-quote"},{"t":"code","v":{"bytecode":[16,1,52,0,0,1,33,13,0,20,1,0,16,0,1,2,0,49,2,32,13,0,20,3,0,16,0,16,1,52,4,0,1,49,2,50],"constants":[{"t":"s","v":"empty?"},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"s","v":"emit-const"},{"t":"s","v":"first"}],"arity":2}},{"t":"s","v":"compile-cond"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,2,0,1,1,3,0,52,1,0,2,33,13,0,20,4,0,16,0,1,3,0,49,2,32,22,1,16,1,52,5,0,1,17,4,16,1,1,7,0,52,6,0,2,17,5,16,1,52,2,0,1,1,3,0,52,8,0,2,33,12,0,16,1,1,3,0,52,9,0,2,32,4,0,52,10,0,0,17,6,16,4,52,12,0,1,1,13,0,52,11,0,2,6,33,15,0,5,20,14,0,16,4,48,1,1,15,0,52,11,0,2,6,34,8,0,5,16,4,3,52,11,0,2,33,16,0,20,16,0,16,0,16,5,16,2,16,3,49,4,32,162,0,20,16,0,16,0,16,4,16,2,4,48,4,5,20,4,0,16,0,1,17,0,48,2,5,20,18,0,16,0,48,1,17,7,20,19,0,16,0,1,20,0,48,2,5,20,16,0,16,0,16,5,16,2,16,3,48,4,5,20,4,0,16,0,1,21,0,48,2,5,20,18,0,16,0,48,1,17,8,20,19,0,16,0,1,20,0,48,2,5,20,22,0,16,0,16,7,20,18,0,16,0,48,1,16,7,1,3,0,52,24,0,2,52,23,0,2,48,3,5,20,25,0,16,0,16,6,16,2,16,3,48,4,5,20,22,0,16,0,16,8,20,18,0,16,0,48,1,16,8,1,3,0,52,24,0,2,52,23,0,2,49,3,50],"constants":[{"t":"s","v":"Compile (cond test1 body1 test2 body2 ... :else fallback)."},{"t":"s","v":"<"},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"emit-op"},{"t":"s","v":"first"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":">"},{"t":"s","v":"slice"},{"t":"s","v":"list"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"keyword"},{"t":"s","v":"keyword-name"},{"t":"s","v":"else"},{"t":"s","v":"compile-expr"},{"t":"n","v":33},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"n","v":32},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"s","v":"compile-cond"}],"arity":4}},{"t":"s","v":"compile-case"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,16,0,16,1,52,2,0,1,16,2,4,48,4,5,16,1,52,3,0,1,17,4,20,4,0,16,0,16,4,16,2,16,3,49,4,50],"constants":[{"t":"s","v":"Compile (case expr val1 body1 val2 body2 ... :else fallback)."},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"compile-case-clauses"}],"arity":4}},{"t":"s","v":"compile-case-clauses"},{"t":"code","v":{"bytecode":[16,1,52,1,0,1,1,2,0,52,0,0,2,33,24,0,20,3,0,16,0,1,4,0,48,2,5,20,3,0,16,0,1,2,0,49,2,32,106,1,16,1,52,5,0,1,17,4,16,1,1,7,0,52,6,0,2,17,5,16,1,52,1,0,1,1,2,0,52,8,0,2,33,12,0,16,1,1,2,0,52,9,0,2,32,4,0,52,10,0,0,17,6,16,4,52,12,0,1,1,13,0,52,11,0,2,6,33,15,0,5,20,14,0,16,4,48,1,1,15,0,52,11,0,2,6,34,8,0,5,16,4,3,52,11,0,2,33,27,0,20,3,0,16,0,1,4,0,48,2,5,20,16,0,16,0,16,5,16,2,16,3,49,4,32,235,0,20,3,0,16,0,1,17,0,48,2,5,20,16,0,16,0,16,4,16,2,4,48,4,5,20,18,0,16,0,1,20,0,52,19,0,2,1,11,0,48,2,17,7,20,3,0,16,0,1,21,0,48,2,5,20,22,0,16,0,16,7,48,2,5,20,23,0,16,0,1,2,0,48,2,5,20,3,0,16,0,1,24,0,48,2,5,20,25,0,16,0,48,1,17,7,20,26,0,16,0,1,27,0,48,2,5,20,3,0,16,0,1,4,0,48,2,5,20,16,0,16,0,16,5,16,2,16,3,48,4,5,20,3,0,16,0,1,28,0,48,2,5,20,25,0,16,0,48,1,17,8,20,26,0,16,0,1,27,0,48,2,5,20,29,0,16,0,16,7,20,25,0,16,0,48,1,16,7,1,2,0,52,31,0,2,52,30,0,2,48,3,5,20,32,0,16,0,16,6,16,2,16,3,48,4,5,20,29,0,16,0,16,8,20,25,0,16,0,48,1,16,8,1,2,0,52,31,0,2,52,30,0,2,49,3,50],"constants":[{"t":"s","v":"<"},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"emit-op"},{"t":"n","v":5},{"t":"s","v":"first"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":">"},{"t":"s","v":"slice"},{"t":"s","v":"list"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"keyword"},{"t":"s","v":"keyword-name"},{"t":"s","v":"else"},{"t":"s","v":"compile-expr"},{"t":"n","v":6},{"t":"s","v":"pool-add"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"n","v":52},{"t":"s","v":"emit-u16"},{"t":"s","v":"emit-byte"},{"t":"n","v":33},{"t":"s","v":"current-offset"},{"t":"s","v":"emit-i16"},{"t":"n","v":0},{"t":"n","v":32},{"t":"s","v":"patch-i16"},{"t":"s","v":"-"},{"t":"s","v":"+"},{"t":"s","v":"compile-case-clauses"}],"arity":4}},{"t":"s","v":"compile-thread"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,1,0,1,33,13,0,20,2,0,16,0,1,3,0,49,2,32,67,0,16,1,52,5,0,1,1,6,0,52,4,0,2,33,20,0,20,7,0,16,0,16,1,52,8,0,1,16,2,16,3,49,4,32,31,0,16,1,52,8,0,1,17,4,16,1,52,9,0,1,17,5,20,10,0,16,0,16,4,16,5,16,2,16,3,49,5,50],"constants":[{"t":"s","v":"Compile (-> val (f1 a) (f2 b)) by desugaring to nested calls."},{"t":"s","v":"empty?"},{"t":"s","v":"emit-op"},{"t":"n","v":2},{"t":"s","v":"="},{"t":"s","v":"len"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"compile-thread-step"}],"arity":4}},{"t":"s","v":"compile-thread-step"},{"t":"code","v":{"bytecode":[16,2,52,0,0,1,33,16,0,20,1,0,16,0,16,1,16,3,16,4,49,4,32,128,0,16,2,52,2,0,1,17,5,16,2,52,3,0,1,17,6,16,4,6,33,7,0,5,16,6,52,0,0,1,17,7,16,5,52,4,0,1,33,25,0,16,5,52,2,0,1,16,1,52,6,0,2,16,5,52,3,0,1,52,5,0,2,32,8,0,16,5,16,1,52,6,0,2,17,8,16,6,52,0,0,1,33,16,0,20,1,0,16,0,16,8,16,3,16,7,49,4,32,28,0,20,1,0,16,0,16,8,16,3,4,48,4,5,20,7,0,16,0,16,8,16,6,16,3,16,4,49,5,50],"constants":[{"t":"s","v":"empty?"},{"t":"s","v":"compile-expr"},{"t":"s","v":"first"},{"t":"s","v":"rest"},{"t":"s","v":"list?"},{"t":"s","v":"concat"},{"t":"s","v":"list"},{"t":"s","v":"compile-thread-step"}],"arity":5}},{"t":"s","v":"compile-defcomp"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,16,0,1,3,0,52,2,0,2,1,4,0,48,2,17,3,20,5,0,16,0,1,6,0,48,2,5,20,7,0,16,0,16,3,48,2,5,20,8,0,16,0,1,12,0,52,11,0,1,52,10,0,1,16,1,52,9,0,2,48,2,5,20,5,0,16,0,1,13,0,48,2,5,20,14,0,16,0,1,15,0,49,2,50],"constants":[{"t":"s","v":"Compile defcomp/defisland — delegates to runtime via GLOBAL_GET + CALL."},{"t":"s","v":"pool-add"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"eval-defcomp"},{"t":"s","v":"emit-op"},{"t":"n","v":20},{"t":"s","v":"emit-u16"},{"t":"s","v":"emit-const"},{"t":"s","v":"concat"},{"t":"s","v":"list"},{"t":"s","v":"make-symbol"},{"t":"s","v":"defcomp"},{"t":"n","v":48},{"t":"s","v":"emit-byte"},{"t":"n","v":1}],"arity":3}},{"t":"s","v":"compile-defmacro"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,16,0,1,3,0,52,2,0,2,1,4,0,48,2,17,3,20,5,0,16,0,1,6,0,48,2,5,20,7,0,16,0,16,3,48,2,5,20,8,0,16,0,1,12,0,52,11,0,1,52,10,0,1,16,1,52,9,0,2,48,2,5,20,5,0,16,0,1,13,0,48,2,5,20,14,0,16,0,1,15,0,49,2,50],"constants":[{"t":"s","v":"Compile defmacro — delegates to runtime via GLOBAL_GET + CALL."},{"t":"s","v":"pool-add"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"eval-defmacro"},{"t":"s","v":"emit-op"},{"t":"n","v":20},{"t":"s","v":"emit-u16"},{"t":"s","v":"emit-const"},{"t":"s","v":"concat"},{"t":"s","v":"list"},{"t":"s","v":"make-symbol"},{"t":"s","v":"defmacro"},{"t":"n","v":48},{"t":"s","v":"emit-byte"},{"t":"n","v":1}],"arity":3}},{"t":"s","v":"compile-quasiquote"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,16,0,16,1,16,2,49,3,50],"constants":[{"t":"s","v":"Compile quasiquote inline — walks the template at compile time,\n emitting code that builds the structure at runtime. Unquoted\n expressions are compiled normally (resolving locals/upvalues),\n avoiding the qq-expand-runtime env-lookup limitation."},{"t":"s","v":"compile-qq-expr"}],"arity":3}},{"t":"s","v":"compile-qq-expr"},{"t":"code","v":{"bytecode":[1,0,0,5,16,1,52,3,0,1,1,4,0,52,2,0,2,52,1,0,1,33,12,0,20,5,0,16,0,16,1,49,2,32,109,0,16,1,52,6,0,1,33,24,0,20,7,0,16,0,1,8,0,48,2,5,20,9,0,16,0,1,10,0,49,2,32,76,0,16,1,52,11,0,1,17,3,16,3,52,3,0,1,1,12,0,52,2,0,2,6,33,15,0,5,20,13,0,16,3,48,1,1,14,0,52,2,0,2,33,22,0,20,15,0,16,0,16,1,1,17,0,52,16,0,2,16,2,4,49,4,32,11,0,20,18,0,16,0,16,1,16,2,49,3,50],"constants":[{"t":"s","v":"Compile a quasiquote sub-expression."},{"t":"s","v":"not"},{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"list"},{"t":"s","v":"emit-const"},{"t":"s","v":"empty?"},{"t":"s","v":"emit-op"},{"t":"n","v":64},{"t":"s","v":"emit-u16"},{"t":"n","v":0},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"unquote"},{"t":"s","v":"compile-expr"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"compile-qq-list"}],"arity":3}},{"t":"s","v":"compile-qq-list"},{"t":"code","v":{"bytecode":[1,0,0,5,51,2,0,16,1,52,1,0,2,17,3,16,3,52,3,0,1,33,41,0,51,5,0,1,0,1,2,16,1,52,4,0,2,5,20,6,0,16,0,1,7,0,48,2,5,20,8,0,16,0,16,1,52,9,0,1,49,2,32,142,0,1,10,0,17,4,1,10,0,17,5,51,11,0,1,5,1,0,1,4,1,2,16,1,52,4,0,2,5,16,5,1,10,0,52,12,0,2,33,35,0,20,6,0,16,0,1,7,0,48,2,5,20,8,0,16,0,16,5,48,2,5,16,4,1,14,0,52,13,0,2,17,4,32,1,0,2,5,16,4,1,14,0,52,12,0,2,33,52,0,20,15,0,16,0,1,17,0,52,16,0,2,1,18,0,48,2,17,6,20,6,0,16,0,1,19,0,48,2,5,20,8,0,16,0,16,6,48,2,5,20,20,0,16,0,16,4,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"Compile a quasiquote list. Handles splice-unquote by building\n segments and concatenating them."},{"t":"s","v":"some"},{"t":"code","v":{"bytecode":[16,0,52,1,0,1,1,2,0,52,0,0,2,6,33,59,0,5,16,0,52,4,0,1,1,5,0,52,3,0,2,6,33,41,0,5,16,0,52,6,0,1,52,1,0,1,1,7,0,52,0,0,2,6,33,19,0,5,20,8,0,16,0,52,6,0,1,48,1,1,9,0,52,0,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"list"},{"t":"s","v":">="},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"splice-unquote"}],"arity":1}},{"t":"s","v":"not"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,18,1,49,3,50],"constants":[{"t":"s","v":"compile-qq-expr"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"emit-op"},{"t":"n","v":64},{"t":"s","v":"emit-u16"},{"t":"s","v":"len"},{"t":"n","v":0},{"t":"code","v":{"bytecode":[16,0,52,1,0,1,1,2,0,52,0,0,2,6,33,59,0,5,16,0,52,4,0,1,1,5,0,52,3,0,2,6,33,41,0,5,16,0,52,6,0,1,52,1,0,1,1,7,0,52,0,0,2,6,33,19,0,5,20,8,0,16,0,52,6,0,1,48,1,1,9,0,52,0,0,2,33,89,0,18,0,1,11,0,52,10,0,2,33,41,0,20,12,0,18,1,1,13,0,48,2,5,20,14,0,18,1,18,0,48,2,5,18,2,1,16,0,52,15,0,2,19,2,5,1,11,0,19,0,32,1,0,2,5,20,17,0,18,1,16,0,1,16,0,52,18,0,2,18,3,4,48,4,5,18,2,1,16,0,52,15,0,2,19,2,32,23,0,20,19,0,18,1,16,0,18,3,48,3,5,18,0,1,16,0,52,15,0,2,19,0,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"list"},{"t":"s","v":">="},{"t":"s","v":"len"},{"t":"n","v":2},{"t":"s","v":"first"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"splice-unquote"},{"t":"s","v":">"},{"t":"n","v":0},{"t":"s","v":"emit-op"},{"t":"n","v":64},{"t":"s","v":"emit-u16"},{"t":"s","v":"+"},{"t":"n","v":1},{"t":"s","v":"compile-expr"},{"t":"s","v":"nth"},{"t":"s","v":"compile-qq-expr"}],"arity":1,"upvalue-count":4}},{"t":"s","v":">"},{"t":"s","v":"+"},{"t":"n","v":1},{"t":"s","v":"pool-add"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"concat"},{"t":"n","v":52},{"t":"s","v":"emit-byte"}],"arity":3}},{"t":"s","v":"compile-call"},{"t":"code","v":{"bytecode":[16,1,52,1,0,1,1,2,0,52,0,0,2,6,33,80,0,5,20,3,0,16,1,48,1,17,6,20,6,0,16,3,16,6,48,2,1,7,0,52,5,0,2,1,8,0,52,0,0,2,52,4,0,1,6,33,39,0,5,20,6,0,16,3,16,6,48,2,1,7,0,52,5,0,2,1,9,0,52,0,0,2,52,4,0,1,6,33,7,0,5,16,6,52,10,0,1,17,5,16,5,33,82,0,20,3,0,16,1,48,1,17,6,16,2,52,11,0,1,17,7,20,12,0,16,0,1,13,0,52,5,0,2,16,6,48,2,17,8,51,15,0,1,0,1,3,16,2,52,14,0,2,5,20,16,0,16,0,1,17,0,48,2,5,20,18,0,16,0,16,8,48,2,5,20,19,0,16,0,16,7,49,2,32,83,0,20,20,0,16,0,16,1,16,3,4,48,4,5,51,15,0,1,0,1,3,16,2,52,14,0,2,5,16,4,33,27,0,20,16,0,16,0,1,21,0,48,2,5,20,19,0,16,0,16,2,52,11,0,1,49,2,32,24,0,20,16,0,16,0,1,22,0,48,2,5,20,19,0,16,0,16,2,52,11,0,1,49,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"type-of"},{"t":"s","v":"symbol"},{"t":"s","v":"symbol-name"},{"t":"s","v":"not"},{"t":"s","v":"get"},{"t":"s","v":"scope-resolve"},{"t":"s","v":"type"},{"t":"s","v":"local"},{"t":"s","v":"upvalue"},{"t":"s","v":"primitive?"},{"t":"s","v":"len"},{"t":"s","v":"pool-add"},{"t":"s","v":"pool"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,18,1,4,49,4,50],"constants":[{"t":"s","v":"compile-expr"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"emit-op"},{"t":"n","v":52},{"t":"s","v":"emit-u16"},{"t":"s","v":"emit-byte"},{"t":"s","v":"compile-expr"},{"t":"n","v":49},{"t":"n","v":48}],"arity":5}},{"t":"s","v":"compile"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,48,0,17,1,20,2,0,2,48,1,17,2,20,3,0,16,1,16,0,16,2,4,48,4,5,20,4,0,16,1,1,5,0,48,2,5,1,6,0,16,1,1,8,0,52,7,0,2,1,9,0,52,7,0,2,1,10,0,16,1,1,10,0,52,7,0,2,65,2,0,50],"constants":[{"t":"s","v":"Compile a single SX expression to a bytecode module."},{"t":"s","v":"make-emitter"},{"t":"s","v":"make-scope"},{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":50},{"t":"s","v":"constants"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"entries"},{"t":"s","v":"bytecode"}],"arity":1}},{"t":"s","v":"compile-module"},{"t":"code","v":{"bytecode":[1,0,0,5,20,1,0,48,0,17,1,20,2,0,2,48,1,17,2,51,4,0,1,1,1,2,16,0,52,5,0,1,52,3,0,2,5,20,6,0,16,1,16,0,52,7,0,1,16,2,4,48,4,5,20,8,0,16,1,1,9,0,48,2,5,1,10,0,16,1,1,12,0,52,11,0,2,1,13,0,52,11,0,2,1,14,0,16,1,1,14,0,52,11,0,2,65,2,0,50],"constants":[{"t":"s","v":"Compile a list of top-level expressions to a bytecode module."},{"t":"s","v":"make-emitter"},{"t":"s","v":"make-scope"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,18,1,4,48,4,5,20,1,0,18,0,1,2,0,49,2,50],"constants":[{"t":"s","v":"compile-expr"},{"t":"s","v":"emit-op"},{"t":"n","v":5}],"arity":1,"upvalue-count":2}},{"t":"s","v":"init"},{"t":"s","v":"compile-expr"},{"t":"s","v":"last"},{"t":"s","v":"emit-op"},{"t":"n","v":50},{"t":"s","v":"constants"},{"t":"s","v":"get"},{"t":"s","v":"pool"},{"t":"s","v":"entries"},{"t":"s","v":"bytecode"}],"arity":1}}]}}