Add .sxbc s-expression bytecode format

Bytecode modules are now serialized as s-expressions (.sxbc) in addition
to JSON (.sxbc.json). The .sxbc format is the canonical representation —
content-addressable, parseable by the SX parser, and suitable for CID
referencing. Annotation layers (source maps, variable names, tests, docs)
can reference the bytecode CID without polluting the bytecode itself.

Format: (sxbc version hash (code :arity N :bytecode (...) :constants (...)))

The browser loader tries .sxbc first (via load-sxbc kernel primitive),
falls back to .sxbc.json. Caddy needs .sxbc MIME type to serve the new
format (currently 404s, JSON fallback works).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-27 14:16:22 +00:00
parent 8d3ab040ef
commit e0070041d6
27 changed files with 11379 additions and 65 deletions

View File

@@ -1,9 +1,9 @@
#!/usr/bin/env node
/**
* compile-modules.js — Pre-compile .sx files to bytecode JSON.
* compile-modules.js — Pre-compile .sx files to bytecode s-expressions.
*
* Uses the js_of_ocaml kernel in Node.js to compile each .sx module,
* then serializes the bytecode as JSON for fast browser loading.
* then serializes the bytecode as .sxbc (s-expression format) for browser loading.
*
* Usage: node compile-modules.js [dist-dir]
*/
@@ -59,7 +59,6 @@ for (const file of FILES) {
const hash = crypto.createHash('sha256').update(src).digest('hex').slice(0, 16);
try {
// Parse source to get expression list, then compile
const code = K.eval('(compile-module (sx-parse ' + JSON.stringify(src) + '))');
if (typeof code === 'string' && code.startsWith('Error')) {
@@ -68,15 +67,22 @@ for (const file of FILES) {
continue;
}
const sx = serializeModuleToSx(code, hash);
// Write .sxbc (s-expression format)
const outPath = srcPath.replace(/\.sx$/, '.sxbc');
fs.writeFileSync(outPath, sx);
// Also write .sxbc.json for backwards compatibility during transition
const json = {
magic: 'SXBC',
version: 1,
hash: hash,
module: serializeModule(code),
module: serializeModuleToJson(code),
};
const jsonPath = srcPath.replace(/\.sx$/, '.sxbc.json');
fs.writeFileSync(jsonPath, JSON.stringify(json));
const outPath = srcPath.replace(/\.sx$/, '.sxbc.json');
fs.writeFileSync(outPath, JSON.stringify(json));
const size = fs.statSync(outPath).size;
console.log(' ok', file, '→', Math.round(size / 1024) + 'K');
compiled++;
@@ -88,13 +94,93 @@ for (const file of FILES) {
console.log('Done:', compiled, 'compiled,', skipped, 'skipped');
// --- Serialization ---
// --- S-expression serialization ---
function serializeModule(code) {
return {
function serializeModuleToSx(code, hash) {
return '(sxbc 1 "' + hash + '"\n ' + serializeCodeToSx(code, 2) + ')\n';
}
function serializeCodeToSx(code, indent) {
const pad = ' '.repeat(indent);
const bc = extractList(code.bytecode);
const consts = extractList(code.constants);
const arity = code.arity || code['arity'] || 0;
const uvc = code['upvalue-count'] || 0;
let parts = ['(code'];
if (arity) parts.push(' :arity ' + arity);
if (uvc) parts.push(' :upvalue-count ' + uvc);
parts.push('\n' + pad + ' :bytecode (' + bc.join(' ') + ')');
parts.push('\n' + pad + ' :constants (');
const constStrs = consts.map(c => serializeConstToSx(c, indent + 4));
if (constStrs.length > 0) {
parts.push('\n' + constStrs.map(s => pad + ' ' + s).join('\n'));
parts.push(')');
} else {
parts[parts.length - 1] += ')';
}
parts.push(')');
return parts.join('');
}
function serializeConstToSx(c, indent) {
if (c === null || c === undefined) return 'nil';
if (typeof c === 'number') return String(c);
if (typeof c === 'string') return '"' + c.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
if (typeof c === 'boolean') return c ? 'true' : 'false';
if (c._type === 'symbol') return "'" + c.name;
if (c._type === 'keyword') return ':' + c.name;
if (c._type === 'list') {
const items = extractList(c).map(x => serializeConstToSx(x, indent));
return '(list ' + items.join(' ') + ')';
}
// Code object (nested lambda bytecode)
if (c.bytecode) return serializeCodeToSx(c, indent);
if (c._type === 'dict') {
const bc = c.get ? c.get('bytecode') : c.bytecode;
if (bc) return serializeCodeToSx(c, indent);
// Regular dict — serialize as {:key val ...}
const entries = [];
if (c.forEach) c.forEach((v, k) => { entries.push(':' + k + ' ' + serializeConstToSx(v, indent)); });
return '{' + entries.join(' ') + '}';
}
return 'nil';
}
// --- JSON serialization (backwards compat) ---
function serializeModuleToJson(code) {
const result = {
bytecode: extractList(code.bytecode),
constants: extractList(code.constants).map(serializeConstant),
constants: extractList(code.constants).map(serializeConstantJson),
};
const arity = code.arity || code['arity'];
const uvc = code['upvalue-count'];
const locals = code.locals || code['locals'];
if (arity) result.arity = typeof arity === 'number' ? arity : 0;
if (uvc) result['upvalue-count'] = typeof uvc === 'number' ? uvc : 0;
if (locals) result.locals = typeof locals === 'number' ? locals : 0;
return result;
}
function serializeConstantJson(c) {
if (c === null || c === undefined) return { t: 'nil' };
if (typeof c === 'number') return { t: 'n', v: c };
if (typeof c === 'string') return { t: 's', v: c };
if (typeof c === 'boolean') return { t: 'b', v: c };
if (c._type === 'symbol') return { t: 'sym', v: c.name };
if (c._type === 'keyword') return { t: 'kw', v: c.name };
if (c._type === 'list') return { t: 'list', v: extractList(c).map(serializeConstantJson) };
if (c.bytecode) return { t: 'code', v: serializeModuleToJson(c) };
if (c._type === 'dict') {
const bc = c.get ? c.get('bytecode') : c.bytecode;
if (bc) return { t: 'code', v: serializeModuleToJson(c) };
const entries = {};
if (c.forEach) c.forEach((v, k) => { entries[k] = serializeConstantJson(v); });
return { t: 'dict', v: entries };
}
return { t: 'nil' };
}
function extractList(v) {
@@ -104,25 +190,3 @@ function extractList(v) {
if (v.items) return v.items;
return [];
}
function serializeConstant(c) {
if (c === null || c === undefined) return { t: 'nil' };
if (typeof c === 'number') return { t: 'n', v: c };
if (typeof c === 'string') return { t: 's', v: c };
if (typeof c === 'boolean') return { t: 'b', v: c };
if (c._type === 'symbol') return { t: 'sym', v: c.name };
if (c._type === 'keyword') return { t: 'kw', v: c.name };
if (c._type === 'list') return { t: 'list', v: extractList(c).map(serializeConstant) };
// Code object (nested lambda bytecode)
if (c.bytecode) return { t: 'code', v: serializeModule(c) };
if (c._type === 'dict') {
// Check if it's a code object stored as dict
const bc = c.get ? c.get('bytecode') : c.bytecode;
if (bc) return { t: 'code', v: serializeModule(c) };
// Regular dict
const entries = {};
if (c.forEach) c.forEach((v, k) => { entries[k] = serializeConstant(v); });
return { t: 'dict', v: entries };
}
return { t: 'nil' };
}

View File

@@ -503,6 +503,41 @@ let () =
let d = Hashtbl.create 2 in Hashtbl.replace d "ok" (Bool false); Hashtbl.replace d "error" (String msg); Dict d)
| _ -> raise (Eval_error "try-call: 1 arg"));
(* --- Bytecode loading from s-expression format ---
(sxbc version hash (code :arity N :upvalue-count N :bytecode (...) :constants (...)))
Recursively converts the SX tree into the dict format that loadModule expects. *)
bind "load-sxbc" (fun args ->
match args with
| [List (_ :: _ :: _ :: code_form :: _)] | [List (_ :: _ :: code_form :: _)] ->
let rec convert_code form =
match form with
| List (Symbol "code" :: rest) ->
let d = Hashtbl.create 8 in
let rec parse_kv = function
| Keyword "arity" :: Number n :: rest -> Hashtbl.replace d "arity" (Number n); parse_kv rest
| Keyword "upvalue-count" :: Number n :: rest -> Hashtbl.replace d "upvalue-count" (Number n); parse_kv rest
| Keyword "bytecode" :: List nums :: rest ->
Hashtbl.replace d "bytecode" (List nums); parse_kv rest
| Keyword "constants" :: List consts :: rest ->
Hashtbl.replace d "constants" (List (List.map convert_const consts)); parse_kv rest
| _ :: rest -> parse_kv rest (* skip unknown keywords *)
| [] -> ()
in
parse_kv rest;
Dict d
| _ -> raise (Eval_error ("load-sxbc: expected (code ...), got " ^ type_of form))
and convert_const = function
| List (Symbol "code" :: _) as form -> convert_code form
| List (Symbol "list" :: items) -> List (List.map convert_const items)
| v -> v (* strings, numbers, booleans, nil, symbols, keywords pass through *)
in
let module_val = convert_code code_form in
let code = Sx_vm.code_from_value module_val in
let _result = Sx_vm.execute_module code _vm_globals in
sync_vm_to_env ();
Number (float_of_int (Hashtbl.length _vm_globals))
| _ -> raise (Eval_error "load-sxbc: expected (sxbc version hash (code ...))"));
(* --- List mutation --- *)
bind "append!" (fun args ->
match args with

View File

@@ -199,6 +199,7 @@
/**
* Deserialize type-tagged JSON constant back to JS value for loadModule.
* (Legacy — used for .sxbc.json fallback)
*/
function deserializeConstant(c) {
if (!c || !c.t) return null;
@@ -228,33 +229,58 @@
}
/**
* Try loading a pre-compiled .sxbc.json bytecode module.
* Try loading a pre-compiled bytecode module.
* Tries .sxbc (s-expression) first, falls back to .sxbc.json (legacy).
* Returns true on success, null on failure (caller falls back to .sx source).
*/
function loadBytecodeFile(path) {
var bcPath = path.replace(/\.sx$/, '.sxbc.json');
var url = _baseUrl + bcPath + _cacheBust;
// Try .sxbc (s-expression format) first
var sxbcPath = path.replace(/\.sx$/, '.sxbc');
var url = _baseUrl + sxbcPath + _cacheBust;
try {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send();
if (xhr.status !== 200) return null;
if (xhr.status === 200 && xhr.responseText.indexOf("(sxbc") === 0) {
// Parse with the SX kernel — returns the (sxbc ...) form
var parsed = K.eval('(first (sx-parse ' + JSON.stringify(xhr.responseText) + '))');
// (sxbc version hash (code ...)) — third element is the module
var module = K.eval('(nth (sx-parse ' + JSON.stringify(xhr.responseText) + ') 0)');
// Use evalSxbc which understands the sxbc format
var result = K.eval('(load-sxbc (first (sx-parse ' + JSON.stringify(xhr.responseText) + ')))');
if (typeof result === 'string' && result.indexOf('Error') === 0) {
console.warn("[sx-platform] sxbc FAIL " + path + ":", result);
} else {
return true;
}
}
} catch(e) {
// Fall through to JSON
}
var json = JSON.parse(xhr.responseText);
// Fallback: .sxbc.json (legacy format)
var bcPath = path.replace(/\.sx$/, '.sxbc.json');
url = _baseUrl + bcPath + _cacheBust;
try {
var xhr2 = new XMLHttpRequest();
xhr2.open("GET", url, false);
xhr2.send();
if (xhr2.status !== 200) return null;
var json = JSON.parse(xhr2.responseText);
if (!json.module || json.magic !== 'SXBC') return null;
var module = {
var module2 = {
_type: 'dict',
bytecode: { _type: 'list', items: json.module.bytecode },
constants: { _type: 'list', items: json.module.constants.map(deserializeConstant) },
};
var result = K.loadModule(module);
if (typeof result === 'string' && result.indexOf('Error') === 0) {
console.warn("[sx-platform] bytecode FAIL " + path + ":", result);
var result2 = K.loadModule(module2);
if (typeof result2 === 'string' && result2.indexOf('Error') === 0) {
console.warn("[sx-platform] bytecode FAIL " + path + ":", result2);
return null;
}
console.log("[sx-platform] ok " + path + " (bytecode)");
return true;
} catch(e) {
console.error("[sx-platform] bytecode EXCEPTION " + path + ":", e);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,543 @@
(sxbc 1 "086e7cdb6c662abb"
(code
:bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 5 1 6 0 1 7 0 1 8 0 1 9 0 1 10 0 1 11 0 1 12 0 1 13 0 1 14 0 1 15 0 1 16 0 1 17 0 1 18 0 1 19 0 1 20 0 1 21 0 1 22 0 1 23 0 1 24 0 1 25 0 1 26 0 1 27 0 52 5 0 22 128 4 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 50)
:constants (
"render-to-html"
(code :arity 2
:bytecode (20 0 0 3 48 1 5 16 0 52 1 0 1 6 1 2 0 52 3 0 2 33 7 0 5 1 4 0 32 27 1 6 1 5 0 52 3 0 2 33 11 0 5 20 6 0 16 0 49 1 32 5 1 6 1 7 0 52 3 0 2 33 10 0 5 16 0 52 8 0 1 32 240 0 6 1 9 0 52 3 0 2 33 18 0 5 16 0 33 6 0 1 10 0 32 3 0 1 11 0 32 211 0 6 1 12 0 52 3 0 2 33 28 0 5 16 0 52 13 0 1 33 6 0 1 4 0 32 9 0 20 14 0 16 0 16 1 49 2 32 172 0 6 1 15 0 52 3 0 2 33 25 0 5 20 16 0 20 17 0 20 18 0 16 0 16 1 48 2 48 1 16 1 49 2 32 136 0 6 1 19 0 52 3 0 2 33 16 0 5 20 6 0 20 20 0 16 0 48 1 49 1 32 109 0 6 1 21 0 52 3 0 2 33 10 0 5 16 0 52 22 0 1 32 88 0 6 1 23 0 52 3 0 2 33 21 0 5 1 25 0 16 0 52 26 0 1 52 24 0 2 5 1 4 0 32 56 0 6 1 27 0 52 3 0 2 33 23 0 5 20 28 0 20 29 0 16 0 48 1 20 30 0 16 0 48 1 49 2 32 22 0 5 20 16 0 20 17 0 20 18 0 16 0 16 1 48 2 48 1 16 1 49 2 50)
:constants (
"set-render-active!"
"type-of"
"nil"
"="
""
"string"
"escape-html"
"number"
"str"
"boolean"
"true"
"false"
"list"
"empty?"
"render-list-to-html"
"symbol"
"render-value-to-html"
"trampoline"
"eval-expr"
"keyword"
"keyword-name"
"raw-html"
"raw-html-content"
"spread"
"scope-emit!"
"element-attrs"
"spread-attrs"
"thunk"
"render-to-html"
"thunk-expr"
"thunk-env"))
"render-value-to-html"
(code :arity 2
:bytecode (16 0 52 0 0 1 6 1 1 0 52 2 0 2 33 7 0 5 1 3 0 32 195 0 6 1 4 0 52 2 0 2 33 11 0 5 20 5 0 16 0 49 1 32 173 0 6 1 6 0 52 2 0 2 33 10 0 5 16 0 52 7 0 1 32 152 0 6 1 8 0 52 2 0 2 33 18 0 5 16 0 33 6 0 1 9 0 32 3 0 1 10 0 32 123 0 6 1 11 0 52 2 0 2 33 13 0 5 20 12 0 16 0 16 1 49 2 32 99 0 6 1 13 0 52 2 0 2 33 10 0 5 16 0 52 14 0 1 32 78 0 6 1 15 0 52 2 0 2 33 21 0 5 1 17 0 16 0 52 18 0 1 52 16 0 2 5 1 3 0 32 46 0 6 1 19 0 52 2 0 2 33 23 0 5 20 20 0 20 21 0 16 0 48 1 20 22 0 16 0 48 1 49 2 32 12 0 5 20 5 0 16 0 52 7 0 1 49 1 50)
:constants (
"type-of"
"nil"
"="
""
"string"
"escape-html"
"number"
"str"
"boolean"
"true"
"false"
"list"
"render-list-to-html"
"raw-html"
"raw-html-content"
"spread"
"scope-emit!"
"element-attrs"
"spread-attrs"
"thunk"
"render-to-html"
"thunk-expr"
"thunk-env"))
"RENDER_HTML_FORMS"
"list"
"if"
"when"
"cond"
"case"
"let"
"let*"
"letrec"
"begin"
"do"
"define"
"defcomp"
"defisland"
"defmacro"
"defstyle"
"deftype"
"defeffect"
"map"
"map-indexed"
"filter"
"for-each"
"scope"
"provide"
"render-html-form?"
(code :arity 1
:bytecode (20 1 0 16 0 52 0 0 2 50)
:constants (
"contains?"
"RENDER_HTML_FORMS"))
"render-list-to-html"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 15 2 16 0 52 2 0 1 17 2 16 2 52 5 0 1 1 6 0 52 4 0 2 52 3 0 1 33 21 0 1 1 0 51 9 0 1 1 16 0 52 8 0 2 52 7 0 2 32 222 1 20 10 0 16 2 48 1 17 3 16 0 52 11 0 1 17 4 16 3 1 12 0 52 4 0 2 33 21 0 1 1 0 51 13 0 1 1 16 4 52 8 0 2 52 7 0 2 32 172 1 16 3 1 14 0 52 4 0 2 33 21 0 1 1 0 51 15 0 1 1 16 4 52 8 0 2 52 7 0 2 32 139 1 16 3 1 16 0 52 4 0 2 33 12 0 20 17 0 16 4 16 1 49 2 32 115 1 16 3 1 18 0 52 4 0 2 33 12 0 20 19 0 16 4 16 1 49 2 32 91 1 16 3 1 20 0 52 4 0 2 6 34 24 0 5 16 3 1 21 0 52 4 0 2 6 34 10 0 5 16 3 1 22 0 52 4 0 2 33 21 0 1 1 0 51 13 0 1 1 16 4 52 8 0 2 52 7 0 2 32 30 1 20 24 0 16 3 52 23 0 2 33 14 0 20 25 0 16 3 16 4 16 1 49 3 32 4 1 16 3 1 27 0 52 26 0 2 6 33 28 0 5 20 28 0 16 1 16 3 48 2 6 33 14 0 5 20 30 0 16 1 16 3 48 2 52 29 0 1 33 21 0 20 31 0 20 30 0 16 1 16 3 48 2 16 4 16 1 49 3 32 195 0 16 3 1 27 0 52 26 0 2 33 80 0 20 30 0 16 1 16 3 48 2 17 5 16 5 52 32 0 1 33 14 0 20 33 0 16 5 16 4 16 1 49 3 32 43 0 16 5 52 34 0 1 33 21 0 20 35 0 20 36 0 16 5 16 4 16 1 48 3 16 1 49 2 32 13 0 1 39 0 16 3 52 38 0 2 52 37 0 1 32 103 0 20 40 0 16 3 48 1 33 14 0 20 41 0 16 3 16 0 16 1 49 3 32 79 0 20 28 0 16 1 16 3 48 2 6 33 14 0 5 20 30 0 16 1 16 3 48 2 52 34 0 1 33 28 0 20 35 0 20 36 0 20 30 0 16 1 16 3 48 2 16 4 16 1 48 3 16 1 49 2 32 21 0 20 42 0 20 43 0 20 44 0 16 0 16 1 48 2 48 1 16 1 49 2 50)
:constants (
"empty?"
""
"first"
"not"
"="
"type-of"
"symbol"
"join"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-value-to-html"))
"symbol-name"
"rest"
"<>"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"raw!"
(code :arity 1 :upvalue-count 1
:bytecode (20 1 0 20 2 0 16 0 18 0 48 2 48 1 52 0 0 1 50)
:constants (
"str"
"trampoline"
"eval-expr"))
"lake"
"render-html-lake"
"marsh"
"render-html-marsh"
"portal"
"error-boundary"
"promise-delayed"
"contains?"
"HTML_TAGS"
"render-html-element"
"starts-with?"
"~"
"env-has?"
"island?"
"env-get"
"render-html-island"
"component?"
"render-html-component"
"macro?"
"render-to-html"
"expand-macro"
"error"
"str"
"Unknown component: "
"render-html-form?"
"dispatch-html-form"
"render-value-to-html"
"trampoline"
"eval-expr"))
"dispatch-html-form"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 33 88 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 16 3 33 19 0 20 6 0 16 1 1 7 0 52 4 0 2 16 2 49 2 32 38 0 16 1 52 9 0 1 1 10 0 52 8 0 2 33 19 0 20 6 0 16 1 1 10 0 52 4 0 2 16 2 49 2 32 3 0 1 11 0 32 227 4 16 0 1 12 0 52 0 0 2 33 103 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 52 13 0 1 33 6 0 1 11 0 32 66 0 16 1 52 9 0 1 1 10 0 52 0 0 2 33 19 0 20 6 0 16 1 1 7 0 52 4 0 2 16 2 49 2 32 31 0 1 11 0 51 16 0 1 1 1 2 1 7 0 16 1 52 9 0 1 52 17 0 2 52 15 0 2 52 14 0 2 32 112 4 16 0 1 18 0 52 0 0 2 33 38 0 20 19 0 16 1 52 20 0 1 16 2 48 2 17 3 16 3 33 12 0 20 6 0 16 3 16 2 49 2 32 3 0 1 11 0 32 62 4 16 0 1 21 0 52 0 0 2 33 24 0 20 6 0 20 2 0 20 3 0 16 1 16 2 48 2 48 1 16 2 49 2 32 26 4 16 0 1 22 0 52 0 0 2 33 107 0 16 1 1 5 0 52 4 0 2 17 3 16 1 1 7 0 52 23 0 2 17 4 20 24 0 16 2 48 1 17 5 51 26 0 1 5 16 3 52 25 0 2 5 51 27 0 1 5 16 3 52 25 0 2 5 16 4 52 9 0 1 1 5 0 52 8 0 2 33 18 0 51 28 0 1 5 16 4 52 29 0 1 52 25 0 2 32 1 0 2 5 20 6 0 16 4 52 30 0 1 16 5 49 2 32 163 3 16 0 1 31 0 52 0 0 2 6 34 10 0 5 16 0 1 32 0 52 0 0 2 33 87 0 20 33 0 16 1 1 5 0 52 4 0 2 16 2 48 2 17 3 16 1 52 9 0 1 1 10 0 52 0 0 2 33 19 0 20 6 0 16 1 1 7 0 52 4 0 2 16 3 49 2 32 31 0 1 11 0 51 16 0 1 1 1 3 1 7 0 16 1 52 9 0 1 52 17 0 2 52 15 0 2 52 14 0 2 32 50 3 16 0 1 34 0 52 0 0 2 6 34 10 0 5 16 0 1 35 0 52 0 0 2 33 69 0 16 1 52 9 0 1 1 7 0 52 0 0 2 33 19 0 20 6 0 16 1 1 5 0 52 4 0 2 16 2 49 2 32 31 0 1 11 0 51 16 0 1 1 1 2 1 5 0 16 1 52 9 0 1 52 17 0 2 52 15 0 2 52 14 0 2 32 211 2 20 36 0 16 0 48 1 33 21 0 20 2 0 20 3 0 16 1 16 2 48 2 48 1 5 1 11 0 32 180 2 16 0 1 15 0 52 0 0 2 33 69 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 20 2 0 20 3 0 16 1 1 7 0 52 4 0 2 16 2 48 2 48 1 17 4 1 11 0 51 37 0 1 3 1 2 16 4 52 15 0 2 52 14 0 2 32 99 2 16 0 1 38 0 52 0 0 2 33 69 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 20 2 0 20 3 0 16 1 1 7 0 52 4 0 2 16 2 48 2 48 1 17 4 1 11 0 51 39 0 1 3 1 2 16 4 52 38 0 2 52 14 0 2 32 18 2 16 0 1 40 0 52 0 0 2 33 24 0 20 6 0 20 2 0 20 3 0 16 1 16 2 48 2 48 1 16 2 49 2 32 238 1 16 0 1 25 0 52 0 0 2 33 69 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 20 2 0 20 3 0 16 1 1 7 0 52 4 0 2 16 2 48 2 48 1 17 4 1 11 0 51 37 0 1 3 1 2 16 4 52 15 0 2 52 14 0 2 32 157 1 16 0 1 41 0 52 0 0 2 33 217 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 16 1 1 7 0 52 23 0 2 17 4 2 17 5 2 17 6 16 4 52 9 0 1 1 7 0 52 42 0 2 6 33 41 0 5 16 4 52 44 0 1 52 43 0 1 1 45 0 52 0 0 2 6 33 19 0 5 20 46 0 16 4 52 44 0 1 48 1 1 47 0 52 0 0 2 33 38 0 20 2 0 20 3 0 16 4 1 5 0 52 4 0 2 16 2 48 2 48 1 17 5 5 16 4 1 7 0 52 23 0 2 17 6 32 4 0 16 4 17 6 5 16 3 16 5 52 48 0 2 5 16 6 52 9 0 1 1 5 0 52 0 0 2 33 16 0 20 6 0 16 6 52 44 0 1 16 2 48 2 32 18 0 1 11 0 51 49 0 1 2 16 6 52 15 0 2 52 14 0 2 17 7 16 3 52 50 0 1 5 16 7 32 184 0 16 0 1 51 0 52 0 0 2 33 151 0 20 2 0 20 3 0 16 1 1 5 0 52 4 0 2 16 2 48 2 48 1 17 3 20 2 0 20 3 0 16 1 1 7 0 52 4 0 2 16 2 48 2 48 1 17 4 1 10 0 17 5 16 1 52 9 0 1 1 10 0 52 52 0 2 17 6 16 3 16 4 52 48 0 2 5 16 6 1 5 0 52 0 0 2 33 18 0 20 6 0 16 1 16 5 52 4 0 2 16 2 48 2 32 32 0 1 11 0 51 16 0 1 1 1 2 16 5 16 5 16 6 52 53 0 2 52 17 0 2 52 15 0 2 52 14 0 2 17 7 16 3 52 50 0 1 5 16 7 32 21 0 20 54 0 20 2 0 20 3 0 16 1 16 2 48 2 48 1 16 2 49 2 50)
:constants (
"="
"if"
"trampoline"
"eval-expr"
"nth"
1
"render-to-html"
2
">"
"len"
3
""
"when"
"not"
"join"
"map"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 52 1 0 2 18 1 49 2 50)
:constants (
"render-to-html"
"nth"))
"range"
"cond"
"eval-cond"
"rest"
"case"
"letrec"
"slice"
"env-extend"
"for-each"
(code :arity 1 :upvalue-count 1
: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 10 0 16 0 52 2 0 1 52 5 0 1 17 1 20 6 0 18 0 16 1 2 49 3 50)
:constants (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"str"
"env-bind!"))
(code :arity 1 :upvalue-count 1
: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 10 0 16 0 52 2 0 1 52 5 0 1 17 1 20 6 0 18 0 16 1 20 7 0 20 8 0 16 0 1 10 0 52 9 0 2 18 0 48 2 48 1 49 3 50)
:constants (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"str"
"env-set!"
"trampoline"
"eval-expr"
"nth"
1))
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 20 1 0 16 0 18 0 48 2 49 1 50)
:constants (
"trampoline"
"eval-expr"))
"init"
"last"
"let"
"let*"
"process-bindings"
"begin"
"do"
"definition-form?"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 52 0 0 1 33 18 0 20 1 0 18 0 16 0 52 2 0 1 18 1 49 3 32 19 0 20 3 0 18 0 16 0 52 2 0 1 52 4 0 2 18 1 49 2 50)
:constants (
"lambda?"
"render-lambda-html"
"list"
"render-to-html"
"apply"))
"map-indexed"
(code :arity 2 :upvalue-count 2
:bytecode (18 0 52 0 0 1 33 20 0 20 1 0 18 0 16 0 16 1 52 2 0 2 18 1 49 3 32 21 0 20 3 0 18 0 16 0 16 1 52 2 0 2 52 4 0 2 18 1 49 2 50)
:constants (
"lambda?"
"render-lambda-html"
"list"
"render-to-html"
"apply"))
"filter"
"scope"
">="
"type-of"
"first"
"keyword"
"keyword-name"
"value"
"scope-push!"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"scope-pop!"
"provide"
"-"
"+"
"render-value-to-html"))
"render-lambda-html"
(code :arity 3
:bytecode (20 0 0 16 0 52 1 0 1 16 2 48 2 17 3 51 3 0 1 3 1 1 16 0 52 4 0 1 52 2 0 2 5 20 5 0 16 0 52 6 0 1 16 3 49 2 50)
:constants (
"env-merge"
"lambda-closure"
"for-each-indexed"
(code :arity 2 :upvalue-count 2
:bytecode (20 0 0 18 0 16 1 18 1 16 0 52 1 0 2 49 3 50)
:constants (
"env-bind!"
"nth"))
"lambda-params"
"render-to-html"
"lambda-body"))
"render-html-component"
(code :arity 3
:bytecode (52 0 0 0 17 3 52 1 0 0 17 4 51 3 0 1 1 1 2 1 3 1 4 1 4 0 1 5 0 1 6 0 4 52 0 0 4 16 1 52 2 0 3 5 20 7 0 16 0 52 8 0 1 16 2 48 2 17 5 51 10 0 1 5 1 3 16 0 52 11 0 1 52 9 0 2 5 16 0 52 12 0 1 33 35 0 20 13 0 16 5 1 14 0 1 17 0 51 19 0 1 2 16 4 52 18 0 2 52 16 0 2 52 15 0 1 48 3 32 1 0 2 5 20 20 0 16 0 52 21 0 1 16 5 49 2 50)
:constants (
"dict"
"list"
"reduce"
(code :arity 2 :upvalue-count 4
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 2 33 29 0 16 0 1 1 0 4 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 154 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 33 24 0 5 16 0 1 3 0 52 0 0 2 52 4 0 1 18 0 52 9 0 1 52 8 0 2 33 78 0 20 10 0 20 11 0 18 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 12 0 2 18 1 48 2 48 1 17 3 18 2 20 14 0 16 1 48 1 16 3 52 13 0 3 5 16 0 1 1 0 3 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 32 0 20 15 0 18 3 16 1 48 2 5 16 0 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 3 50)
:constants (
"get"
"skip"
"assoc"
"i"
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"trampoline"
"eval-expr"
"nth"
"dict-set!"
"keyword-name"
"append!"))
"i"
0
"skip"
"env-merge"
"component-closure"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 33 11 0 18 1 16 0 52 2 0 2 32 1 0 2 49 3 50)
:constants (
"env-bind!"
"dict-has?"
"dict-get"))
"component-params"
"component-has-children?"
"env-bind!"
"children"
"make-raw-html"
"join"
""
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"render-to-html"
"component-body"))
"render-html-element"
(code :arity 3
:bytecode (20 0 0 16 1 16 2 48 2 17 3 16 3 52 1 0 1 17 4 16 3 1 3 0 52 2 0 2 17 5 20 5 0 16 0 52 4 0 2 17 6 16 6 33 22 0 1 7 0 16 0 20 8 0 16 4 48 1 1 9 0 52 6 0 4 32 83 0 1 11 0 2 52 10 0 2 5 1 13 0 51 15 0 1 2 16 5 52 14 0 2 52 12 0 2 17 7 51 17 0 1 4 1 11 0 52 18 0 1 52 16 0 2 5 1 11 0 52 19 0 1 5 1 7 0 16 0 20 8 0 16 4 48 1 1 20 0 16 7 1 21 0 16 0 1 20 0 52 6 0 8 50)
:constants (
"parse-element-args"
"first"
"nth"
1
"contains?"
"VOID_ELEMENTS"
"str"
"<"
"render-attrs"
" />"
"scope-push!"
"element-attrs"
"join"
""
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"merge-spread-attrs"))
"scope-emitted"
"scope-pop!"
">"
"</"))
"render-html-lake"
(code :arity 2
:bytecode (2 17 2 1 0 0 17 3 52 1 0 0 17 4 51 3 0 1 0 1 1 1 2 1 3 1 4 1 5 0 1 6 0 1 7 0 4 52 4 0 4 16 0 52 2 0 3 5 1 8 0 16 2 6 34 4 0 5 1 9 0 52 4 0 2 17 5 1 11 0 2 52 10 0 2 5 1 9 0 51 14 0 1 1 16 4 52 13 0 2 52 12 0 2 17 6 51 16 0 1 5 1 11 0 52 17 0 1 52 15 0 2 5 1 11 0 52 18 0 1 5 1 20 0 16 3 20 21 0 16 5 48 1 1 22 0 16 6 1 23 0 16 3 1 22 0 52 19 0 8 50)
:constants (
"div"
"list"
"reduce"
(code :arity 2 :upvalue-count 5
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 2 33 29 0 16 0 1 1 0 4 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 187 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 33 24 0 5 16 0 1 3 0 52 0 0 2 52 4 0 1 18 0 52 9 0 1 52 8 0 2 33 111 0 20 10 0 16 1 48 1 17 3 20 11 0 20 12 0 18 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 13 0 2 18 1 48 2 48 1 17 4 16 3 1 14 0 52 5 0 2 33 7 0 16 4 19 2 32 20 0 16 3 1 15 0 52 5 0 2 33 7 0 16 4 19 3 32 1 0 2 5 16 0 1 1 0 3 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 32 0 20 16 0 18 4 16 1 48 2 5 16 0 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 3 50)
:constants (
"get"
"skip"
"assoc"
"i"
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"keyword-name"
"trampoline"
"eval-expr"
"nth"
"id"
"tag"
"append!"))
"dict"
"i"
0
"skip"
"data-sx-lake"
""
"scope-push!"
"element-attrs"
"join"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"merge-spread-attrs"))
"scope-emitted"
"scope-pop!"
"str"
"<"
"render-attrs"
">"
"</"))
"render-html-marsh"
(code :arity 2
:bytecode (2 17 2 1 0 0 17 3 52 1 0 0 17 4 51 3 0 1 0 1 1 1 2 1 3 1 4 1 5 0 1 6 0 1 7 0 4 52 4 0 4 16 0 52 2 0 3 5 1 8 0 16 2 6 34 4 0 5 1 9 0 52 4 0 2 17 5 1 11 0 2 52 10 0 2 5 1 9 0 51 14 0 1 1 16 4 52 13 0 2 52 12 0 2 17 6 51 16 0 1 5 1 11 0 52 17 0 1 52 15 0 2 5 1 11 0 52 18 0 1 5 1 20 0 16 3 20 21 0 16 5 48 1 1 22 0 16 6 1 23 0 16 3 1 22 0 52 19 0 8 50)
:constants (
"div"
"list"
"reduce"
(code :arity 2 :upvalue-count 5
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 2 33 29 0 16 0 1 1 0 4 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 203 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 33 24 0 5 16 0 1 3 0 52 0 0 2 52 4 0 1 18 0 52 9 0 1 52 8 0 2 33 127 0 20 10 0 16 1 48 1 17 3 20 11 0 20 12 0 18 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 13 0 2 18 1 48 2 48 1 17 4 16 3 1 14 0 52 5 0 2 33 7 0 16 4 19 2 32 36 0 16 3 1 15 0 52 5 0 2 33 7 0 16 4 19 3 32 17 0 16 3 1 16 0 52 5 0 2 33 4 0 2 32 1 0 2 5 16 0 1 1 0 3 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 32 0 20 17 0 18 4 16 1 48 2 5 16 0 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 3 50)
:constants (
"get"
"skip"
"assoc"
"i"
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"keyword-name"
"trampoline"
"eval-expr"
"nth"
"id"
"tag"
"transform"
"append!"))
"dict"
"i"
0
"skip"
"data-sx-marsh"
""
"scope-push!"
"element-attrs"
"join"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"merge-spread-attrs"))
"scope-emitted"
"scope-pop!"
"str"
"<"
"render-attrs"
">"
"</"))
"render-html-island"
(code :arity 3
:bytecode (52 0 0 0 17 3 52 1 0 0 17 4 51 3 0 1 1 1 2 1 3 1 4 1 4 0 1 5 0 1 6 0 4 52 0 0 4 16 1 52 2 0 3 5 20 7 0 16 0 52 8 0 1 16 2 48 2 17 5 16 0 52 9 0 1 17 6 51 11 0 1 5 1 3 16 0 52 12 0 1 52 10 0 2 5 16 0 52 13 0 1 33 35 0 20 14 0 16 5 1 15 0 1 18 0 51 20 0 1 2 16 4 52 19 0 2 52 17 0 2 52 16 0 1 48 3 32 1 0 2 5 20 21 0 51 22 0 1 0 1 5 51 23 0 48 2 17 7 20 24 0 16 3 48 1 17 8 1 26 0 20 27 0 16 6 48 1 1 28 0 16 8 33 20 0 1 29 0 20 27 0 16 8 48 1 1 28 0 52 25 0 3 32 3 0 1 18 0 1 30 0 16 7 1 31 0 52 25 0 7 50)
:constants (
"dict"
"list"
"reduce"
(code :arity 2 :upvalue-count 4
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 2 33 29 0 16 0 1 1 0 4 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 154 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 33 24 0 5 16 0 1 3 0 52 0 0 2 52 4 0 1 18 0 52 9 0 1 52 8 0 2 33 78 0 20 10 0 20 11 0 18 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 12 0 2 18 1 48 2 48 1 17 3 18 2 20 14 0 16 1 48 1 16 3 52 13 0 3 5 16 0 1 1 0 3 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 32 0 20 15 0 18 3 16 1 48 2 5 16 0 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 3 50)
:constants (
"get"
"skip"
"assoc"
"i"
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"trampoline"
"eval-expr"
"nth"
"dict-set!"
"keyword-name"
"append!"))
"i"
0
"skip"
"env-merge"
"component-closure"
"component-name"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 33 11 0 18 1 16 0 52 2 0 2 32 1 0 2 49 3 50)
:constants (
"env-bind!"
"dict-has?"
"dict-get"))
"component-params"
"component-has-children?"
"env-bind!"
"children"
"make-raw-html"
"join"
""
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"render-to-html"))
"cek-try"
(code :upvalue-count 2
:bytecode (20 0 0 18 0 52 1 0 1 18 1 49 2 50)
:constants (
"render-to-html"
"component-body"))
(code :arity 1
:bytecode (1 0 0 50)
:constants (
""))
"serialize-island-state"
"str"
"<span data-sx-island=\""
"escape-attr"
"\""
" data-sx-state=\""
">"
"</span>"))
"serialize-island-state"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 4 0 2 32 7 0 20 1 0 16 0 49 1 50)
:constants (
"empty-dict?"
"sx-serialize")))))

View File

@@ -0,0 +1,511 @@
(sxbc 1 "13762a3a91f6b00d"
(code
: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 1 16 0 1 17 0 1 18 0 1 19 0 1 20 0 1 21 0 1 22 0 1 23 0 1 24 0 1 25 0 1 26 0 1 27 0 1 28 0 1 29 0 1 30 0 1 31 0 1 32 0 1 33 0 1 34 0 1 35 0 1 36 0 1 37 0 1 38 0 1 39 0 1 40 0 1 41 0 1 42 0 1 43 0 1 44 0 1 45 0 1 46 0 1 47 0 1 48 0 1 49 0 1 50 0 52 15 0 35 128 14 0 5 1 52 0 1 53 0 1 54 0 1 55 0 1 56 0 1 57 0 1 58 0 52 15 0 7 128 51 0 5 51 60 0 128 59 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 50)
:constants (
"render-to-sx"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 48 2 17 2 16 2 52 2 0 1 1 3 0 52 1 0 2 33 10 0 20 4 0 16 2 49 1 32 27 0 16 2 52 2 0 1 1 5 0 52 1 0 2 33 5 0 16 2 32 6 0 16 2 52 6 0 1 50)
:constants (
"aser"
"="
"type-of"
"sx-expr"
"sx-expr-source"
"string"
"serialize"))
"aser"
(code :arity 2
:bytecode (20 0 0 3 48 1 5 16 0 52 1 0 1 6 1 2 0 52 3 0 2 33 6 0 5 16 0 32 16 1 6 1 4 0 52 3 0 2 33 6 0 5 16 0 32 255 0 6 1 5 0 52 3 0 2 33 6 0 5 16 0 32 238 0 6 1 6 0 52 3 0 2 33 5 0 5 2 32 222 0 6 1 7 0 52 3 0 2 33 116 0 5 20 8 0 16 0 48 1 17 3 20 9 0 16 1 16 3 48 2 33 12 0 20 10 0 16 1 16 3 48 2 32 79 0 16 3 52 11 0 1 33 9 0 16 3 52 12 0 1 32 61 0 16 3 1 13 0 52 3 0 2 33 4 0 3 32 45 0 16 3 1 14 0 52 3 0 2 33 4 0 4 32 29 0 16 3 1 6 0 52 3 0 2 33 4 0 2 32 13 0 1 17 0 16 3 52 16 0 2 52 15 0 1 32 95 0 6 1 18 0 52 3 0 2 33 11 0 5 20 19 0 16 0 48 1 32 73 0 6 1 20 0 52 3 0 2 33 29 0 5 16 0 52 21 0 1 33 7 0 52 20 0 0 32 9 0 20 22 0 16 0 16 1 48 2 32 33 0 6 1 23 0 52 3 0 2 33 19 0 5 1 25 0 16 0 52 26 0 1 52 24 0 2 5 2 32 3 0 5 16 0 17 2 16 2 52 27 0 1 33 18 0 1 25 0 16 2 52 26 0 1 52 24 0 2 5 2 32 2 0 16 2 50)
:constants (
"set-render-active!"
"type-of"
"number"
"="
"string"
"boolean"
"nil"
"symbol"
"symbol-name"
"env-has?"
"env-get"
"primitive?"
"get-primitive"
"true"
"false"
"error"
"str"
"Undefined symbol: "
"keyword"
"keyword-name"
"list"
"empty?"
"aser-list"
"spread"
"scope-emit!"
"element-attrs"
"spread-attrs"
"spread?"))
"aser-list"
(code :arity 2
:bytecode (16 0 52 0 0 1 17 2 16 0 52 1 0 1 17 3 16 2 52 4 0 1 1 5 0 52 3 0 2 52 2 0 1 33 14 0 51 7 0 1 1 16 0 52 6 0 2 32 136 2 20 8 0 16 2 48 1 17 4 16 4 1 9 0 52 3 0 2 33 12 0 20 10 0 16 3 16 1 49 2 32 103 2 16 4 1 11 0 52 3 0 2 33 15 0 20 12 0 1 11 0 16 3 16 1 49 3 32 76 2 16 4 1 14 0 52 13 0 2 33 196 0 20 15 0 16 1 16 4 48 2 33 12 0 20 16 0 16 1 16 4 48 2 32 1 0 2 17 5 20 15 0 16 1 1 17 0 48 2 33 8 0 20 17 0 48 0 32 1 0 4 17 6 16 5 6 33 7 0 5 16 5 52 18 0 1 33 21 0 20 19 0 20 20 0 16 5 16 3 16 1 48 3 16 1 49 2 32 105 0 16 5 6 33 71 0 5 16 5 52 21 0 1 6 33 60 0 5 16 5 52 22 0 1 52 2 0 1 6 33 45 0 5 16 6 6 34 15 0 5 20 23 0 16 5 48 1 1 24 0 52 3 0 2 6 33 19 0 5 20 23 0 16 5 48 1 1 25 0 52 3 0 2 52 2 0 1 33 14 0 20 26 0 16 5 16 3 16 1 49 3 32 11 0 20 12 0 16 4 16 3 16 1 49 3 32 124 1 16 4 1 27 0 52 3 0 2 33 14 0 20 12 0 16 4 16 3 16 1 49 3 32 98 1 16 4 1 28 0 52 3 0 2 33 14 0 20 12 0 16 4 16 3 16 1 49 3 32 72 1 20 30 0 16 4 52 29 0 2 33 14 0 20 12 0 16 4 16 3 16 1 49 3 32 46 1 20 31 0 16 4 48 1 6 34 8 0 5 20 32 0 16 4 48 1 33 14 0 20 33 0 16 4 16 0 16 1 49 3 32 10 1 20 15 0 16 1 16 4 48 2 6 33 14 0 5 20 16 0 16 1 16 4 48 2 52 18 0 1 33 28 0 20 19 0 20 20 0 20 16 0 16 1 16 4 48 2 16 3 16 1 48 3 16 1 49 2 32 208 0 20 34 0 20 35 0 16 2 16 1 48 2 48 1 17 5 51 36 0 1 1 16 3 52 6 0 2 17 6 20 37 0 16 5 48 1 6 33 41 0 5 16 5 52 38 0 1 52 2 0 1 6 33 26 0 5 16 5 52 21 0 1 52 2 0 1 6 33 11 0 5 16 5 52 22 0 1 52 2 0 1 33 11 0 16 5 16 6 52 39 0 2 32 113 0 16 5 52 38 0 1 33 19 0 20 34 0 20 40 0 16 5 16 6 16 1 48 3 49 1 32 85 0 16 5 52 21 0 1 33 25 0 20 12 0 1 14 0 16 5 52 42 0 1 52 41 0 2 16 3 16 1 49 3 32 51 0 16 5 52 22 0 1 33 25 0 20 12 0 1 14 0 16 5 52 42 0 1 52 41 0 2 16 3 16 1 49 3 32 17 0 1 44 0 16 5 52 45 0 1 52 41 0 2 52 43 0 1 50)
:constants (
"first"
"rest"
"not"
"="
"type-of"
"symbol"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"aser"))
"symbol-name"
"<>"
"aser-fragment"
"raw!"
"aser-call"
"starts-with?"
"~"
"env-has?"
"env-get"
"expand-components?"
"macro?"
"aser"
"expand-macro"
"component?"
"island?"
"component-affinity"
"server"
"client"
"aser-expand-component"
"lake"
"marsh"
"contains?"
"HTML_TAGS"
"special-form?"
"ho-form?"
"aser-special"
"trampoline"
"eval-expr"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 20 1 0 16 0 18 0 48 2 49 1 50)
:constants (
"trampoline"
"eval-expr"))
"callable?"
"lambda?"
"apply"
"call-lambda"
"str"
"component-name"
"error"
"Not callable: "
"inspect"))
"aser-reserialize"
(code :arity 1
:bytecode (16 0 52 2 0 1 1 3 0 52 1 0 2 52 0 0 1 33 9 0 16 0 52 4 0 1 32 122 0 16 0 52 5 0 1 33 6 0 1 6 0 32 107 0 16 0 52 7 0 1 17 1 16 1 52 2 0 1 1 8 0 52 1 0 2 52 0 0 1 33 9 0 16 0 52 4 0 1 32 70 0 20 9 0 16 1 48 1 17 2 16 2 52 3 0 1 17 3 16 0 52 10 0 1 17 4 4 17 5 1 11 0 17 6 51 13 0 1 5 1 6 1 4 1 3 16 4 52 12 0 2 5 1 15 0 1 17 0 16 3 52 16 0 2 1 18 0 52 14 0 3 50)
:constants (
"not"
"="
"type-of"
"list"
"serialize"
"empty?"
"()"
"first"
"symbol"
"symbol-name"
"rest"
0
"for-each"
(code :arity 1 :upvalue-count 4
:bytecode (18 0 33 15 0 4 19 0 5 18 1 52 0 0 1 19 1 32 116 1 16 0 52 2 0 1 1 3 0 52 1 0 2 6 33 17 1 5 18 1 52 0 0 1 18 2 52 5 0 1 52 4 0 2 6 33 252 0 5 16 0 1 8 0 52 7 0 2 52 6 0 1 6 33 234 0 5 16 0 1 10 0 52 9 0 2 6 34 220 0 5 16 0 1 11 0 52 9 0 2 6 34 206 0 5 16 0 1 12 0 52 9 0 2 6 34 192 0 5 16 0 1 13 0 52 9 0 2 6 34 178 0 5 16 0 1 14 0 52 9 0 2 6 34 164 0 5 16 0 1 15 0 52 9 0 2 6 34 150 0 5 16 0 1 16 0 52 9 0 2 6 34 136 0 5 16 0 1 17 0 52 9 0 2 6 34 122 0 5 16 0 1 18 0 52 9 0 2 6 34 108 0 5 16 0 1 19 0 52 9 0 2 6 34 94 0 5 16 0 1 20 0 52 9 0 2 6 34 80 0 5 16 0 1 21 0 52 9 0 2 6 34 66 0 5 16 0 1 22 0 52 9 0 2 6 34 52 0 5 16 0 1 23 0 52 9 0 2 6 34 38 0 5 16 0 1 24 0 52 9 0 2 6 34 24 0 5 16 0 1 25 0 52 9 0 2 6 34 10 0 5 16 0 1 26 0 52 9 0 2 33 56 0 20 27 0 18 3 1 29 0 16 0 52 28 0 2 48 2 5 20 27 0 18 3 18 2 18 1 52 0 0 1 52 31 0 2 52 30 0 1 48 2 5 3 19 0 5 18 1 52 0 0 1 19 1 32 23 0 20 27 0 18 3 20 32 0 16 0 48 1 48 2 5 18 1 52 0 0 1 19 1 50)
:constants (
"inc"
"="
"type-of"
"string"
"<"
"len"
"not"
"contains?"
" "
"starts-with?"
"class"
"id"
"sx-"
"data-"
"style"
"href"
"src"
"type"
"name"
"value"
"placeholder"
"action"
"method"
"target"
"role"
"for"
"on"
"append!"
"str"
":"
"serialize"
"nth"
"aser-reserialize"))
"str"
"("
"join"
" "
")"))
"aser-fragment"
(code :arity 2
:bytecode (52 0 0 0 17 2 51 2 0 1 1 1 2 16 0 52 1 0 2 5 16 2 52 3 0 1 33 6 0 1 4 0 32 54 0 16 2 52 6 0 1 1 7 0 52 5 0 2 33 14 0 20 8 0 16 2 52 9 0 1 49 1 32 24 0 20 8 0 1 11 0 1 13 0 16 2 52 12 0 2 1 14 0 52 10 0 3 49 1 50)
:constants (
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 0 48 2 17 1 16 1 52 1 0 1 33 4 0 2 32 76 0 16 1 52 3 0 1 1 4 0 52 2 0 2 33 17 0 20 5 0 18 1 20 6 0 16 1 48 1 49 2 32 43 0 16 1 52 3 0 1 1 7 0 52 2 0 2 33 14 0 51 9 0 0 1 16 1 52 8 0 2 32 13 0 20 5 0 18 1 16 1 52 10 0 1 49 2 50)
:constants (
"aser"
"nil?"
"="
"type-of"
"sx-expr"
"append!"
"sx-expr-source"
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 52 1 0 1 52 0 0 1 33 50 0 16 0 52 3 0 1 1 4 0 52 2 0 2 33 17 0 20 5 0 18 0 20 6 0 16 0 48 1 49 2 32 14 0 20 5 0 18 0 20 7 0 16 0 48 1 49 2 32 1 0 2 50)
:constants (
"not"
"nil?"
"="
"type-of"
"sx-expr"
"append!"
"sx-expr-source"
"aser-reserialize"))
"serialize"))
"empty?"
""
"="
"len"
1
"make-sx-expr"
"first"
"str"
"(<> "
"join"
" "
")"))
"aser-call"
(code :arity 3
:bytecode (52 0 0 0 17 3 52 0 0 0 17 4 4 17 5 1 1 0 17 6 1 3 0 2 52 2 0 2 5 51 5 0 1 5 1 6 1 1 1 2 1 3 1 4 16 1 52 4 0 2 5 51 6 0 1 3 1 3 0 52 7 0 1 52 4 0 2 5 1 3 0 52 8 0 1 5 16 0 52 0 0 1 16 3 16 4 52 9 0 3 17 7 20 10 0 1 12 0 1 14 0 16 7 52 13 0 2 1 15 0 52 11 0 3 49 1 50)
:constants (
"list"
0
"scope-push!"
"element-attrs"
"for-each"
(code :arity 1 :upvalue-count 6
:bytecode (18 0 33 15 0 4 19 0 5 18 1 52 0 0 1 19 1 32 16 1 16 0 52 2 0 1 1 3 0 52 1 0 2 6 33 17 0 5 18 1 52 0 0 1 18 2 52 5 0 1 52 4 0 2 33 122 0 20 6 0 18 2 18 1 52 0 0 1 52 7 0 2 18 3 48 2 17 1 16 1 52 9 0 1 52 8 0 1 33 71 0 20 10 0 18 4 1 12 0 20 13 0 16 0 48 1 52 11 0 2 48 2 5 16 1 52 2 0 1 1 14 0 52 1 0 2 33 17 0 20 10 0 18 4 20 15 0 16 1 48 1 48 2 32 13 0 20 10 0 18 4 16 1 52 16 0 1 48 2 32 1 0 2 5 3 19 0 5 18 1 52 0 0 1 19 1 32 113 0 20 6 0 16 0 18 3 48 2 17 1 16 1 52 9 0 1 52 8 0 1 33 79 0 16 1 52 2 0 1 1 14 0 52 1 0 2 33 17 0 20 10 0 18 5 20 15 0 16 1 48 1 48 2 32 43 0 16 1 52 2 0 1 1 17 0 52 1 0 2 33 14 0 51 19 0 0 5 16 1 52 18 0 2 32 13 0 20 10 0 18 5 16 1 52 16 0 1 48 2 32 1 0 2 5 18 1 52 0 0 1 19 1 50)
:constants (
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"aser"
"nth"
"not"
"nil?"
"append!"
"str"
":"
"keyword-name"
"sx-expr"
"sx-expr-source"
"serialize"
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 52 1 0 1 52 0 0 1 33 49 0 16 0 52 3 0 1 1 4 0 52 2 0 2 33 17 0 20 5 0 18 0 20 6 0 16 0 48 1 49 2 32 13 0 20 5 0 18 0 16 0 52 7 0 1 49 2 32 1 0 2 50)
:constants (
"not"
"nil?"
"="
"type-of"
"sx-expr"
"append!"
"sx-expr-source"
"serialize"))))
(code :arity 1 :upvalue-count 1
:bytecode (51 1 0 1 0 0 0 16 0 52 2 0 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 52 0 0 2 17 1 20 1 0 18 1 1 3 0 16 0 52 2 0 2 48 2 5 20 1 0 18 1 16 1 52 4 0 1 49 2 50)
:constants (
"dict-get"
"append!"
"str"
":"
"serialize"))
"keys"))
"scope-peek"
"scope-pop!"
"concat"
"make-sx-expr"
"str"
"("
"join"
" "
")"))
"aser-expand-component"
(code :arity 3
:bytecode (16 0 52 0 0 1 17 3 20 1 0 16 2 16 0 52 2 0 1 48 2 17 4 1 3 0 17 5 4 17 6 52 4 0 0 17 7 51 6 0 1 4 16 3 52 5 0 2 5 51 7 0 1 6 1 5 1 1 1 4 1 2 1 7 16 1 52 5 0 2 5 20 8 0 16 0 48 1 33 53 0 51 10 0 1 2 16 7 52 9 0 2 17 8 20 11 0 16 4 1 12 0 16 8 52 14 0 1 1 15 0 52 13 0 2 33 9 0 16 8 52 16 0 1 32 2 0 16 8 48 3 32 1 0 2 5 20 17 0 16 0 52 18 0 1 16 4 49 2 50)
:constants (
"component-params"
"env-merge"
"component-closure"
0
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 2 49 3 50)
:constants (
"env-bind!"))
(code :arity 1 :upvalue-count 6
:bytecode (18 0 33 15 0 4 19 0 5 18 1 52 0 0 1 19 1 32 104 0 16 0 52 2 0 1 1 3 0 52 1 0 2 6 33 17 0 5 18 1 52 0 0 1 18 2 52 5 0 1 52 4 0 2 33 49 0 20 6 0 18 3 20 7 0 16 0 48 1 20 8 0 18 2 18 1 52 0 0 1 52 9 0 2 18 4 48 2 48 3 5 3 19 0 5 18 1 52 0 0 1 19 1 32 18 0 20 10 0 18 5 16 0 48 2 5 18 1 52 0 0 1 19 1 50)
:constants (
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"env-bind!"
"keyword-name"
"aser"
"nth"
"append!"))
"component-has-children"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"aser"))
"env-bind!"
"children"
"="
"len"
1
"first"
"aser"
"component-body"))
"SPECIAL_FORM_NAMES"
"list"
"if"
"when"
"cond"
"case"
"and"
"or"
"let"
"let*"
"lambda"
"fn"
"define"
"defcomp"
"defmacro"
"defstyle"
"defhandler"
"defpage"
"defquery"
"defaction"
"defrelation"
"begin"
"do"
"quote"
"quasiquote"
"->"
"set!"
"letrec"
"dynamic-wind"
"defisland"
"deftype"
"defeffect"
"scope"
"provide"
"context"
"emit!"
"emitted"
"HO_FORM_NAMES"
"map"
"map-indexed"
"filter"
"reduce"
"some"
"every?"
"for-each"
"special-form?"
(code :arity 1
:bytecode (20 1 0 16 0 52 0 0 2 50)
:constants (
"contains?"
"SPECIAL_FORM_NAMES"))
"ho-form?"
(code :arity 1
:bytecode (20 1 0 16 0 52 0 0 2 50)
:constants (
"contains?"
"HO_FORM_NAMES"))
"aser-special"
(code :arity 3
:bytecode (16 1 52 0 0 1 17 3 16 0 1 2 0 52 1 0 2 33 79 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 33 19 0 20 6 0 16 3 1 8 0 52 7 0 2 16 2 49 2 32 36 0 16 3 52 10 0 1 1 11 0 52 9 0 2 33 19 0 20 6 0 16 3 1 11 0 52 7 0 2 16 2 49 2 32 1 0 2 32 34 5 16 0 1 12 0 52 1 0 2 33 55 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 52 13 0 1 33 4 0 2 32 23 0 2 17 4 51 15 0 1 4 1 2 16 3 52 0 0 1 52 14 0 2 5 16 4 32 223 4 16 0 1 16 0 52 1 0 2 33 32 0 20 17 0 16 3 16 2 48 2 17 4 16 4 33 12 0 20 6 0 16 4 16 2 49 2 32 1 0 2 32 179 4 16 0 1 18 0 52 1 0 2 33 42 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 16 3 52 0 0 1 17 5 20 19 0 16 4 16 5 16 2 49 3 32 125 4 16 0 1 20 0 52 1 0 2 6 34 10 0 5 16 0 1 21 0 52 1 0 2 33 41 0 20 22 0 16 3 52 5 0 1 16 2 48 2 17 4 2 17 5 51 15 0 1 5 1 4 16 3 52 0 0 1 52 14 0 2 5 16 5 32 58 4 16 0 1 23 0 52 1 0 2 6 34 10 0 5 16 0 1 24 0 52 1 0 2 33 22 0 2 17 4 51 15 0 1 4 1 2 16 3 52 14 0 2 5 16 4 32 10 4 16 0 1 25 0 52 1 0 2 33 22 0 3 17 4 51 27 0 1 4 1 2 16 3 52 26 0 2 5 16 4 32 232 3 16 0 1 28 0 52 1 0 2 33 22 0 4 17 4 51 29 0 1 4 1 2 16 3 52 26 0 2 5 16 4 32 198 3 16 0 1 30 0 52 1 0 2 33 59 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 17 5 51 31 0 1 4 1 2 16 5 52 30 0 2 32 127 3 16 0 1 32 0 52 1 0 2 33 59 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 17 5 51 33 0 1 4 1 2 16 5 52 32 0 2 32 56 3 16 0 1 14 0 52 1 0 2 33 83 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 17 5 52 34 0 0 17 6 51 35 0 1 4 1 2 1 6 16 5 52 14 0 2 5 16 6 52 36 0 1 33 4 0 2 32 2 0 16 6 32 217 2 16 0 1 37 0 52 1 0 2 33 24 0 20 3 0 20 4 0 16 1 16 2 48 2 48 1 5 16 1 52 38 0 1 32 181 2 16 0 1 39 0 52 1 0 2 6 34 136 0 5 16 0 1 40 0 52 1 0 2 6 34 122 0 5 16 0 1 41 0 52 1 0 2 6 34 108 0 5 16 0 1 42 0 52 1 0 2 6 34 94 0 5 16 0 1 43 0 52 1 0 2 6 34 80 0 5 16 0 1 44 0 52 1 0 2 6 34 66 0 5 16 0 1 45 0 52 1 0 2 6 34 52 0 5 16 0 1 46 0 52 1 0 2 6 34 38 0 5 16 0 1 47 0 52 1 0 2 6 34 24 0 5 16 0 1 48 0 52 1 0 2 6 34 10 0 5 16 0 1 49 0 52 1 0 2 33 19 0 20 3 0 20 4 0 16 1 16 2 48 2 48 1 5 2 32 10 2 16 0 1 50 0 52 1 0 2 33 176 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 16 3 52 0 0 1 17 5 2 17 6 2 17 7 16 5 52 10 0 1 1 11 0 52 51 0 2 6 33 41 0 5 16 5 52 5 0 1 52 52 0 1 1 53 0 52 1 0 2 6 33 19 0 5 20 54 0 16 5 52 5 0 1 48 1 1 55 0 52 1 0 2 33 38 0 20 3 0 20 4 0 16 5 1 8 0 52 7 0 2 16 2 48 2 48 1 17 6 5 16 5 1 11 0 52 56 0 2 17 7 32 4 0 16 5 17 7 5 16 4 16 6 52 57 0 2 5 2 17 8 51 15 0 1 8 1 2 16 7 52 14 0 2 5 16 4 52 58 0 1 5 16 8 32 78 1 16 0 1 59 0 52 1 0 2 33 88 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 17 5 2 17 6 16 4 16 5 52 57 0 2 5 51 15 0 1 6 1 2 16 3 1 11 0 52 56 0 2 52 14 0 2 5 16 4 52 58 0 1 5 16 6 32 234 0 16 0 1 60 0 52 1 0 2 33 90 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 16 3 52 10 0 1 1 11 0 52 51 0 2 33 24 0 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 32 1 0 2 17 5 16 4 52 61 0 1 17 6 16 6 52 62 0 1 33 5 0 16 5 32 2 0 16 6 32 132 0 16 0 1 63 0 52 1 0 2 33 56 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 20 3 0 20 4 0 16 3 1 8 0 52 7 0 2 16 2 48 2 48 1 17 5 16 4 16 5 52 64 0 2 5 2 32 64 0 16 0 1 65 0 52 1 0 2 33 38 0 20 3 0 20 4 0 16 3 52 5 0 1 16 2 48 2 48 1 17 4 16 4 52 61 0 1 6 34 5 0 5 52 34 0 0 32 14 0 20 3 0 20 4 0 16 1 16 2 48 2 49 1 50)
:constants (
"rest"
"="
"if"
"trampoline"
"eval-expr"
"first"
"aser"
"nth"
1
">"
"len"
2
"when"
"not"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 1 48 2 19 0 50)
:constants (
"aser"))
"cond"
"eval-cond"
"case"
"eval-case-aser"
"let"
"let*"
"process-bindings"
"begin"
"do"
"and"
"some"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 20 1 0 16 0 18 1 48 2 48 1 19 0 5 18 0 52 2 0 1 50)
:constants (
"trampoline"
"eval-expr"
"not"))
"or"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 20 1 0 16 0 18 1 48 2 48 1 19 0 5 18 0 50)
:constants (
"trampoline"
"eval-expr"))
"map"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 52 0 0 1 33 51 0 20 1 0 18 0 52 2 0 1 18 1 48 2 17 1 20 3 0 16 1 18 0 52 5 0 1 52 4 0 1 16 0 48 3 5 20 6 0 18 0 52 7 0 1 16 1 49 2 32 13 0 20 8 0 18 0 16 0 52 9 0 1 49 2 50)
:constants (
"lambda?"
"env-merge"
"lambda-closure"
"env-bind!"
"first"
"lambda-params"
"aser"
"lambda-body"
"cek-call"
"list"))
"map-indexed"
(code :arity 2 :upvalue-count 2
:bytecode (18 0 52 0 0 1 33 74 0 20 1 0 18 0 52 2 0 1 18 1 48 2 17 2 20 3 0 16 2 18 0 52 5 0 1 52 4 0 1 16 0 48 3 5 20 3 0 16 2 18 0 52 5 0 1 1 7 0 52 6 0 2 16 1 48 3 5 20 8 0 18 0 52 9 0 1 16 2 49 2 32 15 0 20 10 0 18 0 16 0 16 1 52 11 0 2 49 2 50)
:constants (
"lambda?"
"env-merge"
"lambda-closure"
"env-bind!"
"first"
"lambda-params"
"nth"
1
"aser"
"lambda-body"
"cek-call"
"list"))
"list"
(code :arity 1 :upvalue-count 3
:bytecode (18 0 52 0 0 1 33 58 0 20 1 0 18 0 52 2 0 1 18 1 48 2 17 1 20 3 0 16 1 18 0 52 5 0 1 52 4 0 1 16 0 48 3 5 20 6 0 18 2 20 7 0 18 0 52 8 0 1 16 1 48 2 49 2 32 13 0 20 9 0 18 0 16 0 52 10 0 1 49 2 50)
:constants (
"lambda?"
"env-merge"
"lambda-closure"
"env-bind!"
"first"
"lambda-params"
"append!"
"aser"
"lambda-body"
"cek-call"
"list"))
"empty?"
"defisland"
"serialize"
"define"
"defcomp"
"defmacro"
"defstyle"
"defhandler"
"defpage"
"defquery"
"defaction"
"defrelation"
"deftype"
"defeffect"
"scope"
">="
"type-of"
"keyword"
"keyword-name"
"value"
"slice"
"scope-push!"
"scope-pop!"
"provide"
"context"
"scope-peek"
"nil?"
"emit!"
"scope-emit!"
"emitted"))
"eval-case-aser"
(code :arity 3
:bytecode (16 1 52 1 0 1 1 2 0 52 0 0 2 33 4 0 2 32 175 0 16 1 52 3 0 1 17 3 16 1 1 5 0 52 4 0 2 17 4 16 3 52 7 0 1 1 8 0 52 6 0 2 6 33 15 0 5 20 9 0 16 3 48 1 1 10 0 52 6 0 2 6 34 52 0 5 16 3 52 7 0 1 1 11 0 52 6 0 2 6 33 34 0 5 20 12 0 16 3 48 1 1 13 0 52 6 0 2 6 34 15 0 5 20 12 0 16 3 48 1 1 10 0 52 6 0 2 33 12 0 20 14 0 16 4 16 2 49 2 32 53 0 16 0 20 15 0 20 16 0 16 3 16 2 48 2 48 1 52 6 0 2 33 12 0 20 14 0 16 4 16 2 49 2 32 18 0 20 17 0 16 0 16 1 1 2 0 52 18 0 2 16 2 49 3 50)
:constants (
"<"
"len"
2
"first"
"nth"
1
"="
"type-of"
"keyword"
"keyword-name"
"else"
"symbol"
"symbol-name"
":else"
"aser"
"trampoline"
"eval-expr"
"eval-case-aser"
"slice")))))

View File

@@ -0,0 +1,817 @@
(sxbc 1 "069ff5bca83eab9f"
(code
:bytecode (1 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 47 0 128 48 0 5 51 50 0 128 49 0 5 51 50 0 128 51 0 5 51 53 0 128 52 0 5 51 55 0 128 54 0 5 51 47 0 128 56 0 5 51 47 0 128 57 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 5 51 83 0 128 82 0 5 51 85 0 128 84 0 5 51 87 0 128 86 0 5 51 89 0 128 88 0 5 51 91 0 128 90 0 5 51 93 0 128 92 0 5 51 95 0 128 94 0 5 51 97 0 128 96 0 5 51 99 0 128 98 0 5 51 101 0 128 100 0 5 51 103 0 128 102 0 5 51 47 0 128 104 0 5 51 106 0 128 105 0 5 51 108 0 128 107 0 5 51 110 0 128 109 0 5 51 112 0 128 111 0 5 51 114 0 128 113 0 5 51 116 0 128 115 0 5 51 118 0 128 117 0 5 51 120 0 128 119 0 5 51 122 0 128 121 0 5 51 50 0 128 123 0 5 51 47 0 128 124 0 5 51 47 0 128 125 0 5 51 27 0 128 126 0 5 51 128 0 128 127 0 5 51 130 0 128 129 0 5 51 132 0 128 131 0 5 51 134 0 128 133 0 5 51 134 0 128 135 0 5 51 134 0 128 136 0 5 51 134 0 128 137 0 5 51 134 0 128 138 0 50)
:constants (
"_sx-bound-prefix"
"_sxBound"
"mark-processed!"
(code :arity 2
:bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 3 49 3 50)
:constants (
"host-set!"
"str"
"_sx-bound-prefix"))
"is-processed?"
(code :arity 2
:bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 48 2 17 2 16 2 33 4 0 3 32 1 0 4 50)
:constants (
"host-get"
"str"
"_sx-bound-prefix"))
"clear-processed!"
(code :arity 2
:bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 2 49 3 50)
:constants (
"host-set!"
"str"
"_sx-bound-prefix"))
"callable?"
(code :arity 1
:bytecode (16 0 52 0 0 1 17 1 16 1 1 2 0 52 1 0 2 6 34 24 0 5 16 1 1 3 0 52 1 0 2 6 34 10 0 5 16 1 1 4 0 52 1 0 2 50)
:constants (
"type-of"
"="
"lambda"
"native-fn"
"continuation"))
"to-kebab"
(code :arity 1
:bytecode (1 0 0 5 52 1 0 0 17 1 1 2 0 17 2 2 17 3 51 3 0 1 0 1 1 1 3 17 3 16 3 1 2 0 48 1 5 1 5 0 16 1 52 4 0 2 50)
:constants (
"Convert camelCase to kebab-case."
"list"
0
(code :arity 1 :upvalue-count 3
:bytecode (16 0 18 0 52 1 0 1 52 0 0 2 33 105 0 18 0 16 0 52 2 0 2 17 1 16 1 1 4 0 52 3 0 2 6 33 10 0 5 16 1 1 6 0 52 5 0 2 33 43 0 16 0 1 8 0 52 7 0 2 33 13 0 20 9 0 18 1 1 10 0 48 2 32 1 0 2 5 20 9 0 18 1 16 1 52 11 0 1 48 2 32 9 0 20 9 0 18 1 16 1 48 2 5 18 2 16 0 1 13 0 52 12 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"len"
"nth"
">="
"A"
"<="
"Z"
">"
0
"append!"
"-"
"lower"
"+"
1))
"join"
""))
"sx-load-components"
(code :arity 1
:bytecode (1 0 0 5 16 0 6 33 14 0 5 16 0 52 2 0 1 1 3 0 52 1 0 2 33 21 0 20 4 0 16 0 48 1 17 1 51 6 0 16 1 52 5 0 2 32 1 0 2 50)
:constants (
"Parse and evaluate component definitions from text."
">"
"len"
0
"sx-parse"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"cek-eval"))))
"call-expr"
(code :arity 2
:bytecode (1 0 0 5 20 1 0 16 0 48 1 17 2 16 2 52 3 0 1 52 2 0 1 33 14 0 20 4 0 16 2 52 5 0 1 49 1 32 1 0 2 50)
:constants (
"Parse and evaluate an SX expression string."
"sx-parse"
"not"
"empty?"
"cek-eval"
"first"))
"base-env"
(code
:bytecode (1 0 0 5 20 1 0 49 0 50)
:constants (
"Return the current global environment."
"global-env"))
"get-render-env"
(code :arity 1
:bytecode (1 0 0 5 20 1 0 48 0 17 1 16 0 6 33 11 0 5 16 0 52 3 0 1 52 2 0 1 33 12 0 20 4 0 16 1 16 0 49 2 32 2 0 16 1 50)
:constants (
"Get the rendering environment (global env, optionally merged with extra)."
"base-env"
"not"
"nil?"
"env-merge"))
"merge-envs"
(code :arity 2
:bytecode (1 0 0 5 16 0 6 33 3 0 5 16 1 33 12 0 20 1 0 16 0 16 1 49 2 32 19 0 16 0 6 34 13 0 5 16 1 6 34 6 0 5 20 2 0 49 0 50)
:constants (
"Merge two environments."
"env-merge"
"global-env"))
"sx-render-with-env"
(code :arity 2
:bytecode (1 0 0 5 20 1 0 1 2 0 48 1 17 2 20 3 0 16 2 1 4 0 48 2 17 3 20 5 0 16 0 48 1 17 4 51 7 0 1 2 1 3 16 4 52 6 0 2 5 16 3 50)
:constants (
"Parse SX source and render to DOM fragment."
"host-global"
"document"
"host-call"
"createDocumentFragment"
"sx-parse"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 14 0 5 16 1 52 2 0 1 1 3 0 52 1 0 2 33 51 0 20 4 0 18 0 1 5 0 1 6 0 48 3 17 2 20 7 0 16 2 1 8 0 16 1 48 3 5 20 4 0 18 1 1 9 0 20 10 0 16 2 1 11 0 48 2 49 3 32 1 0 2 50)
:constants (
"render-to-html"
">"
"len"
0
"host-call"
"createElement"
"template"
"host-set!"
"innerHTML"
"appendChild"
"host-get"
"content"))))
"parse-env-attr"
(code :arity 1
:bytecode (1 0 0 5 2 50)
:constants (
"Parse data-sx-env attribute (JSON key-value pairs)."))
"store-env-attr"
(code :arity 3
:bytecode (2 50)
:constants ())
"resolve-mount-target"
(code :arity 1
:bytecode (1 0 0 5 16 0 52 1 0 1 33 10 0 20 2 0 16 0 49 1 32 2 0 16 0 50)
:constants (
"Resolve a CSS selector string to a DOM element."
"string?"
"dom-query"))
"remove-head-element"
(code :arity 1
:bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 16 1 33 10 0 20 2 0 16 1 49 1 32 1 0 2 50)
:constants (
"Remove a <head> element matching selector."
"dom-query"
"dom-remove"))
"set-sx-comp-cookie"
(code :arity 1
:bytecode (1 1 0 16 0 52 0 0 2 50)
:constants (
"set-cookie"
"sx-components"))
"clear-sx-comp-cookie"
(code
:bytecode (1 1 0 1 2 0 52 0 0 2 50)
:constants (
"set-cookie"
"sx-components"
""))
"log-parse-error"
(code :arity 3
:bytecode (20 0 0 1 2 0 16 0 1 3 0 16 2 52 1 0 4 49 1 50)
:constants (
"log-error"
"str"
"Parse error in "
": "))
"loaded-component-names"
(code
:bytecode (20 0 0 20 1 0 48 0 1 2 0 48 2 17 0 52 3 0 0 17 1 51 5 0 1 1 16 0 52 4 0 2 5 16 1 50)
:constants (
"dom-query-all"
"dom-body"
"script[data-components]"
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 1 16 1 52 4 0 1 1 5 0 52 3 0 2 33 21 0 51 7 0 0 0 16 1 1 9 0 52 8 0 2 52 6 0 2 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-components"
""
">"
"len"
0
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 16 0 20 4 0 18 0 16 0 52 2 0 1 49 2 32 1 0 2 50)
:constants (
">"
"len"
"trim"
0
"append!"))
"split"
","))))
"csrf-token"
(code
:bytecode (20 0 0 1 1 0 48 1 17 0 16 0 33 13 0 20 2 0 16 0 1 3 0 49 2 32 1 0 2 50)
:constants (
"dom-query"
"meta[name=\"csrf-token\"]"
"dom-get-attr"
"content"))
"validate-for-request"
(code :arity 1
:bytecode (3 50)
:constants ())
"build-request-body"
(code :arity 3
:bytecode (16 1 52 0 0 1 17 3 16 3 1 2 0 52 1 0 2 6 34 10 0 5 16 3 1 3 0 52 1 0 2 33 167 0 16 0 6 33 27 0 5 20 4 0 16 0 48 1 6 34 4 0 5 1 5 0 52 0 0 1 1 6 0 52 1 0 2 33 111 0 20 7 0 1 8 0 16 0 48 2 17 4 20 7 0 1 9 0 16 4 48 2 17 5 20 10 0 16 5 1 11 0 48 2 17 6 1 13 0 16 6 6 33 14 0 5 16 6 52 15 0 1 1 16 0 52 14 0 2 33 32 0 16 2 16 2 1 19 0 52 18 0 2 33 6 0 1 20 0 32 3 0 1 19 0 16 6 52 17 0 3 32 2 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 32 17 0 1 13 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 32 173 0 16 0 6 33 27 0 5 20 4 0 16 0 48 1 6 34 4 0 5 1 5 0 52 0 0 1 1 6 0 52 1 0 2 33 120 0 20 23 0 16 0 1 24 0 48 2 6 34 4 0 5 1 25 0 17 4 16 4 1 26 0 52 1 0 2 33 33 0 20 7 0 1 8 0 16 0 48 2 17 5 1 13 0 16 2 1 21 0 16 5 1 22 0 2 52 12 0 6 32 52 0 20 7 0 1 8 0 16 0 48 2 17 5 20 7 0 1 9 0 16 5 48 2 17 6 1 13 0 16 2 1 21 0 20 10 0 16 6 1 11 0 48 2 1 22 0 1 25 0 52 12 0 6 32 17 0 1 13 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 50)
:constants (
"upper"
"="
"GET"
"HEAD"
"dom-tag-name"
""
"FORM"
"host-new"
"FormData"
"URLSearchParams"
"host-call"
"toString"
"dict"
"url"
">"
"len"
0
"str"
"contains?"
"?"
"&"
"body"
"content-type"
"dom-get-attr"
"enctype"
"application/x-www-form-urlencoded"
"multipart/form-data"))
"abort-previous-target"
(code :arity 1
:bytecode (2 50)
:constants ())
"abort-previous"
"track-controller"
(code :arity 2
:bytecode (2 50)
:constants ())
"track-controller-target"
"new-abort-controller"
(code
:bytecode (20 0 0 1 1 0 49 1 50)
:constants (
"host-new"
"AbortController"))
"abort-signal"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"signal"))
"apply-optimistic"
"revert-optimistic"
"dom-has-attr?"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 16 1 49 3 50)
:constants (
"host-call"
"hasAttribute"))
"show-indicator"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 42 0 20 2 0 16 1 48 1 17 2 16 2 33 24 0 20 3 0 16 2 1 4 0 48 2 5 20 5 0 16 2 1 6 0 48 2 32 1 0 2 32 1 0 2 5 16 1 50)
:constants (
"dom-get-attr"
"sx-indicator"
"dom-query"
"dom-remove-class"
"hidden"
"dom-add-class"
"sx-indicator-visible"))
"disable-elements"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 29 0 20 2 0 20 3 0 48 0 16 1 48 2 17 2 51 5 0 16 2 52 4 0 2 5 16 2 32 4 0 52 6 0 0 50)
:constants (
"dom-get-attr"
"sx-disabled-elt"
"dom-query-all"
"dom-body"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 1 2 0 49 3 50)
:constants (
"dom-set-attr"
"disabled"
""))
"list"))
"clear-loading-state"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 48 2 5 20 2 0 16 0 1 3 0 48 2 5 16 1 33 42 0 20 4 0 16 1 48 1 17 3 16 3 33 24 0 20 5 0 16 3 1 6 0 48 2 5 20 0 0 16 3 1 7 0 48 2 32 1 0 2 32 1 0 2 5 16 2 33 12 0 51 9 0 16 2 52 8 0 2 32 1 0 2 50)
:constants (
"dom-remove-class"
"sx-request"
"dom-remove-attr"
"aria-busy"
"dom-query"
"dom-add-class"
"hidden"
"sx-indicator-visible"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"dom-remove-attr"
"disabled"))))
"abort-error?"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 1 3 0 52 0 0 2 50)
:constants (
"="
"host-get"
"name"
"AbortError"))
"promise-catch"
(code :arity 2
:bytecode (20 0 0 16 1 48 1 17 2 20 1 0 16 0 1 2 0 16 2 49 3 50)
:constants (
"host-callback"
"host-call"
"catch"))
"fetch-request"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 17 3 16 0 1 2 0 52 0 0 2 6 34 4 0 5 1 3 0 17 4 16 0 1 4 0 52 0 0 2 6 34 5 0 5 52 5 0 0 17 5 16 0 1 6 0 52 0 0 2 17 6 16 0 1 7 0 52 0 0 2 17 7 16 0 1 8 0 52 0 0 2 17 8 16 8 33 16 0 16 1 3 1 9 0 51 10 0 16 8 49 4 32 139 0 20 11 0 1 12 0 48 1 17 9 20 11 0 1 13 0 48 1 17 10 51 15 0 1 9 1 5 16 5 52 16 0 1 52 14 0 2 5 20 17 0 16 10 1 2 0 16 4 48 3 5 20 17 0 16 10 1 4 0 16 9 48 3 5 16 6 33 15 0 20 17 0 16 10 1 6 0 16 6 48 3 32 1 0 2 5 16 7 33 15 0 20 17 0 16 10 1 7 0 16 7 48 3 32 1 0 2 5 20 18 0 20 19 0 20 20 0 48 0 1 21 0 16 3 16 10 48 4 51 22 0 1 1 1 2 16 2 49 3 50)
:constants (
"get"
"url"
"method"
"GET"
"headers"
"dict"
"body"
"signal"
"preloaded"
200
(code :arity 1
:bytecode (2 50)
:constants ())
"host-new"
"Headers"
"Object"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 1 1 0 16 0 18 1 16 0 52 2 0 2 49 4 50)
:constants (
"host-call"
"set"
"get"))
"keys"
"host-set!"
"promise-then"
"host-call"
"dom-window"
"fetch"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 17 2 51 3 0 1 0 17 3 20 4 0 20 5 0 16 0 1 6 0 48 2 51 7 0 0 0 1 1 1 2 1 3 18 1 49 3 50)
:constants (
"host-get"
"ok"
"status"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 20 1 0 18 0 1 2 0 48 2 1 3 0 16 0 49 3 50)
:constants (
"host-call"
"host-get"
"headers"
"get"))
"promise-then"
"host-call"
"text"
(code :arity 1 :upvalue-count 4
:bytecode (18 0 18 1 18 2 18 3 16 0 49 4 50)
:constants ())))))
"fetch-location"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 6 34 9 0 5 20 0 0 1 2 0 48 1 17 1 16 1 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)
:constants (
"dom-query"
"[sx-boost]"
"#main-panel"
"browser-navigate"))
"fetch-and-restore"
(code :arity 4
:bytecode (20 0 0 1 2 0 16 1 1 3 0 1 4 0 1 5 0 16 2 1 6 0 2 1 7 0 2 52 1 0 10 51 8 0 1 0 1 3 51 9 0 49 3 50)
:constants (
"fetch-request"
"dict"
"url"
"method"
"GET"
"headers"
"body"
"signal"
(code :arity 4 :upvalue-count 2
:bytecode (16 0 33 39 0 20 0 0 18 0 16 3 48 2 5 20 1 0 18 0 48 1 5 20 2 0 20 3 0 48 0 1 4 0 1 5 0 18 1 49 4 32 1 0 2 50)
:constants (
"dom-set-inner-html"
"post-swap"
"host-call"
"dom-window"
"scrollTo"
0))
(code :arity 1
:bytecode (20 0 0 1 2 0 16 0 52 1 0 2 49 1 50)
:constants (
"log-warn"
"str"
"fetch-and-restore error: "))))
"fetch-preload"
(code :arity 3
:bytecode (20 0 0 1 2 0 16 0 1 3 0 1 4 0 1 5 0 16 1 1 6 0 2 1 7 0 2 52 1 0 10 51 8 0 1 2 1 0 51 9 0 49 3 50)
:constants (
"fetch-request"
"dict"
"url"
"method"
"GET"
"headers"
"body"
"signal"
(code :arity 4 :upvalue-count 2
:bytecode (16 0 33 14 0 20 0 0 18 0 18 1 16 3 49 3 32 1 0 2 50)
:constants (
"preload-cache-set"))
(code :arity 1
:bytecode (2 50)
:constants ())))
"fetch-streaming"
(code :arity 4
:bytecode (20 0 0 16 0 16 1 16 2 1 1 0 49 4 50)
:constants (
"fetch-and-restore"
0))
"dom-parse-html-document"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 16 0 1 4 0 49 4 50)
:constants (
"host-new"
"DOMParser"
"host-call"
"parseFromString"
"text/html"))
"dom-body-inner-html"
(code :arity 1
:bytecode (20 0 0 20 0 0 16 0 1 1 0 48 2 1 2 0 49 2 50)
:constants (
"host-get"
"body"
"innerHTML"))
"create-script-clone"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 1 4 0 48 3 17 2 20 5 0 16 0 1 6 0 48 2 17 3 2 17 4 51 7 0 1 3 1 2 1 4 17 4 16 4 1 8 0 48 1 5 20 9 0 16 2 1 10 0 20 5 0 16 0 1 10 0 48 2 48 3 5 16 2 50)
:constants (
"host-global"
"document"
"host-call"
"createElement"
"script"
"host-get"
"attributes"
(code :arity 1 :upvalue-count 3
:bytecode (16 0 20 1 0 18 0 1 2 0 48 2 52 0 0 2 33 61 0 20 3 0 18 0 1 4 0 16 0 48 3 17 1 20 3 0 18 1 1 5 0 20 1 0 16 1 1 6 0 48 2 20 1 0 16 1 1 7 0 48 2 48 4 5 18 2 16 0 1 9 0 52 8 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"host-get"
"length"
"host-call"
"item"
"setAttribute"
"name"
"value"
"+"
1))
0
"host-set!"
"textContent"))
"cross-origin?"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 34 10 0 5 16 0 1 2 0 52 0 0 2 33 18 0 16 0 20 4 0 48 0 52 0 0 2 52 3 0 1 32 1 0 4 50)
:constants (
"starts-with?"
"http://"
"https://"
"not"
"browser-location-origin"))
"browser-scroll-to"
(code :arity 2
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 16 1 49 4 50)
:constants (
"host-call"
"dom-window"
"scrollTo"))
"with-transition"
(code :arity 2
:bytecode (16 0 6 33 17 0 5 20 0 0 20 1 0 1 2 0 48 1 1 3 0 48 2 33 26 0 20 4 0 20 1 0 1 2 0 48 1 1 3 0 20 5 0 16 1 48 1 49 3 32 4 0 16 1 49 0 50)
:constants (
"host-get"
"host-global"
"document"
"startViewTransition"
"host-call"
"host-callback"))
"observe-intersection"
(code :arity 4
:bytecode (20 0 0 51 1 0 1 3 1 1 1 2 1 0 48 1 17 4 20 2 0 1 3 0 20 0 0 51 4 0 1 3 1 1 1 2 1 5 1 0 48 1 48 2 17 5 20 5 0 16 5 1 6 0 16 0 48 3 5 16 5 50)
:constants (
"host-callback"
(code :arity 1 :upvalue-count 4
:bytecode (51 1 0 0 0 0 1 0 2 0 3 20 2 0 16 0 1 3 0 20 4 0 51 5 0 48 1 48 3 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 4
:bytecode (20 0 0 16 0 1 1 0 48 2 33 54 0 18 0 33 17 0 20 2 0 51 3 0 0 1 1 0 18 0 48 2 32 6 0 18 1 16 0 48 1 5 18 2 33 16 0 20 4 0 20 5 0 1 6 0 18 3 49 3 32 1 0 2 32 1 0 2 50)
:constants (
"host-get"
"isIntersecting"
"set-timeout"
(code :upvalue-count 2
:bytecode (18 0 18 1 49 1 50)
:constants ())
"host-call"
"observer"
"unobserve"))
"host-call"
"forEach"
"host-callback"
(code :arity 1
:bytecode (16 0 50)
:constants ())))
"host-new"
"IntersectionObserver"
(code :arity 1 :upvalue-count 5
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 2 17 2 51 2 0 1 1 1 0 0 0 0 1 0 2 0 3 0 4 1 2 17 2 16 2 1 3 0 49 1 50)
:constants (
"host-get"
"length"
(code :arity 1 :upvalue-count 8
:bytecode (16 0 18 0 52 0 0 2 33 105 0 20 1 0 18 1 1 2 0 16 0 48 3 17 1 16 1 6 33 11 0 5 20 3 0 16 1 1 4 0 48 2 33 53 0 18 2 33 17 0 20 5 0 51 6 0 0 3 1 1 18 2 48 2 32 6 0 18 3 16 1 48 1 5 18 4 33 15 0 20 1 0 18 5 1 7 0 18 6 48 3 32 1 0 2 32 1 0 2 5 18 7 16 0 1 9 0 52 8 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"host-call"
"item"
"host-get"
"isIntersecting"
"set-timeout"
(code :upvalue-count 2
:bytecode (18 0 18 1 49 1 50)
:constants ())
"unobserve"
"+"
1))
0))
"host-call"
"observe"))
"event-source-connect"
(code :arity 2
:bytecode (20 0 0 1 1 0 16 0 48 2 17 2 20 2 0 16 2 1 3 0 16 1 48 3 5 16 2 50)
:constants (
"host-new"
"EventSource"
"host-set!"
"_sxElement"))
"event-source-listen"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 16 1 20 2 0 51 3 0 1 2 48 1 49 4 50)
:constants (
"host-call"
"addEventListener"
"host-callback"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 49 1 50)
:constants ())))
"bind-boost-link"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 51 2 0 1 0 1 1 49 3 50)
:constants (
"dom-listen"
"click"
(code :arity 1 :upvalue-count 2
:bytecode (20 1 0 16 0 48 1 52 0 0 1 33 89 0 20 2 0 16 0 48 1 5 20 3 0 18 0 1 4 0 48 2 52 0 0 1 33 15 0 20 5 0 18 0 1 4 0 18 1 48 3 32 1 0 2 5 20 3 0 18 0 1 6 0 48 2 52 0 0 1 33 16 0 20 5 0 18 0 1 6 0 1 7 0 48 3 32 1 0 2 5 20 8 0 18 0 2 2 49 3 32 1 0 2 50)
:constants (
"not"
"event-modifier-key?"
"prevent-default"
"dom-has-attr?"
"sx-get"
"dom-set-attr"
"sx-push-url"
"true"
"execute-request"))))
"bind-boost-form"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 51 2 0 1 0 49 3 50)
:constants (
"dom-listen"
"submit"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 48 1 5 20 1 0 18 0 2 2 49 3 50)
:constants (
"prevent-default"
"execute-request"))))
"bind-client-route-click"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 51 2 0 1 1 1 0 49 3 50)
:constants (
"dom-listen"
"click"
(code :arity 1 :upvalue-count 2
:bytecode (20 1 0 16 0 48 1 52 0 0 1 33 198 0 20 2 0 16 0 48 1 5 20 3 0 1 4 0 48 1 17 1 16 1 33 46 0 20 5 0 16 1 1 6 0 48 2 17 3 16 3 6 33 14 0 5 16 3 1 8 0 52 7 0 2 52 0 0 1 33 5 0 16 3 32 3 0 1 9 0 32 3 0 1 9 0 17 2 20 10 0 20 11 0 18 0 48 1 16 2 48 2 33 26 0 20 12 0 2 1 13 0 18 0 48 3 5 20 14 0 1 15 0 1 15 0 49 2 32 78 0 20 16 0 18 1 1 17 0 48 2 52 0 0 1 33 15 0 20 18 0 18 1 1 17 0 18 0 48 3 32 1 0 2 5 20 16 0 18 1 1 19 0 48 2 52 0 0 1 33 16 0 20 18 0 18 1 1 19 0 1 8 0 48 3 32 1 0 2 5 20 20 0 18 1 2 2 49 3 32 1 0 2 50)
:constants (
"not"
"event-modifier-key?"
"prevent-default"
"dom-query"
"[sx-boost]"
"dom-get-attr"
"sx-boost"
"="
"true"
"#main-panel"
"try-client-route"
"url-pathname"
"browser-push-state"
""
"browser-scroll-to"
0
"dom-has-attr?"
"sx-get"
"dom-set-attr"
"sx-push-url"
"execute-request"))))
"sw-post-message"
"try-parse-json"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"json-parse"))
"strip-component-scripts"
(code :arity 1
:bytecode (16 0 17 1 1 0 0 17 2 1 1 0 17 3 2 17 4 51 2 0 1 2 1 1 1 3 1 4 17 4 16 4 16 1 48 1 5 16 1 50)
:constants (
"<script type=\"text/sx\" data-components>"
"</script>"
(code :arity 1 :upvalue-count 4
:bytecode (16 0 18 0 52 0 0 2 17 1 16 1 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 129 0 16 1 18 0 52 4 0 1 52 3 0 2 17 2 16 0 16 1 18 0 52 4 0 1 52 3 0 2 52 5 0 2 17 3 16 3 18 2 52 0 0 2 17 4 16 4 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 66 0 16 3 1 6 0 16 4 52 5 0 3 17 5 16 0 1 6 0 16 1 52 5 0 3 17 6 16 3 16 4 18 2 52 4 0 1 52 3 0 2 52 5 0 2 17 7 20 7 0 16 5 48 1 5 18 3 16 6 16 7 52 8 0 2 49 1 50)
:constants (
"index-of"
"="
-1
"+"
"len"
"slice"
0
"sx-load-components"
"str"))))
"extract-response-css"
(code :arity 1
:bytecode (16 0 17 1 1 0 0 17 2 1 1 0 17 3 2 17 4 51 2 0 1 2 1 1 1 3 1 4 17 4 16 4 16 1 48 1 5 16 1 50)
:constants (
"<style data-sx-css>"
"</style>"
(code :arity 1 :upvalue-count 4
:bytecode (16 0 18 0 52 0 0 2 17 1 16 1 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 153 0 16 0 16 1 18 0 52 5 0 1 52 4 0 2 52 3 0 2 17 2 16 2 18 2 52 0 0 2 17 3 16 3 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 104 0 16 2 1 6 0 16 3 52 3 0 3 17 4 16 0 1 6 0 16 1 52 3 0 3 17 5 16 2 16 3 18 2 52 5 0 1 52 4 0 2 52 3 0 2 17 6 20 7 0 1 8 0 48 1 17 7 20 9 0 16 7 1 10 0 1 11 0 48 3 17 8 20 12 0 16 8 1 13 0 16 4 48 3 5 20 14 0 16 8 48 1 5 18 3 16 5 16 6 52 15 0 2 49 1 50)
:constants (
"index-of"
"="
-1
"slice"
"+"
"len"
0
"host-global"
"document"
"host-call"
"createElement"
"style"
"host-set!"
"textContent"
"dom-append-to-head"
"str"))))
"sx-render"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 20 4 0 16 0 48 1 17 3 1 6 0 3 52 5 0 2 5 51 8 0 1 2 16 3 52 7 0 2 5 1 6 0 52 9 0 1 5 16 2 50)
:constants (
"host-global"
"document"
"host-call"
"createDocumentFragment"
"sx-parse"
"scope-push!"
"sx-render-markers"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 20 1 0 2 48 1 2 48 3 17 1 16 1 33 12 0 20 2 0 18 0 16 1 49 2 32 1 0 2 50)
:constants (
"render-to-dom"
"get-render-env"
"dom-append"))
"scope-pop!"))
"sx-hydrate"
(code :arity 1
:bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 49 1 50)
:constants (
"sx-hydrate-elements"
"dom-body"))
"sx-process-scripts"
(code :arity 1
:bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 50)
:constants (
"dom-query-all"
"dom-body"
"script[type=\"text/sx\"]"
"for-each"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 71 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 1 5 0 48 2 17 1 16 1 6 33 14 0 5 16 1 52 7 0 1 1 8 0 52 6 0 2 33 21 0 20 9 0 16 1 48 1 17 2 51 11 0 16 2 52 10 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"not"
"is-processed?"
"sx-script"
"mark-processed!"
"host-get"
"textContent"
">"
"len"
0
"sx-parse"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"cek-eval"))))))
"select-from-container"
(code :arity 2
:bytecode (16 1 33 31 0 20 0 0 16 0 16 1 48 2 17 2 16 2 33 5 0 16 2 32 7 0 20 1 0 16 0 49 1 32 7 0 20 1 0 16 0 49 1 50)
:constants (
"dom-query"
"children-to-fragment"))
"children-to-fragment"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 2 17 3 51 4 0 1 0 1 2 1 3 17 3 16 3 48 0 5 16 2 50)
:constants (
"host-global"
"document"
"host-call"
"createDocumentFragment"
(code :upvalue-count 3
:bytecode (20 0 0 18 0 48 1 17 0 16 0 33 17 0 20 1 0 18 1 16 0 48 2 5 18 2 49 0 32 1 0 2 50)
:constants (
"dom-first-child"
"dom-append"))))
"select-html-from-doc"
(code :arity 2
:bytecode (16 1 33 36 0 20 0 0 16 0 16 1 48 2 17 2 16 2 33 10 0 20 1 0 16 2 49 1 32 7 0 20 2 0 16 0 49 1 32 7 0 20 2 0 16 0 49 1 50)
:constants (
"dom-query"
"dom-inner-html"
"dom-body-inner-html"))
"find-matching-route"
"parse-route-pattern"
"register-io-deps"
"resolve-page-data"
"parse-sx-data"
(code :arity 1
:bytecode (16 0 6 33 14 0 5 16 0 52 1 0 1 1 2 0 52 0 0 2 33 35 0 20 3 0 16 0 48 1 17 1 16 1 52 5 0 1 52 4 0 1 33 9 0 16 1 52 6 0 1 32 1 0 2 32 1 0 2 50)
:constants (
">"
"len"
0
"sx-parse"
"not"
"empty?"
"first"))
"try-eval-content"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 16 2 52 1 0 1 33 4 0 2 32 23 0 20 2 0 48 0 17 3 51 4 0 1 1 1 3 16 2 52 3 0 2 5 16 3 50)
:constants (
"sx-parse"
"empty?"
"create-fragment"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 0 2 48 3 17 1 16 1 33 12 0 20 1 0 18 1 16 1 49 2 32 1 0 2 50)
:constants (
"render-to-dom"
"dom-append"))))
"try-async-eval-content"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"try-eval-content"))
"try-rerender-page"
(code
:bytecode (2 50)
:constants ())
"execute-action"
"bind-preload"
"persist-offline-data"
"retrieve-offline-data")))

View File

@@ -0,0 +1,464 @@
(sxbc 1 "8dd29bf7bc354b48"
(code
:bytecode (1 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 52 19 0 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 52 19 0 0 128 32 0 5 52 19 0 0 128 33 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 50)
:constants (
"HEAD_HOIST_SELECTOR"
"meta, title, link[rel='canonical'], script[type='application/ld+json']"
"hoist-head-elements-full"
(code :arity 1
:bytecode (20 0 0 16 0 20 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)
:constants (
"dom-query-all"
"HEAD_HOIST_SELECTOR"
"for-each"
(code :arity 1
:bytecode (20 1 0 16 0 48 1 52 0 0 1 17 1 16 1 1 3 0 52 2 0 2 33 30 0 20 4 0 20 5 0 16 0 48 1 48 1 5 20 6 0 20 7 0 16 0 48 1 16 0 49 2 32 205 0 16 1 1 8 0 52 2 0 2 33 103 0 20 9 0 16 0 1 10 0 48 2 17 2 20 9 0 16 0 1 11 0 48 2 17 3 16 2 33 20 0 20 12 0 1 14 0 16 2 1 15 0 52 13 0 3 48 1 32 1 0 2 5 16 3 33 20 0 20 12 0 1 16 0 16 3 1 15 0 52 13 0 3 48 1 32 1 0 2 5 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 32 90 0 16 1 1 18 0 52 2 0 2 6 33 18 0 5 20 9 0 16 0 1 19 0 48 2 1 20 0 52 2 0 2 33 34 0 20 12 0 1 21 0 48 1 5 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 32 22 0 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 50)
:constants (
"lower"
"dom-tag-name"
"="
"title"
"set-document-title"
"dom-text-content"
"dom-remove-child"
"dom-parent"
"meta"
"dom-get-attr"
"name"
"property"
"remove-head-element"
"str"
"meta[name=\""
"\"]"
"meta[property=\""
"dom-append-to-head"
"link"
"rel"
"canonical"
"link[rel=\"canonical\"]"))))
"sx-mount"
(code :arity 3
:bytecode (20 0 0 16 0 48 1 17 3 16 3 33 90 0 20 2 0 16 3 48 1 52 1 0 1 33 42 0 20 3 0 16 1 16 2 48 2 17 4 20 4 0 16 3 1 5 0 48 2 5 20 6 0 16 3 16 4 48 2 5 20 7 0 16 3 48 1 32 1 0 2 5 20 8 0 16 3 48 1 5 20 9 0 16 3 48 1 5 20 10 0 16 3 48 1 5 20 11 0 49 0 32 1 0 2 50)
:constants (
"resolve-mount-target"
"empty?"
"dom-child-list"
"sx-render-with-env"
"dom-set-text-content"
""
"dom-append"
"hoist-head-elements-full"
"process-elements"
"sx-hydrate-elements"
"sx-hydrate-islands"
"run-post-render-hooks"))
"resolve-suspense"
(code :arity 2
:bytecode (20 0 0 2 48 1 5 20 1 0 1 3 0 16 0 1 4 0 52 2 0 3 48 1 17 2 16 2 33 93 0 20 5 0 16 1 48 1 17 3 20 6 0 2 48 1 17 4 20 7 0 16 2 1 8 0 48 2 5 51 10 0 1 2 1 4 16 3 52 9 0 2 5 20 11 0 16 2 48 1 5 20 12 0 16 2 48 1 5 20 13 0 16 2 48 1 5 20 14 0 48 0 5 20 15 0 16 2 1 16 0 1 17 0 16 0 65 1 0 49 3 32 14 0 20 18 0 1 19 0 16 0 52 2 0 2 49 1 50)
:constants (
"process-sx-scripts"
"dom-query"
"str"
"[data-suspense=\""
"\"]"
"parse"
"get-render-env"
"dom-set-text-content"
""
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 20 1 0 16 0 18 1 2 48 3 49 2 50)
:constants (
"dom-append"
"render-to-dom"))
"process-elements"
"sx-hydrate-elements"
"sx-hydrate-islands"
"run-post-render-hooks"
"dom-dispatch"
"sx:resolved"
"id"
"log-warn"
"resolveSuspense: no element for id="))
"sx-hydrate-elements"
(code :arity 1
:bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 50)
:constants (
"dom-query-all"
"dom-body"
"[data-sx]"
"for-each"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 22 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 2 49 2 32 1 0 2 50)
:constants (
"not"
"is-processed?"
"hydrated"
"mark-processed!"
"sx-update-element"))))
"sx-update-element"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 16 2 33 96 0 20 1 0 16 2 1 2 0 48 2 17 3 16 3 33 75 0 20 3 0 16 2 48 1 17 4 20 4 0 16 4 16 1 48 2 17 5 20 5 0 16 3 16 5 48 2 17 6 20 6 0 16 2 1 7 0 48 2 5 20 8 0 16 2 16 6 48 2 5 16 1 33 14 0 20 9 0 16 2 16 4 16 1 49 3 32 1 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"resolve-mount-target"
"dom-get-attr"
"data-sx"
"parse-env-attr"
"merge-envs"
"sx-render-with-env"
"dom-set-text-content"
""
"dom-append"
"store-env-attr"))
"sx-render-component"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 9 0 1 1 0 16 0 52 2 0 2 17 3 20 3 0 16 2 48 1 17 4 20 4 0 16 4 16 3 48 2 17 5 16 5 52 6 0 1 52 5 0 1 33 16 0 1 8 0 16 3 52 2 0 2 52 7 0 1 32 40 0 16 3 52 10 0 1 52 9 0 1 17 6 51 12 0 1 6 1 1 16 1 52 13 0 1 52 11 0 2 5 20 14 0 16 6 16 4 2 49 3 50)
:constants (
"starts-with?"
"~"
"str"
"get-render-env"
"env-get"
"not"
"component?"
"error"
"Unknown component: "
"list"
"make-symbol"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 20 1 0 20 2 0 16 0 48 1 48 1 48 2 5 20 0 0 18 0 18 1 16 0 52 3 0 2 49 2 50)
:constants (
"append!"
"make-keyword"
"to-kebab"
"dict-get"))
"keys"
"render-to-dom"))
"process-sx-scripts"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 51 2 0 16 1 52 1 0 2 50)
:constants (
"query-sx-scripts"
"for-each"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 173 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 48 1 17 1 20 5 0 16 0 1 6 0 48 2 33 12 0 20 7 0 16 0 16 1 49 2 32 125 0 16 1 52 8 0 1 6 34 11 0 5 16 1 52 10 0 1 52 9 0 1 33 4 0 2 32 97 0 20 5 0 16 0 1 11 0 48 2 33 21 0 20 12 0 16 1 48 1 17 2 51 14 0 16 2 52 13 0 2 32 63 0 20 5 0 16 0 1 15 0 48 2 33 43 0 20 16 0 16 0 1 15 0 48 2 17 2 20 17 0 16 2 48 1 17 3 16 3 33 13 0 20 18 0 16 3 16 1 2 49 3 32 1 0 2 32 7 0 20 19 0 16 1 49 1 32 1 0 2 50)
:constants (
"not"
"is-processed?"
"script"
"mark-processed!"
"dom-text-content"
"dom-has-attr?"
"data-components"
"process-component-script"
"nil?"
"empty?"
"trim"
"data-init"
"sx-parse"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"cek-eval"))
"data-mount"
"dom-get-attr"
"dom-query"
"sx-mount"
"sx-load-components"))))
"process-component-script"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 17 2 16 2 52 2 0 1 33 38 0 16 1 6 33 15 0 5 16 1 52 5 0 1 52 4 0 1 52 3 0 1 33 10 0 20 6 0 16 1 49 1 32 1 0 2 32 239 0 16 1 6 33 15 0 5 16 1 52 5 0 1 52 4 0 1 52 3 0 1 17 3 20 7 0 1 8 0 48 1 17 4 16 4 16 2 52 9 0 2 33 103 0 16 3 33 41 0 20 10 0 1 8 0 16 2 48 2 5 20 10 0 1 11 0 16 1 48 2 5 20 6 0 16 1 48 1 5 20 12 0 1 13 0 48 1 32 54 0 20 7 0 1 11 0 48 1 17 5 16 5 33 28 0 20 6 0 16 5 48 1 5 20 12 0 1 15 0 16 2 1 16 0 52 14 0 3 48 1 32 11 0 20 17 0 48 0 5 20 18 0 48 0 32 84 0 16 3 33 50 0 20 10 0 1 8 0 16 2 48 2 5 20 10 0 1 11 0 16 1 48 2 5 20 6 0 16 1 48 1 5 20 12 0 1 19 0 16 2 1 16 0 52 14 0 3 48 1 32 29 0 20 20 0 1 8 0 48 1 5 20 20 0 1 11 0 48 1 5 20 17 0 48 0 5 20 18 0 48 0 5 20 21 0 16 2 49 1 50)
:constants (
"dom-get-attr"
"data-hash"
"nil?"
"not"
"empty?"
"trim"
"sx-load-components"
"local-storage-get"
"sx-components-hash"
"="
"local-storage-set"
"sx-components-src"
"log-info"
"components: downloaded (cookie stale)"
"str"
"components: cached ("
")"
"clear-sx-comp-cookie"
"browser-reload"
"components: downloaded ("
"local-storage-remove"
"set-sx-comp-cookie"))
"_page-routes"
"list"
"process-page-scripts"
(code
:bytecode (20 0 0 48 0 17 0 20 1 0 1 3 0 16 0 52 4 0 1 1 5 0 52 2 0 3 48 1 5 51 7 0 16 0 52 6 0 2 5 20 1 0 1 8 0 20 9 0 52 4 0 1 1 10 0 52 2 0 3 49 1 50)
:constants (
"query-page-scripts"
"log-info"
"str"
"pages: found "
"len"
" script tags"
"for-each"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 128 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 48 1 17 1 20 5 0 1 7 0 16 1 33 9 0 16 1 52 8 0 1 32 3 0 1 9 0 52 6 0 2 48 1 5 16 1 6 33 15 0 5 16 1 52 11 0 1 52 10 0 1 52 0 0 1 33 43 0 20 12 0 16 1 48 1 17 2 20 5 0 1 13 0 16 2 52 8 0 1 1 14 0 52 6 0 3 48 1 5 51 16 0 16 2 52 15 0 2 32 8 0 20 17 0 1 18 0 49 1 32 1 0 2 50)
:constants (
"not"
"is-processed?"
"pages"
"mark-processed!"
"dom-text-content"
"log-info"
"str"
"pages: script text length="
"len"
0
"empty?"
"trim"
"parse"
"pages: parsed "
" entries"
"for-each"
(code :arity 1
:bytecode (20 0 0 20 1 0 16 0 1 3 0 20 4 0 16 0 1 6 0 52 5 0 2 48 1 65 1 0 52 2 0 2 49 2 50)
:constants (
"append!"
"_page-routes"
"merge"
"parsed"
"parse-route-pattern"
"get"
"path"))
"log-warn"
"pages: script tag is empty"))
"pages: "
"_page-routes"
" routes loaded"))
"sx-hydrate-islands"
(code :arity 1
:bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 20 3 0 1 5 0 16 1 52 6 0 1 1 7 0 16 0 33 6 0 1 8 0 32 3 0 1 9 0 52 4 0 4 48 1 5 51 11 0 16 1 52 10 0 2 50)
:constants (
"dom-query-all"
"dom-body"
"[data-sx-island]"
"log-info"
"str"
"sx-hydrate-islands: "
"len"
" island(s) in "
"subtree"
"document"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 33 25 0 20 2 0 1 4 0 20 5 0 16 0 1 6 0 48 2 52 3 0 2 49 1 32 41 0 20 2 0 1 7 0 20 5 0 16 0 1 6 0 48 2 52 3 0 2 48 1 5 20 8 0 16 0 1 1 0 48 2 5 20 9 0 16 0 49 1 50)
:constants (
"is-processed?"
"island-hydrated"
"log-info"
"str"
" skip (already hydrated): "
"dom-get-attr"
"data-sx-island"
" hydrating: "
"mark-processed!"
"hydrate-island"))))
"hydrate-island"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 6 34 4 0 5 1 3 0 17 2 1 5 0 16 1 52 4 0 2 17 3 20 6 0 2 48 1 17 4 20 7 0 16 4 16 3 48 2 17 5 16 5 52 9 0 1 6 34 7 0 5 16 5 52 10 0 1 52 8 0 1 33 17 0 20 11 0 1 12 0 16 3 52 4 0 2 49 1 32 149 0 20 14 0 16 2 48 1 52 13 0 1 6 34 4 0 5 65 0 0 17 6 52 15 0 0 17 7 20 16 0 16 5 52 17 0 1 16 4 48 2 17 8 51 19 0 1 8 1 6 16 5 52 20 0 1 52 18 0 2 5 20 21 0 51 22 0 1 7 1 5 1 8 51 23 0 1 3 48 2 17 9 20 24 0 16 0 1 25 0 48 2 5 20 26 0 16 0 16 9 48 2 5 20 27 0 16 0 1 28 0 16 7 48 3 5 20 29 0 16 0 48 1 5 20 30 0 1 31 0 16 3 1 32 0 16 7 52 33 0 1 1 34 0 52 4 0 5 49 1 50)
:constants (
"dom-get-attr"
"data-sx-island"
"data-sx-state"
"{}"
"str"
"~"
"get-render-env"
"env-get"
"not"
"component?"
"island?"
"log-warn"
"hydrate-island: unknown island "
"first"
"sx-parse"
"list"
"env-merge"
"component-closure"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 33 11 0 18 1 16 0 52 2 0 2 32 1 0 2 49 3 50)
:constants (
"env-bind!"
"dict-has?"
"dict-get"))
"component-params"
"cek-try"
(code :upvalue-count 3
:bytecode (20 0 0 51 1 0 0 0 51 2 0 0 1 0 2 49 2 50)
:constants (
"with-island-scope"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"append!"))
(code :upvalue-count 2
:bytecode (20 0 0 18 0 52 1 0 1 18 1 2 49 3 50)
:constants (
"render-to-dom"
"component-body"))))
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 1 2 0 18 0 1 3 0 16 0 52 1 0 4 48 1 5 20 4 0 1 5 0 2 48 2 17 1 20 6 0 16 1 1 7 0 1 8 0 48 3 5 20 6 0 16 1 1 9 0 1 10 0 48 3 5 20 11 0 16 1 1 12 0 18 0 1 13 0 16 0 52 1 0 4 48 2 5 16 1 50)
:constants (
"log-warn"
"str"
"hydrate-island FAILED: "
" — "
"dom-create-element"
"div"
"dom-set-attr"
"class"
"sx-island-error"
"style"
"padding:8px;margin:4px 0;border:1px solid #ef4444;border-radius:4px;background:#fef2f2;color:#b91c1c;font-family:monospace;font-size:12px;white-space:pre-wrap"
"dom-set-text-content"
"Island error: "
"
"))
"dom-set-text-content"
""
"dom-append"
"dom-set-data"
"sx-disposers"
"process-elements"
"log-info"
"hydrated island: "
" ("
"len"
" disposers)"))
"dispose-island"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 24 0 51 3 0 16 1 52 2 0 2 5 20 4 0 16 0 1 1 0 2 48 3 32 1 0 2 5 20 5 0 16 0 1 6 0 49 2 50)
:constants (
"dom-get-data"
"sx-disposers"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 33 7 0 16 0 49 0 32 1 0 2 50)
:constants (
"callable?"))
"dom-set-data"
"clear-processed!"
"island-hydrated"))
"dispose-islands-in"
(code :arity 1
:bytecode (16 0 33 98 0 20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 62 0 51 5 0 16 1 52 4 0 2 17 2 16 2 52 3 0 1 52 2 0 1 33 34 0 20 6 0 1 8 0 16 2 52 9 0 1 1 10 0 52 7 0 3 48 1 5 20 12 0 16 2 52 11 0 2 32 1 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"dom-query-all"
"[data-sx-island]"
"not"
"empty?"
"filter"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 50)
:constants (
"not"
"is-processed?"
"island-hydrated"))
"log-info"
"str"
"disposing "
"len"
" island(s)"
"for-each"
"dispose-island"))
"force-dispose-islands-in"
(code :arity 1
:bytecode (16 0 33 70 0 20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 34 0 20 4 0 1 6 0 16 1 52 7 0 1 1 8 0 52 5 0 3 48 1 5 20 10 0 16 1 52 9 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"dom-query-all"
"[data-sx-island]"
"not"
"empty?"
"log-info"
"str"
"force-disposing "
"len"
" island(s)"
"for-each"
"dispose-island"))
"*pre-render-hooks*"
"*post-render-hooks*"
"register-pre-render-hook"
(code :arity 1
:bytecode (20 0 0 20 1 0 16 0 49 2 50)
:constants (
"append!"
"*pre-render-hooks*"))
"register-post-render-hook"
(code :arity 1
:bytecode (20 0 0 20 1 0 16 0 49 2 50)
:constants (
"append!"
"*post-render-hooks*"))
"run-pre-render-hooks"
(code
:bytecode (51 1 0 20 2 0 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 2 49 2 50)
:constants (
"cek-call"))
"*pre-render-hooks*"))
"run-post-render-hooks"
(code
:bytecode (20 0 0 1 2 0 20 4 0 52 3 0 1 1 5 0 52 1 0 3 48 1 5 51 7 0 20 4 0 52 6 0 2 50)
:constants (
"log-info"
"str"
"run-post-render-hooks: "
"len"
"*post-render-hooks*"
" hooks"
"for-each"
(code :arity 1
:bytecode (20 0 0 1 2 0 16 0 52 3 0 1 1 4 0 20 5 0 16 0 48 1 1 6 0 16 0 52 7 0 1 52 1 0 6 48 1 5 20 8 0 16 0 2 49 2 50)
:constants (
"log-info"
"str"
" hook type: "
"type-of"
" callable: "
"callable?"
" lambda: "
"lambda?"
"cek-call"))))
"boot-init"
(code
:bytecode (20 0 0 1 2 0 20 3 0 52 1 0 2 48 1 5 20 4 0 48 0 5 20 5 0 48 0 5 20 6 0 2 48 1 5 20 7 0 2 48 1 5 20 8 0 2 48 1 5 20 9 0 48 0 5 20 10 0 2 48 1 5 20 11 0 20 12 0 48 0 1 13 0 51 14 0 49 3 50)
:constants (
"log-info"
"str"
"sx-browser "
"SX_VERSION"
"init-css-tracking"
"process-page-scripts"
"process-sx-scripts"
"sx-hydrate-elements"
"sx-hydrate-islands"
"run-post-render-hooks"
"process-elements"
"dom-listen"
"dom-window"
"popstate"
(code :arity 1
:bytecode (20 0 0 1 1 0 49 1 50)
:constants (
"handle-popstate"
0)))))))

View File

@@ -0,0 +1,317 @@
(sxbc 1 "b149b21c8bdcb90e"
(code
: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 57 0 128 60 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 5 51 68 0 128 67 0 50)
:constants (
"browser-location-href"
(code
:bytecode (20 0 0 20 0 0 20 1 0 48 0 1 2 0 48 2 1 3 0 49 2 50)
:constants (
"host-get"
"dom-window"
"location"
"href"))
"browser-location-pathname"
(code
:bytecode (20 0 0 20 0 0 20 1 0 48 0 1 2 0 48 2 1 3 0 49 2 50)
:constants (
"host-get"
"dom-window"
"location"
"pathname"))
"browser-location-origin"
(code
:bytecode (20 0 0 20 0 0 20 1 0 48 0 1 2 0 48 2 1 3 0 49 2 50)
:constants (
"host-get"
"dom-window"
"location"
"origin"))
"browser-same-origin?"
(code :arity 1
:bytecode (16 0 20 1 0 48 0 52 0 0 2 50)
:constants (
"starts-with?"
"browser-location-origin"))
"url-pathname"
(code :arity 1
:bytecode (20 0 0 20 1 0 1 2 0 16 0 20 3 0 48 0 48 3 1 4 0 49 2 50)
:constants (
"host-get"
"host-new"
"URL"
"browser-location-origin"
"pathname"))
"browser-push-state"
(code :arity 3
:bytecode (16 1 52 0 0 1 33 30 0 20 1 0 20 2 0 20 3 0 48 0 1 4 0 48 2 1 5 0 2 1 6 0 16 0 49 5 32 27 0 20 1 0 20 2 0 20 3 0 48 0 1 4 0 48 2 1 5 0 16 0 16 1 16 2 49 5 50)
:constants (
"nil?"
"host-call"
"host-get"
"dom-window"
"history"
"pushState"
""))
"browser-replace-state"
(code :arity 3
:bytecode (16 1 52 0 0 1 33 30 0 20 1 0 20 2 0 20 3 0 48 0 1 4 0 48 2 1 5 0 2 1 6 0 16 0 49 5 32 27 0 20 1 0 20 2 0 20 3 0 48 0 1 4 0 48 2 1 5 0 16 0 16 1 16 2 49 5 50)
:constants (
"nil?"
"host-call"
"host-get"
"dom-window"
"history"
"replaceState"
""))
"browser-reload"
(code
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 48 2 1 4 0 49 2 50)
:constants (
"host-call"
"host-get"
"dom-window"
"location"
"reload"))
"browser-navigate"
(code :arity 1
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 48 2 1 4 0 16 0 49 3 50)
:constants (
"host-set!"
"host-get"
"dom-window"
"location"
"href"))
"local-storage-get"
(code :arity 1
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 48 2 1 4 0 16 0 49 3 50)
:constants (
"host-call"
"host-get"
"dom-window"
"localStorage"
"getItem"))
"local-storage-set"
(code :arity 2
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 48 2 1 4 0 16 0 16 1 49 4 50)
:constants (
"host-call"
"host-get"
"dom-window"
"localStorage"
"setItem"))
"local-storage-remove"
(code :arity 1
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 48 2 1 4 0 16 0 49 3 50)
:constants (
"host-call"
"host-get"
"dom-window"
"localStorage"
"removeItem"))
"set-timeout"
(code :arity 2
:bytecode (20 0 0 20 1 0 48 0 1 2 0 20 3 0 16 0 48 1 16 1 49 4 50)
:constants (
"host-call"
"dom-window"
"setTimeout"
"host-callback"))
"set-interval"
(code :arity 2
:bytecode (20 0 0 20 1 0 48 0 1 2 0 20 3 0 16 0 48 1 16 1 49 4 50)
:constants (
"host-call"
"dom-window"
"setInterval"
"host-callback"))
"clear-timeout"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-call"
"dom-window"
"clearTimeout"))
"clear-interval"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-call"
"dom-window"
"clearInterval"))
"request-animation-frame"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 20 3 0 16 0 48 1 49 3 50)
:constants (
"host-call"
"dom-window"
"requestAnimationFrame"
"host-callback"))
"fetch-request"
(code :arity 2
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 16 1 49 4 50)
:constants (
"host-call"
"dom-window"
"fetch"))
"new-abort-controller"
(code
:bytecode (20 0 0 1 1 0 49 1 50)
:constants (
"host-new"
"AbortController"))
"controller-signal"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"signal"))
"controller-abort"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-call"
"abort"))
"promise-then"
(code :arity 3
:bytecode (20 0 0 16 1 48 1 17 3 16 2 33 10 0 20 0 0 16 2 48 1 32 1 0 2 17 4 16 4 33 25 0 20 1 0 20 1 0 16 0 1 2 0 16 3 48 3 1 3 0 16 4 49 3 32 12 0 20 1 0 16 0 1 2 0 16 3 49 3 50)
:constants (
"host-callback"
"host-call"
"then"
"catch"))
"promise-resolve"
(code :arity 1
:bytecode (20 0 0 20 1 0 1 2 0 48 1 1 3 0 16 0 49 3 50)
:constants (
"host-call"
"host-global"
"Promise"
"resolve"))
"promise-delayed"
(code :arity 2
:bytecode (20 0 0 1 1 0 20 2 0 51 3 0 1 1 1 0 48 1 49 2 50)
:constants (
"host-new"
"Promise"
"host-callback"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 51 1 0 1 0 0 0 18 1 49 2 50)
:constants (
"set-timeout"
(code :upvalue-count 2
:bytecode (20 0 0 18 0 1 1 0 2 18 1 49 4 50)
:constants (
"host-call"
"call"))))))
"browser-confirm"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-call"
"dom-window"
"confirm"))
"browser-prompt"
(code :arity 2
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 16 1 49 4 50)
:constants (
"host-call"
"dom-window"
"prompt"))
"browser-media-matches?"
(code :arity 1
:bytecode (20 0 0 20 1 0 20 2 0 48 0 1 3 0 16 0 48 3 1 4 0 49 2 50)
:constants (
"host-get"
"host-call"
"dom-window"
"matchMedia"
"matches"))
"json-parse"
(code :arity 1
:bytecode (20 0 0 20 1 0 1 2 0 48 1 1 3 0 16 0 49 3 50)
:constants (
"host-call"
"host-global"
"JSON"
"parse"))
"log-info"
(code :arity 1
:bytecode (20 0 0 20 1 0 1 2 0 48 1 1 3 0 1 5 0 16 0 52 4 0 2 49 3 50)
:constants (
"host-call"
"host-global"
"console"
"log"
"str"
"[sx] "))
"log-warn"
(code :arity 1
:bytecode (20 0 0 20 1 0 1 2 0 48 1 1 3 0 1 5 0 16 0 52 4 0 2 49 3 50)
:constants (
"host-call"
"host-global"
"console"
"warn"
"str"
"[sx] "))
"console-log"
"now-ms"
(code
:bytecode (20 0 0 20 1 0 1 2 0 48 1 1 3 0 49 2 50)
:constants (
"host-call"
"host-global"
"Date"
"now"))
"schedule-idle"
(code :arity 1
:bytecode (20 0 0 51 1 0 1 0 48 1 17 1 20 2 0 20 3 0 48 0 1 4 0 48 2 33 18 0 20 5 0 20 3 0 48 0 1 4 0 16 1 49 3 32 10 0 20 6 0 16 1 1 7 0 49 2 50)
:constants (
"host-callback"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 49 0 50)
:constants ())
"host-get"
"dom-window"
"requestIdleCallback"
"host-call"
"set-timeout"
0))
"set-cookie"
(code :arity 3
:bytecode (16 2 6 34 4 0 5 1 0 0 17 3 20 1 0 20 2 0 1 3 0 20 1 0 20 5 0 1 3 0 48 1 1 6 0 48 2 16 3 1 8 0 52 7 0 2 52 4 0 2 48 2 1 9 0 48 2 17 4 20 10 0 20 11 0 48 0 1 12 0 16 0 1 14 0 20 1 0 2 1 15 0 16 1 48 3 1 16 0 16 4 1 17 0 52 13 0 6 49 3 50)
:constants (
365
"host-call"
"host-new"
"Date"
"+"
"host-global"
"now"
"*"
86400000
"toUTCString"
"host-set!"
"dom-document"
"cookie"
"str"
"="
"encodeURIComponent"
";expires="
";path=/;SameSite=Lax"))
"get-cookie"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 48 2 17 1 20 3 0 16 1 1 4 0 20 5 0 1 6 0 1 8 0 16 0 1 9 0 52 7 0 3 48 2 48 3 17 2 16 2 33 22 0 20 3 0 2 1 10 0 20 0 0 16 2 1 11 0 48 2 49 3 32 1 0 2 50)
:constants (
"host-get"
"dom-document"
"cookie"
"host-call"
"match"
"host-new"
"RegExp"
"str"
"(?:^|;\\s*)"
"=([^;]*)"
"decodeURIComponent"
1)))))

View File

@@ -0,0 +1,204 @@
(sxbc 1 "45824e713893dfa0"
(code
:bytecode (1 1 0 128 0 0 5 1 3 0 128 2 0 5 1 5 0 128 4 0 5 1 7 0 128 6 0 5 1 9 0 128 8 0 5 1 11 0 128 10 0 5 1 13 0 128 12 0 5 1 15 0 128 14 0 5 1 17 0 128 16 0 5 1 19 0 128 18 0 5 1 21 0 128 20 0 5 1 23 0 128 22 0 5 1 25 0 128 24 0 5 1 27 0 128 26 0 5 1 29 0 128 28 0 5 1 31 0 128 30 0 5 1 33 0 128 32 0 5 1 35 0 128 34 0 5 1 37 0 128 36 0 5 1 39 0 128 38 0 5 1 41 0 128 40 0 5 1 43 0 128 42 0 5 1 45 0 128 44 0 5 1 47 0 128 46 0 5 1 49 0 128 48 0 5 1 51 0 128 50 0 5 1 53 0 128 52 0 5 1 55 0 128 54 0 5 1 57 0 128 56 0 5 1 59 0 128 58 0 5 1 61 0 128 60 0 5 1 63 0 128 62 0 5 1 65 0 128 64 0 5 1 67 0 128 66 0 5 1 69 0 128 68 0 5 1 71 0 128 70 0 5 1 73 0 128 72 0 5 1 75 0 128 74 0 5 1 77 0 128 76 0 5 1 79 0 128 78 0 5 1 81 0 128 80 0 5 1 83 0 128 82 0 5 1 85 0 128 84 0 5 1 87 0 128 86 0 5 1 89 0 128 88 0 5 1 91 0 128 90 0 5 1 93 0 128 92 0 5 1 95 0 128 94 0 5 1 97 0 128 96 0 5 1 99 0 128 98 0 5 1 101 0 128 100 0 5 1 103 0 128 102 0 5 1 105 0 128 104 0 5 1 107 0 128 106 0 5 1 109 0 128 108 0 5 1 111 0 128 110 0 5 1 113 0 128 112 0 5 1 115 0 128 114 0 5 1 117 0 128 116 0 5 1 119 0 128 118 0 5 1 121 0 128 120 0 5 1 123 0 128 122 0 5 1 125 0 128 124 0 5 1 127 0 128 126 0 5 1 129 0 128 128 0 5 1 131 0 128 130 0 5 1 133 0 128 132 0 5 1 135 0 128 134 0 5 1 137 0 128 136 0 5 1 139 0 128 138 0 5 1 141 0 128 140 0 5 1 143 0 128 142 0 5 1 1 0 128 144 0 5 1 1 0 128 145 0 5 1 3 0 128 146 0 5 1 5 0 128 147 0 5 1 7 0 128 148 0 5 1 9 0 128 149 0 5 1 11 0 128 150 0 5 1 152 0 128 151 0 5 1 154 0 128 153 0 5 1 156 0 128 155 0 5 51 158 0 128 157 0 50)
:constants (
"OP_CONST"
1
"OP_NIL"
2
"OP_TRUE"
3
"OP_FALSE"
4
"OP_POP"
5
"OP_DUP"
6
"OP_LOCAL_GET"
16
"OP_LOCAL_SET"
17
"OP_UPVALUE_GET"
18
"OP_UPVALUE_SET"
19
"OP_GLOBAL_GET"
20
"OP_GLOBAL_SET"
21
"OP_JUMP"
32
"OP_JUMP_IF_FALSE"
33
"OP_JUMP_IF_TRUE"
34
"OP_CALL"
48
"OP_TAIL_CALL"
49
"OP_RETURN"
50
"OP_CLOSURE"
51
"OP_CALL_PRIM"
52
"OP_APPLY"
53
"OP_LIST"
64
"OP_DICT"
65
"OP_APPEND_BANG"
66
"OP_ITER_INIT"
80
"OP_ITER_NEXT"
81
"OP_MAP_OPEN"
82
"OP_MAP_APPEND"
83
"OP_MAP_CLOSE"
84
"OP_FILTER_TEST"
85
"OP_HO_MAP"
88
"OP_HO_FILTER"
89
"OP_HO_REDUCE"
90
"OP_HO_FOR_EACH"
91
"OP_HO_SOME"
92
"OP_HO_EVERY"
93
"OP_SCOPE_PUSH"
96
"OP_SCOPE_POP"
97
"OP_PROVIDE_PUSH"
98
"OP_PROVIDE_POP"
99
"OP_CONTEXT"
100
"OP_EMIT"
101
"OP_EMITTED"
102
"OP_RESET"
112
"OP_SHIFT"
113
"OP_DEFINE"
128
"OP_DEFCOMP"
129
"OP_DEFISLAND"
130
"OP_DEFMACRO"
131
"OP_EXPAND_MACRO"
132
"OP_STR_CONCAT"
144
"OP_STR_JOIN"
145
"OP_SERIALIZE"
146
"OP_ADD"
160
"OP_SUB"
161
"OP_MUL"
162
"OP_DIV"
163
"OP_EQ"
164
"OP_LT"
165
"OP_GT"
166
"OP_NOT"
167
"OP_LEN"
168
"OP_FIRST"
169
"OP_REST"
170
"OP_NTH"
171
"OP_CONS"
172
"OP_NEG"
173
"OP_INC"
174
"OP_DEC"
175
"OP_ASER_TAG"
224
"OP_ASER_FRAG"
225
"BYTECODE_MAGIC"
"SXBC"
"BYTECODE_VERSION"
"CONST_NUMBER"
"CONST_STRING"
"CONST_BOOL"
"CONST_NIL"
"CONST_SYMBOL"
"CONST_KEYWORD"
"CONST_LIST"
7
"CONST_DICT"
8
"CONST_CODE"
9
"opcode-name"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 6 0 1 2 0 32 59 1 16 0 1 3 0 52 0 0 2 33 6 0 1 4 0 32 41 1 16 0 1 5 0 52 0 0 2 33 6 0 1 6 0 32 23 1 16 0 1 7 0 52 0 0 2 33 6 0 1 8 0 32 5 1 16 0 1 9 0 52 0 0 2 33 6 0 1 10 0 32 243 0 16 0 1 11 0 52 0 0 2 33 6 0 1 12 0 32 225 0 16 0 1 13 0 52 0 0 2 33 6 0 1 14 0 32 207 0 16 0 1 15 0 52 0 0 2 33 6 0 1 16 0 32 189 0 16 0 1 17 0 52 0 0 2 33 6 0 1 18 0 32 171 0 16 0 1 19 0 52 0 0 2 33 6 0 1 20 0 32 153 0 16 0 1 21 0 52 0 0 2 33 6 0 1 22 0 32 135 0 16 0 1 23 0 52 0 0 2 33 6 0 1 24 0 32 117 0 16 0 1 25 0 52 0 0 2 33 6 0 1 26 0 32 99 0 16 0 1 27 0 52 0 0 2 33 6 0 1 28 0 32 81 0 16 0 1 29 0 52 0 0 2 33 6 0 1 30 0 32 63 0 16 0 1 31 0 52 0 0 2 33 6 0 1 32 0 32 45 0 16 0 1 33 0 52 0 0 2 33 6 0 1 34 0 32 27 0 16 0 1 35 0 52 0 0 2 33 6 0 1 36 0 32 9 0 1 38 0 16 0 52 37 0 2 50)
:constants (
"="
1
"CONST"
2
"NIL"
3
"TRUE"
4
"FALSE"
5
"POP"
6
"DUP"
16
"LOCAL_GET"
17
"LOCAL_SET"
20
"GLOBAL_GET"
21
"GLOBAL_SET"
32
"JUMP"
33
"JUMP_IF_FALSE"
48
"CALL"
49
"TAIL_CALL"
50
"RETURN"
52
"CALL_PRIM"
128
"DEFINE"
144
"STR_CONCAT"
"str"
"OP_")))))

View File

@@ -0,0 +1,948 @@
(sxbc 1 "9f12bfb447e36aeb"
(code
: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 (
"make-pool"
(code
: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 (
"entries"
"primitive?"
"mutable-list"
"list"
"index"
"_count"
0))
"pool-add"
(code :arity 2
: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 (
"Add a value to the constant pool, return its index. Deduplicates."
"serialize"
"get"
"index"
"has-key?"
"_count"
"dict-set!"
"+"
1
"append!"
"entries"))
"make-scope"
(code :arity 1
: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 (
"next-slot"
0
"upvalues"
"list"
"locals"
"parent"
"is-function"))
"scope-define-local"
(code :arity 2
: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 (
"Add a local variable, return its slot index.
Idempotent: if name already has a slot, return it."
"first"
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"name"))
"get"
"locals"
"slot"
"next-slot"
"append!"
"mutable"
"name"
"dict-set!"
"+"
1))
"scope-resolve"
(code :arity 2
: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 (
"Resolve a variable name. Returns {:type \"local\"|\"upvalue\"|\"global\", :index N}.
Upvalue captures only happen at function boundaries (is-function=true).
Let scopes share the enclosing function's frame — their locals are
accessed directly without upvalue indirection."
"nil?"
"index"
"type"
"global"
"get"
"locals"
"some"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"name"))
"first"
"filter"
"slot"
"local"
"upvalues"
"uv-index"
"upvalue"
"parent"
"scope-resolve"
"="
"is-function"
"len"
"append!"
"is-local"
"name"))
"make-emitter"
(code
: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 (
"pool"
"make-pool"
"bytecode"
"primitive?"
"mutable-list"
"list"))
"emit-byte"
(code :arity 2
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 1 49 2 50)
:constants (
"append!"
"get"
"bytecode"))
"emit-u16"
(code :arity 2
: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 (
"emit-byte"
"mod"
256
"floor"
"/"))
"emit-i16"
(code :arity 2
: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 (
"<"
0
"+"
65536
"emit-u16"))
"emit-op"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"emit-byte"))
"emit-const"
(code :arity 2
: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 (
"pool-add"
"get"
"pool"
"emit-op"
1
"emit-u16"))
"current-offset"
(code :arity 1
:bytecode (16 0 1 2 0 52 1 0 2 52 0 0 1 50)
:constants (
"len"
"get"
"bytecode"))
"patch-i16"
(code :arity 3
: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 (
"Patch a previously emitted i16 at the given bytecode offset."
"<"
0
"+"
65536
"get"
"bytecode"
"set-nth!"
"mod"
256
1
"floor"
"/"))
"compile-expr"
(code :arity 4
: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 (
"Compile an expression. tail? indicates tail position for TCO."
"nil?"
"emit-op"
2
"="
"type-of"
"number"
"emit-const"
"string"
"boolean"
3
4
"keyword"
"keyword-name"
"symbol"
"compile-symbol"
"symbol-name"
"list"
"empty?"
64
"emit-u16"
0
"compile-list"
"dict"
"compile-dict"))
"compile-symbol"
(code :arity 3
: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 (
"scope-resolve"
"="
"get"
"type"
"local"
"emit-op"
16
"emit-byte"
"index"
"upvalue"
18
"pool-add"
"pool"
20
"emit-u16"))
"compile-dict"
(code :arity 3
: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 (
"keys"
"len"
"for-each"
(code :arity 1 :upvalue-count 3
: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 (
"emit-const"
"compile-expr"
"get"))
"emit-op"
65
"emit-u16"))
"compile-list"
(code :arity 4
: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 (
"first"
"rest"
"not"
"="
"type-of"
"symbol"
"compile-call"
"symbol-name"
"if"
"compile-if"
"when"
"compile-when"
"and"
"compile-and"
"or"
"compile-or"
"let"
"compile-let"
"let*"
"begin"
"compile-begin"
"do"
"lambda"
"compile-lambda"
"fn"
"define"
"compile-define"
"set!"
"compile-set"
"quote"
"compile-quote"
"cond"
"compile-cond"
"case"
"compile-case"
"->"
"compile-thread"
"defcomp"
"compile-defcomp"
"defisland"
"defmacro"
"compile-defmacro"
"defstyle"
"emit-op"
2
"defhandler"
"defpage"
"defquery"
"defaction"
"defrelation"
"deftype"
"defeffect"
"quasiquote"
"compile-quasiquote"
"letrec"
"compile-letrec"))
"compile-if"
(code :arity 4
: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 (
"first"
"nth"
1
">"
"len"
2
"compile-expr"
"emit-op"
33
"current-offset"
"emit-i16"
0
32
"patch-i16"
"-"
"+"
"nil?"))
"compile-when"
(code :arity 4
: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 (
"first"
"rest"
"compile-expr"
"emit-op"
33
"current-offset"
"emit-i16"
0
"compile-begin"
32
"patch-i16"
"-"
"+"
2))
"compile-and"
(code :arity 4
: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 (
"empty?"
"emit-op"
3
"="
"len"
1
"compile-expr"
"first"
6
33
"current-offset"
"emit-i16"
0
5
"compile-and"
"rest"
"patch-i16"
"-"
"+"
2))
"compile-or"
(code :arity 4
: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 (
"empty?"
"emit-op"
4
"="
"len"
1
"compile-expr"
"first"
6
34
"current-offset"
"emit-i16"
0
5
"compile-or"
"rest"
"patch-i16"
"-"
"+"
2))
"compile-begin"
(code :arity 4
: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 (
"not"
"empty?"
"nil?"
"get"
"parent"
"for-each"
(code :arity 1 :upvalue-count 1
: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 (
"="
"type-of"
"list"
">="
"len"
2
"first"
"symbol"
"symbol-name"
"define"
"nth"
1
"scope-define-local"))
"emit-op"
2
"="
"len"
1
"compile-expr"
"first"
5
"compile-begin"
"rest"))
"compile-let"
(code :arity 4
: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 (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"nth"
1
"slice"
2
"list"
"for-each"
(code :arity 1 :upvalue-count 2
: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 (
"append!"
"="
"type-of"
"first"
"symbol"
"make-symbol"
"nth"
1))
"concat"
"make-symbol"
"fn"
"cons"
"compile-letrec"
"rest"
"make-scope"
"dict-set!"
"next-slot"
"get"
(code :arity 1 :upvalue-count 2
: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 (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"nth"
1
"scope-define-local"
"compile-expr"
"emit-op"
17
"emit-byte"))
"compile-begin"))
"compile-letrec"
(code :arity 4
: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 (
"Compile letrec: all names visible during value compilation.
1. Define all local slots (initialized to nil).
2. Compile each value and assign — names are already in scope
so mutually recursive functions can reference each other."
"first"
"rest"
"make-scope"
"dict-set!"
"next-slot"
"get"
"map"
(code :arity 1 :upvalue-count 2
: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 (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"scope-define-local"
"emit-op"
2
17
"emit-byte"))
"for-each"
(code :arity 1 :upvalue-count 2
: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 (
"first"
"nth"
1
"compile-expr"
"emit-op"
17
"emit-byte"))
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 52 1 0 2 18 1 16 0 52 1 0 2 52 0 0 2 50)
:constants (
"list"
"nth"))
"range"
0
"len"
"compile-begin"))
"compile-lambda"
(code :arity 3
: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 (
"first"
"rest"
"make-scope"
"make-emitter"
"dict-set!"
"is-function"
"for-each"
(code :arity 1 :upvalue-count 1
: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 (
"="
"type-of"
"symbol"
"symbol-name"
"list?"
"not"
"empty?"
"first"
"&key"
"&rest"
"scope-define-local"))
"compile-begin"
"emit-op"
50
"get"
"upvalues"
"upvalue-count"
"len"
"arity"
"locals"
"constants"
"pool"
"entries"
"bytecode"
"pool-add"
51
"emit-u16"
(code :arity 1 :upvalue-count 1
: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 (
"emit-byte"
"get"
"is-local"
1
0
"index"))))
"compile-define"
(code :arity 3
: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 (
"first"
"="
"type-of"
"symbol"
"symbol-name"
"rest"
"not"
"empty?"
"keyword"
(code :arity 1 :upvalue-count 1
: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 (
"empty?"
"="
"type-of"
"first"
"keyword"
"rest"))
"nil?"
"get"
"parent"
"scope-define-local"
"compile-expr"
"emit-op"
17
"emit-byte"
"pool-add"
"pool"
128
"emit-u16"))
"compile-set"
(code :arity 3
: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 (
"="
"type-of"
"first"
"symbol"
"symbol-name"
"nth"
1
"scope-resolve"
"compile-expr"
"get"
"type"
"local"
"emit-op"
17
"emit-byte"
"index"
"upvalue"
19
"pool-add"
"pool"
21
"emit-u16"))
"compile-quote"
(code :arity 2
: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 (
"empty?"
"emit-op"
2
"emit-const"
"first"))
"compile-cond"
(code :arity 4
: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 (
"Compile (cond test1 body1 test2 body2 ... :else fallback)."
"<"
"len"
2
"emit-op"
"first"
"nth"
1
">"
"slice"
"list"
"="
"type-of"
"keyword"
"keyword-name"
"else"
"compile-expr"
33
"current-offset"
"emit-i16"
0
32
"patch-i16"
"-"
"+"
"compile-cond"))
"compile-case"
(code :arity 4
: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 (
"Compile (case expr val1 body1 val2 body2 ... :else fallback)."
"compile-expr"
"first"
"rest"
"compile-case-clauses"))
"compile-case-clauses"
(code :arity 4
: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 (
"<"
"len"
2
"emit-op"
5
"first"
"nth"
1
">"
"slice"
"list"
"="
"type-of"
"keyword"
"keyword-name"
"else"
"compile-expr"
6
"pool-add"
"get"
"pool"
52
"emit-u16"
"emit-byte"
33
"current-offset"
"emit-i16"
0
32
"patch-i16"
"-"
"+"
"compile-case-clauses"))
"compile-thread"
(code :arity 4
: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 (
"Compile (-> val (f1 a) (f2 b)) by desugaring to nested calls."
"empty?"
"emit-op"
2
"="
"len"
1
"compile-expr"
"first"
"rest"
"compile-thread-step"))
"compile-thread-step"
(code :arity 5
: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 (
"empty?"
"compile-expr"
"first"
"rest"
"list?"
"concat"
"list"
"compile-thread-step"))
"compile-defcomp"
(code :arity 3
: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 (
"Compile defcomp/defisland — delegates to runtime via GLOBAL_GET + CALL."
"pool-add"
"get"
"pool"
"eval-defcomp"
"emit-op"
20
"emit-u16"
"emit-const"
"concat"
"list"
"make-symbol"
"defcomp"
48
"emit-byte"
1))
"compile-defmacro"
(code :arity 3
: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 (
"Compile defmacro — delegates to runtime via GLOBAL_GET + CALL."
"pool-add"
"get"
"pool"
"eval-defmacro"
"emit-op"
20
"emit-u16"
"emit-const"
"concat"
"list"
"make-symbol"
"defmacro"
48
"emit-byte"
1))
"compile-quasiquote"
(code :arity 3
:bytecode (1 0 0 5 20 1 0 16 0 16 1 16 2 49 3 50)
:constants (
"Compile quasiquote inline — walks the template at compile time,
emitting code that builds the structure at runtime. Unquoted
expressions are compiled normally (resolving locals/upvalues),
avoiding the qq-expand-runtime env-lookup limitation."
"compile-qq-expr"))
"compile-qq-expr"
(code :arity 3
: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 (
"Compile a quasiquote sub-expression."
"not"
"="
"type-of"
"list"
"emit-const"
"empty?"
"emit-op"
64
"emit-u16"
0
"first"
"symbol"
"symbol-name"
"unquote"
"compile-expr"
"nth"
1
"compile-qq-list"))
"compile-qq-list"
(code :arity 3
: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 (
"Compile a quasiquote list. Handles splice-unquote by building
segments and concatenating them."
"some"
(code :arity 1
: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 (
"="
"type-of"
"list"
">="
"len"
2
"first"
"symbol"
"symbol-name"
"splice-unquote"))
"not"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 18 1 49 3 50)
:constants (
"compile-qq-expr"))
"emit-op"
64
"emit-u16"
"len"
0
(code :arity 1 :upvalue-count 4
: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 (
"="
"type-of"
"list"
">="
"len"
2
"first"
"symbol"
"symbol-name"
"splice-unquote"
">"
0
"emit-op"
64
"emit-u16"
"+"
1
"compile-expr"
"nth"
"compile-qq-expr"))
">"
"+"
1
"pool-add"
"get"
"pool"
"concat"
52
"emit-byte"))
"compile-call"
(code :arity 5
: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 (
"="
"type-of"
"symbol"
"symbol-name"
"not"
"get"
"scope-resolve"
"type"
"local"
"upvalue"
"primitive?"
"len"
"pool-add"
"pool"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 18 1 4 49 4 50)
:constants (
"compile-expr"))
"emit-op"
52
"emit-u16"
"emit-byte"
"compile-expr"
49
48))
"compile"
(code :arity 1
: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 (
"Compile a single SX expression to a bytecode module."
"make-emitter"
"make-scope"
"compile-expr"
"emit-op"
50
"constants"
"get"
"pool"
"entries"
"bytecode"))
"compile-module"
(code :arity 1
: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 (
"Compile a list of top-level expressions to a bytecode module."
"make-emitter"
"make-scope"
"for-each"
(code :arity 1 :upvalue-count 2
: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 (
"compile-expr"
"emit-op"
5))
"init"
"compile-expr"
"last"
"emit-op"
50
"constants"
"get"
"pool"
"entries"
"bytecode")))))

View File

@@ -0,0 +1,257 @@
(sxbc 1 "59a3141f26d62fda"
(code
: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 1 31 0 128 30 0 5 52 33 0 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 50)
:constants (
"make-signal"
(code :arity 1
:bytecode (1 1 0 3 1 2 0 16 0 1 3 0 52 4 0 0 1 5 0 52 4 0 0 52 0 0 8 50)
:constants (
"dict"
"__signal"
"value"
"subscribers"
"list"
"deps"))
"signal?"
(code :arity 1
:bytecode (16 0 52 0 0 1 6 33 10 0 5 16 0 1 2 0 52 1 0 2 50)
:constants (
"dict?"
"has-key?"
"__signal"))
"signal-value"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 50)
:constants (
"get"
"value"))
"signal-set-value!"
(code :arity 2
:bytecode (16 0 1 1 0 16 1 52 0 0 3 50)
:constants (
"dict-set!"
"value"))
"signal-subscribers"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 50)
:constants (
"get"
"subscribers"))
"signal-add-sub!"
(code :arity 2
:bytecode (16 0 1 3 0 52 2 0 2 16 1 52 1 0 2 52 0 0 1 33 19 0 20 4 0 16 0 1 3 0 52 2 0 2 16 1 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"get"
"subscribers"
"append!"))
"signal-remove-sub!"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 17 2 20 2 0 16 2 16 1 49 2 50)
:constants (
"get"
"subscribers"
"remove!"))
"signal-deps"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 50)
:constants (
"get"
"deps"))
"signal-set-deps!"
(code :arity 2
:bytecode (16 0 1 1 0 16 1 52 0 0 3 50)
:constants (
"dict-set!"
"deps"))
"signal"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"make-signal"))
"deref"
(code :arity 1
:bytecode (20 1 0 16 0 48 1 52 0 0 1 33 5 0 16 0 32 87 0 1 3 0 2 52 2 0 2 17 1 16 1 33 63 0 16 1 1 5 0 52 4 0 2 17 2 16 1 1 6 0 52 4 0 2 17 3 16 2 16 0 52 7 0 2 52 0 0 1 33 22 0 20 8 0 16 2 16 0 48 2 5 20 9 0 16 0 16 3 48 2 32 1 0 2 32 1 0 2 5 20 10 0 16 0 49 1 50)
:constants (
"not"
"signal?"
"context"
"sx-reactive"
"get"
"deps"
"notify"
"contains?"
"append!"
"signal-add-sub!"
"signal-value"))
"reset!"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 33 48 0 20 1 0 16 0 48 1 17 2 16 2 16 1 52 3 0 2 52 2 0 1 33 20 0 20 4 0 16 0 16 1 48 2 5 20 5 0 16 0 49 1 32 1 0 2 32 1 0 2 50)
:constants (
"signal?"
"signal-value"
"not"
"identical?"
"signal-set-value!"
"notify-subscribers"))
"swap!"
(code :arity 3
:bytecode (20 0 0 16 0 48 1 33 69 0 20 1 0 16 0 48 1 17 3 20 2 0 16 1 16 3 16 2 52 4 0 2 52 3 0 2 48 1 17 4 16 3 16 4 52 6 0 2 52 5 0 1 33 20 0 20 7 0 16 0 16 4 48 2 5 20 8 0 16 0 49 1 32 1 0 2 32 1 0 2 50)
:constants (
"signal?"
"signal-value"
"trampoline"
"apply"
"cons"
"not"
"identical?"
"signal-set-value!"
"notify-subscribers"))
"computed"
(code :arity 1
:bytecode (20 0 0 2 48 1 17 1 52 1 0 0 17 2 2 17 3 51 2 0 1 4 1 1 1 0 17 4 16 4 48 0 5 20 3 0 51 4 0 1 1 48 1 5 16 1 50)
:constants (
"make-signal"
"list"
(code :upvalue-count 3
:bytecode (51 1 0 0 0 20 2 0 18 1 48 1 52 0 0 2 5 20 3 0 18 1 52 4 0 0 48 2 5 1 6 0 52 4 0 0 1 7 0 18 0 52 5 0 4 17 0 1 9 0 16 0 52 8 0 2 5 18 2 48 0 17 1 1 9 0 52 10 0 1 5 20 3 0 18 1 16 0 1 6 0 52 11 0 2 48 2 5 20 12 0 18 1 48 1 17 2 20 13 0 18 1 16 1 48 2 5 16 2 16 1 52 15 0 2 52 14 0 1 33 10 0 20 16 0 18 1 49 1 32 1 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"signal-remove-sub!"))
"signal-deps"
"signal-set-deps!"
"list"
"dict"
"deps"
"notify"
"scope-push!"
"sx-reactive"
"scope-pop!"
"get"
"signal-value"
"signal-set-value!"
"not"
"identical?"
"notify-subscribers"))
"register-in-scope"
(code :upvalue-count 1
:bytecode (20 0 0 18 0 49 1 50)
:constants (
"dispose-computed"))))
"effect"
(code :arity 1
:bytecode (52 0 0 0 17 1 4 17 2 2 17 3 51 1 0 1 2 1 3 1 4 1 1 1 0 17 4 16 4 48 0 5 51 2 0 1 2 1 3 1 4 1 1 17 5 20 3 0 16 5 48 1 5 16 5 50)
:constants (
"list"
(code :upvalue-count 5
:bytecode (18 0 52 0 0 1 33 108 0 18 1 33 7 0 18 1 48 0 32 1 0 2 5 51 2 0 0 2 18 3 52 1 0 2 5 52 3 0 0 19 3 5 1 5 0 52 3 0 0 1 6 0 18 2 52 4 0 4 17 0 1 8 0 16 0 52 7 0 2 5 18 4 48 0 17 1 1 8 0 52 9 0 1 5 16 0 1 5 0 52 10 0 2 19 3 5 20 11 0 16 1 48 1 33 7 0 16 1 19 1 32 1 0 2 32 1 0 2 50)
:constants (
"not"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"signal-remove-sub!"))
"list"
"dict"
"deps"
"notify"
"scope-push!"
"sx-reactive"
"scope-pop!"
"get"
"callable?"))
(code :upvalue-count 4
:bytecode (3 19 0 5 18 1 33 7 0 18 1 48 0 32 1 0 2 5 51 1 0 0 2 18 3 52 0 0 2 5 52 2 0 0 19 3 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"signal-remove-sub!"))
"list"))
"register-in-scope"))
"*batch-depth*"
0
"*batch-queue*"
"list"
"batch"
(code :arity 1
:bytecode (20 1 0 1 2 0 52 0 0 2 21 1 0 5 16 0 48 0 5 20 1 0 1 2 0 52 3 0 2 21 1 0 5 20 1 0 1 5 0 52 4 0 2 33 51 0 20 6 0 17 1 52 7 0 0 21 6 0 5 52 7 0 0 17 2 52 7 0 0 17 3 51 9 0 1 2 1 3 16 1 52 8 0 2 5 51 10 0 16 3 52 8 0 2 32 1 0 2 50)
:constants (
"+"
"*batch-depth*"
1
"-"
"="
0
"*batch-queue*"
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (51 1 0 0 0 0 1 20 2 0 16 0 48 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 22 0 20 2 0 18 0 16 0 48 2 5 20 2 0 18 1 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))
"signal-subscribers"))
(code :arity 1
:bytecode (16 0 49 0 50)
:constants ())))
"notify-subscribers"
(code :arity 1
:bytecode (20 1 0 1 2 0 52 0 0 2 33 33 0 20 5 0 16 0 52 4 0 2 52 3 0 1 33 13 0 20 6 0 20 5 0 16 0 49 2 32 1 0 2 32 7 0 20 7 0 16 0 49 1 50)
:constants (
">"
"*batch-depth*"
0
"not"
"contains?"
"*batch-queue*"
"append!"
"flush-subscribers"))
"flush-subscribers"
(code :arity 1
:bytecode (51 1 0 20 2 0 16 0 48 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1
:bytecode (16 0 49 0 50)
:constants ())
"signal-subscribers"))
"dispose-computed"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 33 29 0 51 2 0 20 3 0 16 0 48 1 52 1 0 2 5 20 4 0 16 0 52 5 0 0 49 2 32 1 0 2 50)
:constants (
"signal?"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 2 49 2 50)
:constants (
"signal-remove-sub!"))
"signal-deps"
"signal-set-deps!"
"list"))
"with-island-scope"
(code :arity 2
:bytecode (1 1 0 16 0 52 0 0 2 5 16 1 48 0 17 2 1 1 0 52 2 0 1 5 16 2 50)
:constants (
"scope-push!"
"sx-island-scope"
"scope-pop!"))
"register-in-scope"
(code :arity 1
:bytecode (1 1 0 52 0 0 1 17 1 16 1 33 16 0 20 2 0 16 1 16 0 52 3 0 1 49 2 32 1 0 2 50)
:constants (
"scope-peek"
"sx-island-scope"
"cek-call"
"list")))))

View File

@@ -0,0 +1,330 @@
(sxbc 1 "e71dcede46ada0e7"
(code
: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 50)
:constants (
"scan-refs"
(code :arity 1
:bytecode (52 0 0 0 17 1 20 1 0 16 0 16 1 48 2 5 16 1 50)
:constants (
"list"
"scan-refs-walk"))
"scan-refs-walk"
(code :arity 2
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 56 0 20 3 0 16 0 48 1 17 2 16 2 1 5 0 52 4 0 2 33 31 0 16 1 16 2 52 7 0 2 52 6 0 1 33 12 0 20 8 0 16 1 16 2 49 2 32 1 0 2 32 1 0 2 32 67 0 16 0 52 1 0 1 1 9 0 52 0 0 2 33 14 0 51 11 0 1 1 16 0 52 10 0 2 32 37 0 16 0 52 1 0 1 1 12 0 52 0 0 2 33 20 0 51 13 0 1 0 1 1 16 0 52 14 0 1 52 10 0 2 32 1 0 2 50)
:constants (
"="
"type-of"
"symbol"
"symbol-name"
"starts-with?"
"~"
"not"
"contains?"
"append!"
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 49 2 50)
:constants (
"scan-refs-walk"))
"dict"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 52 1 0 2 18 1 49 2 50)
:constants (
"scan-refs-walk"
"dict-get"))
"keys"))
"transitive-deps-walk"
(code :arity 3
:bytecode (16 1 16 0 52 1 0 2 52 0 0 1 33 126 0 20 2 0 16 1 16 0 48 2 5 20 3 0 16 2 16 0 48 2 17 3 16 3 52 5 0 1 1 6 0 52 4 0 2 6 34 14 0 5 16 3 52 5 0 1 1 7 0 52 4 0 2 33 25 0 51 9 0 1 1 1 2 20 10 0 16 3 52 11 0 1 48 1 52 8 0 2 32 43 0 16 3 52 5 0 1 1 12 0 52 4 0 2 33 26 0 51 9 0 1 1 1 2 20 10 0 20 13 0 16 3 48 1 48 1 52 8 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"
"env-get"
"="
"type-of"
"component"
"island"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 0 18 1 49 3 50)
:constants (
"transitive-deps-walk"))
"scan-refs"
"component-body"
"macro"
"macro-body"))
"transitive-deps"
(code :arity 2
:bytecode (52 0 0 0 17 2 16 0 1 2 0 52 1 0 2 33 5 0 16 0 32 9 0 1 2 0 16 0 52 3 0 2 17 3 20 4 0 16 3 16 2 16 1 48 3 5 51 6 0 1 3 16 2 52 5 0 2 50)
:constants (
"list"
"starts-with?"
"~"
"str"
"transitive-deps-walk"
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 18 0 52 1 0 2 52 0 0 1 50)
:constants (
"not"
"="))))
"compute-all-deps"
(code :arity 1
:bytecode (51 1 0 1 0 20 2 0 16 0 48 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 48 2 17 1 16 1 52 2 0 1 1 3 0 52 1 0 2 6 34 14 0 5 16 1 52 2 0 1 1 4 0 52 1 0 2 33 19 0 20 5 0 16 1 20 6 0 16 0 18 0 48 2 49 2 32 1 0 2 50)
:constants (
"env-get"
"="
"type-of"
"component"
"island"
"component-set-deps!"
"transitive-deps"))
"env-components"))
"scan-components-from-source"
(code :arity 1
:bytecode (20 0 0 1 1 0 16 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)
:constants (
"regex-find-all"
"\\(~([a-zA-Z_][a-zA-Z0-9_\\-:/]*)"
"map"
(code :arity 1
:bytecode (1 1 0 16 0 52 0 0 2 50)
:constants (
"str"
"~"))))
"components-needed"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 52 1 0 0 17 3 51 3 0 1 3 1 1 16 2 52 2 0 2 5 16 3 50)
:constants (
"scan-components-from-source"
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 48 2 32 1 0 2 5 20 3 0 18 1 16 0 48 2 17 1 16 1 52 5 0 1 1 6 0 52 4 0 2 6 33 16 0 5 20 8 0 16 1 48 1 52 7 0 1 52 0 0 1 33 10 0 20 8 0 16 1 48 1 32 9 0 20 9 0 16 0 18 1 48 2 17 2 51 11 0 0 0 16 2 52 10 0 2 50)
:constants (
"not"
"contains?"
"append!"
"env-get"
"="
"type-of"
"component"
"empty?"
"component-deps"
"transitive-deps"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))))))
"page-component-bundle"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"components-needed"))
"page-css-classes"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 48 2 17 2 52 1 0 0 17 3 51 3 0 1 1 1 3 16 2 52 2 0 2 5 51 4 0 1 3 20 5 0 16 0 48 1 52 2 0 2 5 16 3 50)
:constants (
"components-needed"
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 48 2 17 1 16 1 52 2 0 1 1 3 0 52 1 0 2 33 19 0 51 5 0 0 1 20 6 0 16 1 48 1 52 4 0 2 32 1 0 2 50)
:constants (
"env-get"
"="
"type-of"
"component"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))
"component-css-classes"))
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))
"scan-css-classes"))
"scan-io-refs-walk"
(code :arity 3
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 55 0 20 3 0 16 0 48 1 17 3 16 1 16 3 52 4 0 2 33 31 0 16 2 16 3 52 4 0 2 52 5 0 1 33 12 0 20 6 0 16 2 16 3 49 2 32 1 0 2 32 1 0 2 32 71 0 16 0 52 1 0 1 1 7 0 52 0 0 2 33 16 0 51 9 0 1 1 1 2 16 0 52 8 0 2 32 39 0 16 0 52 1 0 1 1 10 0 52 0 0 2 33 22 0 51 11 0 1 0 1 1 1 2 16 0 52 12 0 1 52 8 0 2 32 1 0 2 50)
:constants (
"="
"type-of"
"symbol"
"symbol-name"
"contains?"
"not"
"append!"
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 0 18 1 49 3 50)
:constants (
"scan-io-refs-walk"))
"dict"
(code :arity 1 :upvalue-count 3
:bytecode (20 0 0 18 0 16 0 52 1 0 2 18 1 18 2 49 3 50)
:constants (
"scan-io-refs-walk"
"dict-get"))
"keys"))
"scan-io-refs"
(code :arity 2
:bytecode (52 0 0 0 17 2 20 1 0 16 0 16 1 16 2 48 3 5 16 2 50)
:constants (
"list"
"scan-io-refs-walk"))
"transitive-io-refs-walk"
(code :arity 5
:bytecode (16 1 16 0 52 1 0 2 52 0 0 1 33 163 0 20 2 0 16 1 16 0 48 2 5 20 3 0 16 3 16 0 48 2 17 5 16 5 52 5 0 1 1 6 0 52 4 0 2 33 52 0 51 8 0 1 2 20 9 0 16 5 52 10 0 1 16 4 48 2 52 7 0 2 5 51 11 0 1 1 1 2 1 3 1 4 20 12 0 16 5 52 10 0 1 48 1 52 7 0 2 32 71 0 16 5 52 5 0 1 1 13 0 52 4 0 2 33 54 0 51 8 0 1 2 20 9 0 20 14 0 16 5 48 1 16 4 48 2 52 7 0 2 5 51 11 0 1 1 1 2 1 3 1 4 20 12 0 20 14 0 16 5 48 1 48 1 52 7 0 2 32 1 0 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"
"env-get"
"="
"type-of"
"component"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))
"scan-io-refs"
"component-body"
(code :arity 1 :upvalue-count 4
:bytecode (20 0 0 16 0 18 0 18 1 18 2 18 3 49 5 50)
:constants (
"transitive-io-refs-walk"))
"scan-refs"
"macro"
"macro-body"))
"transitive-io-refs"
(code :arity 3
:bytecode (52 0 0 0 17 3 52 0 0 0 17 4 16 0 1 2 0 52 1 0 2 33 5 0 16 0 32 9 0 1 2 0 16 0 52 3 0 2 17 5 20 4 0 16 5 16 4 16 3 16 1 16 2 48 5 5 16 3 50)
:constants (
"list"
"starts-with?"
"~"
"str"
"transitive-io-refs-walk"))
"compute-all-io-refs"
(code :arity 2
:bytecode (51 1 0 1 0 1 1 20 2 0 16 0 48 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 16 0 48 2 17 1 16 1 52 2 0 1 1 3 0 52 1 0 2 33 21 0 20 4 0 16 1 20 5 0 16 0 18 0 18 1 48 3 49 2 32 1 0 2 50)
:constants (
"env-get"
"="
"type-of"
"component"
"component-set-io-refs!"
"transitive-io-refs"))
"env-components"))
"component-io-refs-cached"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 9 0 1 1 0 16 0 52 2 0 2 17 3 20 3 0 16 1 16 3 48 2 17 4 16 4 52 5 0 1 1 6 0 52 4 0 2 6 33 36 0 5 20 9 0 16 4 48 1 52 8 0 1 52 7 0 1 6 33 16 0 5 20 9 0 16 4 48 1 52 10 0 1 52 7 0 1 33 10 0 20 9 0 16 4 49 1 32 11 0 20 11 0 16 0 16 1 16 2 49 3 50)
:constants (
"starts-with?"
"~"
"str"
"env-get"
"="
"type-of"
"component"
"not"
"nil?"
"component-io-refs"
"empty?"
"transitive-io-refs"))
"component-pure?"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 9 0 1 1 0 16 0 52 2 0 2 17 3 20 3 0 16 1 16 3 48 2 17 4 16 4 52 5 0 1 1 6 0 52 4 0 2 6 33 16 0 5 20 9 0 16 4 48 1 52 8 0 1 52 7 0 1 33 14 0 20 9 0 16 4 48 1 52 10 0 1 32 15 0 20 11 0 16 0 16 1 16 2 48 3 52 10 0 1 50)
:constants (
"starts-with?"
"~"
"str"
"env-get"
"="
"type-of"
"component"
"not"
"nil?"
"component-io-refs"
"empty?"
"transitive-io-refs"))
"render-target"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 9 0 1 1 0 16 0 52 2 0 2 17 3 20 3 0 16 1 16 3 48 2 17 4 16 4 52 6 0 1 1 7 0 52 5 0 2 52 4 0 1 33 6 0 1 8 0 32 72 0 20 9 0 16 4 48 1 17 5 16 5 1 8 0 52 5 0 2 33 6 0 1 8 0 32 45 0 16 5 1 10 0 52 5 0 2 33 6 0 1 10 0 32 27 0 20 11 0 16 0 16 1 16 2 48 3 52 4 0 1 33 6 0 1 8 0 32 3 0 1 10 0 50)
:constants (
"starts-with?"
"~"
"str"
"env-get"
"not"
"="
"type-of"
"component"
"server"
"component-affinity"
"client"
"component-pure?"))
"page-render-plan"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 52 1 0 0 17 4 52 2 0 0 17 5 52 2 0 0 17 6 52 2 0 0 17 7 51 4 0 1 1 1 2 1 4 1 5 1 7 1 6 16 3 52 3 0 2 5 1 5 0 16 7 1 6 0 16 5 1 7 0 16 4 1 8 0 16 6 65 4 0 50)
:constants (
"components-needed"
"dict"
"list"
"for-each"
(code :arity 1 :upvalue-count 6
:bytecode (20 0 0 16 0 18 0 18 1 48 3 17 1 18 2 16 0 16 1 52 1 0 3 5 16 1 1 3 0 52 2 0 2 33 33 0 20 4 0 18 3 16 0 48 2 5 51 6 0 0 4 20 7 0 16 0 18 0 18 1 48 3 52 5 0 2 32 9 0 20 4 0 18 5 16 0 49 2 50)
:constants (
"render-target"
"dict-set!"
"="
"server"
"append!"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 2 52 0 0 1 33 12 0 20 2 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"contains?"
"append!"))
"component-io-refs-cached"))
"io-deps"
"server"
"components"
"client"))
"env-components"
(code :arity 1
:bytecode (51 1 0 1 0 16 0 52 2 0 1 52 0 0 2 50)
:constants (
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 48 2 17 1 16 1 52 1 0 1 6 34 7 0 5 16 1 52 2 0 1 50)
:constants (
"env-get"
"component?"
"macro?"))
"keys")))))

View File

@@ -0,0 +1,532 @@
(sxbc 1 "229a5c9f55b2ac03"
(code
: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 5 51 83 0 128 82 0 5 51 85 0 128 84 0 5 51 87 0 128 86 0 5 51 89 0 128 88 0 5 51 91 0 128 90 0 5 51 93 0 128 92 0 5 51 95 0 128 94 0 5 51 97 0 128 96 0 5 51 99 0 128 98 0 5 51 101 0 128 100 0 5 51 99 0 128 102 0 5 51 104 0 128 103 0 5 51 106 0 128 105 0 5 51 108 0 128 107 0 5 51 110 0 128 109 0 5 51 112 0 128 111 0 5 51 114 0 128 113 0 5 51 116 0 128 115 0 5 51 118 0 128 117 0 5 51 120 0 128 119 0 5 51 122 0 128 121 0 5 51 124 0 128 123 0 5 51 126 0 128 125 0 5 51 128 0 128 127 0 5 51 130 0 128 129 0 5 51 132 0 128 131 0 5 51 134 0 128 133 0 50)
:constants (
"dom-document"
(code
:bytecode (20 0 0 1 1 0 49 1 50)
:constants (
"host-global"
"document"))
"dom-window"
(code
:bytecode (20 0 0 1 1 0 49 1 50)
:constants (
"host-global"
"window"))
"dom-body"
(code
:bytecode (20 0 0 20 1 0 48 0 1 2 0 49 2 50)
:constants (
"host-get"
"dom-document"
"body"))
"dom-head"
(code
:bytecode (20 0 0 20 1 0 48 0 1 2 0 49 2 50)
:constants (
"host-get"
"dom-document"
"head"))
"dom-create-element"
(code :arity 2
:bytecode (16 1 33 20 0 20 0 0 20 1 0 48 0 1 2 0 16 1 16 0 49 4 32 15 0 20 0 0 20 1 0 48 0 1 3 0 16 0 49 3 50)
:constants (
"host-call"
"dom-document"
"createElementNS"
"createElement"))
"create-text-node"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-call"
"dom-document"
"createTextNode"))
"create-fragment"
(code
:bytecode (20 0 0 20 1 0 48 0 1 2 0 49 2 50)
:constants (
"host-call"
"dom-document"
"createDocumentFragment"))
"create-comment"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 6 34 4 0 5 1 3 0 49 3 50)
:constants (
"host-call"
"dom-document"
"createComment"
""))
"dom-append"
(code :arity 2
:bytecode (16 0 6 33 3 0 5 16 1 33 15 0 20 0 0 16 0 1 1 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"appendChild"))
"dom-prepend"
(code :arity 2
:bytecode (16 0 6 33 3 0 5 16 1 33 15 0 20 0 0 16 0 1 1 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"prepend"))
"dom-insert-before"
(code :arity 3
:bytecode (16 0 6 33 3 0 5 16 1 33 17 0 20 0 0 16 0 1 1 0 16 1 16 2 49 4 32 1 0 2 50)
:constants (
"host-call"
"insertBefore"))
"dom-insert-after"
(code :arity 2
:bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 2 20 1 0 16 0 1 3 0 48 2 17 3 16 2 33 37 0 16 3 33 17 0 20 4 0 16 2 1 5 0 16 1 16 3 49 4 32 12 0 20 4 0 16 2 1 6 0 16 1 49 3 32 1 0 2 50)
:constants (
"Insert node after ref in the same parent."
"host-get"
"parentNode"
"nextSibling"
"host-call"
"insertBefore"
"appendChild"))
"dom-remove"
(code :arity 1
:bytecode (16 0 33 13 0 20 0 0 16 0 1 1 0 49 2 32 1 0 2 50)
:constants (
"host-call"
"remove"))
"dom-is-active-element?"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 48 2 17 1 16 1 6 33 3 0 5 16 0 33 11 0 16 0 16 1 52 3 0 2 32 1 0 4 50)
:constants (
"host-get"
"dom-document"
"activeElement"
"identical?"))
"dom-is-input-element?"
(code :arity 1
:bytecode (20 1 0 16 0 48 1 6 34 4 0 5 1 2 0 52 0 0 1 17 1 16 1 1 4 0 52 3 0 2 6 34 24 0 5 16 1 1 5 0 52 3 0 2 6 34 10 0 5 16 1 1 6 0 52 3 0 2 50)
:constants (
"upper"
"dom-tag-name"
""
"="
"INPUT"
"TEXTAREA"
"SELECT"))
"dom-is-child-of?"
(code :arity 2
:bytecode (16 0 6 33 20 0 5 16 1 6 33 13 0 5 20 0 0 16 1 1 1 0 16 0 49 3 50)
:constants (
"host-call"
"contains"))
"dom-attr-list"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 52 2 0 0 17 2 16 1 33 38 0 20 0 0 16 1 1 3 0 48 2 17 3 2 17 4 51 4 0 1 3 1 1 1 2 1 4 17 4 16 4 1 5 0 48 1 32 1 0 2 5 16 2 50)
:constants (
"host-get"
"attributes"
"list"
"length"
(code :arity 1 :upvalue-count 4
:bytecode (16 0 18 0 52 0 0 2 33 62 0 20 1 0 18 1 1 2 0 16 0 48 3 17 1 20 3 0 18 2 20 5 0 16 1 1 6 0 48 2 20 5 0 16 1 1 7 0 48 2 52 4 0 2 48 2 5 18 3 16 0 1 9 0 52 8 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"host-call"
"item"
"append!"
"list"
"host-get"
"name"
"value"
"+"
1))
0))
"dom-remove-child"
(code :arity 2
:bytecode (16 0 6 33 3 0 5 16 1 33 15 0 20 0 0 16 0 1 1 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"removeChild"))
"dom-replace-child"
(code :arity 3
:bytecode (16 0 6 33 10 0 5 16 1 6 33 3 0 5 16 2 33 17 0 20 0 0 16 0 1 1 0 16 1 16 2 49 4 32 1 0 2 50)
:constants (
"host-call"
"replaceChild"))
"dom-clone"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 16 1 52 2 0 1 33 4 0 3 32 2 0 16 1 49 3 50)
:constants (
"host-call"
"cloneNode"
"nil?"))
"dom-query"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 18 0 20 1 0 20 2 0 48 0 1 3 0 16 0 49 3 32 12 0 20 1 0 16 0 1 3 0 16 1 49 3 50)
:constants (
"nil?"
"host-call"
"dom-document"
"querySelector"))
"dom-query-all"
(code :arity 2
:bytecode (1 0 0 5 16 1 52 1 0 1 33 18 0 20 2 0 20 3 0 48 0 1 4 0 16 0 48 3 32 12 0 20 2 0 16 0 1 4 0 16 1 48 3 17 2 16 2 52 1 0 1 33 7 0 52 5 0 0 32 44 0 20 6 0 16 2 1 7 0 48 2 17 3 52 5 0 0 17 4 2 17 5 51 8 0 1 3 1 4 1 2 1 5 17 5 16 5 1 9 0 48 1 5 16 4 50)
:constants (
"Query DOM and return an SX list (not a host NodeList)."
"nil?"
"host-call"
"dom-document"
"querySelectorAll"
"list"
"host-get"
"length"
(code :arity 1 :upvalue-count 4
:bytecode (16 0 18 0 52 0 0 2 33 36 0 20 1 0 18 1 20 2 0 18 2 1 3 0 16 0 48 3 48 2 5 18 3 16 0 1 5 0 52 4 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"append!"
"host-call"
"item"
"+"
1))
0))
"dom-query-by-id"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-call"
"dom-document"
"getElementById"))
"dom-closest"
(code :arity 2
:bytecode (16 0 33 15 0 20 0 0 16 0 1 1 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"closest"))
"dom-matches?"
(code :arity 2
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 15 0 20 2 0 16 0 1 1 0 16 1 49 3 32 1 0 4 50)
:constants (
"host-get"
"matches"
"host-call"))
"dom-get-attr"
(code :arity 2
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 32 0 20 2 0 16 0 1 1 0 16 1 48 3 17 2 16 2 52 3 0 1 33 4 0 2 32 2 0 16 2 32 1 0 2 50)
:constants (
"host-get"
"getAttribute"
"host-call"
"nil?"))
"dom-set-attr"
(code :arity 3
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 17 0 20 2 0 16 0 1 1 0 16 1 16 2 49 4 32 1 0 2 50)
:constants (
"host-get"
"setAttribute"
"host-call"))
"dom-remove-attr"
(code :arity 2
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 15 0 20 2 0 16 0 1 1 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-get"
"removeAttribute"
"host-call"))
"dom-has-attr?"
(code :arity 2
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 15 0 20 2 0 16 0 1 1 0 16 1 49 3 32 1 0 4 50)
:constants (
"host-get"
"hasAttribute"
"host-call"))
"dom-add-class"
(code :arity 2
:bytecode (16 0 33 23 0 20 0 0 20 1 0 16 0 1 2 0 48 2 1 3 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"host-get"
"classList"
"add"))
"dom-remove-class"
(code :arity 2
:bytecode (16 0 33 23 0 20 0 0 20 1 0 16 0 1 2 0 48 2 1 3 0 16 1 49 3 32 1 0 2 50)
:constants (
"host-call"
"host-get"
"classList"
"remove"))
"dom-has-class?"
(code :arity 2
:bytecode (16 0 33 23 0 20 0 0 20 1 0 16 0 1 2 0 48 2 1 3 0 16 1 49 3 32 1 0 4 50)
:constants (
"host-call"
"host-get"
"classList"
"contains"))
"dom-text-content"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"textContent"))
"dom-set-text-content"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 16 1 49 3 50)
:constants (
"host-set!"
"textContent"))
"dom-inner-html"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"innerHTML"))
"dom-set-inner-html"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 16 1 49 3 50)
:constants (
"host-set!"
"innerHTML"))
"dom-outer-html"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"outerHTML"))
"dom-insert-adjacent-html"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 16 1 16 2 49 4 50)
:constants (
"host-call"
"insertAdjacentHTML"))
"dom-get-style"
(code :arity 2
:bytecode (20 0 0 20 0 0 16 0 1 1 0 48 2 16 1 49 2 50)
:constants (
"host-get"
"style"))
"dom-set-style"
(code :arity 3
:bytecode (20 0 0 20 1 0 16 0 1 2 0 48 2 1 3 0 16 1 16 2 49 4 50)
:constants (
"host-call"
"host-get"
"style"
"setProperty"))
"dom-get-prop"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"host-get"))
"dom-set-prop"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 16 2 49 3 50)
:constants (
"host-set!"))
"dom-tag-name"
(code :arity 1
:bytecode (16 0 33 25 0 20 1 0 16 0 1 2 0 48 2 6 34 4 0 5 1 3 0 52 0 0 1 32 3 0 1 3 0 50)
:constants (
"lower"
"host-get"
"tagName"
""))
"dom-node-type"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"nodeType"))
"dom-node-name"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"nodeName"))
"dom-id"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"id"))
"dom-parent"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"parentNode"))
"dom-first-child"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"firstChild"))
"dom-next-sibling"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"nextSibling"))
"dom-child-list"
(code :arity 1
:bytecode (1 0 0 5 16 0 33 59 0 20 1 0 16 0 1 2 0 48 2 17 1 20 1 0 16 1 1 3 0 48 2 17 2 52 4 0 0 17 3 2 17 4 51 5 0 1 2 1 3 1 1 1 4 17 4 16 4 1 6 0 48 1 5 16 3 32 4 0 52 4 0 0 50)
:constants (
"Return child nodes as an SX list."
"host-get"
"childNodes"
"length"
"list"
(code :arity 1 :upvalue-count 4
:bytecode (16 0 18 0 52 0 0 2 33 36 0 20 1 0 18 1 20 2 0 18 2 1 3 0 16 0 48 3 48 2 5 18 3 16 0 1 5 0 52 4 0 2 49 1 32 1 0 2 50)
:constants (
"<"
"append!"
"host-call"
"item"
"+"
1))
0))
"dom-is-fragment?"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 1 3 0 52 0 0 2 50)
:constants (
"="
"host-get"
"nodeType"
11))
"dom-child-nodes"
"dom-remove-children-after"
(code :arity 1
:bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 16 1 33 21 0 2 17 2 51 2 0 1 0 1 1 1 2 17 2 16 2 49 0 32 1 0 2 50)
:constants (
"Remove all siblings after marker node."
"dom-parent"
(code :upvalue-count 3
:bytecode (20 0 0 18 0 48 1 17 0 16 0 33 20 0 20 1 0 18 1 1 2 0 16 0 48 3 5 18 2 49 0 32 1 0 2 50)
:constants (
"dom-next-sibling"
"host-call"
"removeChild"))))
"dom-focus"
(code :arity 1
:bytecode (16 0 33 13 0 20 0 0 16 0 1 1 0 49 2 32 1 0 2 50)
:constants (
"host-call"
"focus"))
"dom-parse-html"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 16 0 1 4 0 48 4 17 2 20 5 0 20 5 0 16 2 1 6 0 48 2 1 7 0 49 2 50)
:constants (
"host-new"
"DOMParser"
"host-call"
"parseFromString"
"text/html"
"host-get"
"body"
"childNodes"))
"dom-listen"
(code :arity 3
:bytecode (20 0 0 16 2 48 1 17 3 20 1 0 16 0 1 2 0 16 1 16 3 48 4 5 51 3 0 1 0 1 1 1 3 50)
:constants (
"host-callback"
"host-call"
"addEventListener"
(code :upvalue-count 3
:bytecode (20 0 0 18 0 1 1 0 18 1 18 2 49 4 50)
:constants (
"host-call"
"removeEventListener"))))
"dom-add-listener"
(code :arity 4
:bytecode (20 0 0 16 2 48 1 17 4 16 3 33 19 0 20 1 0 16 0 1 2 0 16 1 16 4 16 3 48 5 32 14 0 20 1 0 16 0 1 2 0 16 1 16 4 48 4 5 51 3 0 1 0 1 1 1 4 50)
:constants (
"host-callback"
"host-call"
"addEventListener"
(code :upvalue-count 3
:bytecode (20 0 0 18 0 1 1 0 18 1 18 2 49 4 50)
:constants (
"host-call"
"removeEventListener"))))
"dom-dispatch"
(code :arity 3
:bytecode (20 0 0 1 1 0 16 1 1 3 0 16 2 1 4 0 3 52 2 0 4 48 3 17 3 20 5 0 16 0 1 6 0 16 3 49 3 50)
:constants (
"host-new"
"CustomEvent"
"dict"
"detail"
"bubbles"
"host-call"
"dispatchEvent"))
"event-detail"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"host-get"
"detail"))
"prevent-default"
(code :arity 1
:bytecode (16 0 33 13 0 20 0 0 16 0 1 1 0 49 2 32 1 0 2 50)
:constants (
"host-call"
"preventDefault"))
"stop-propagation"
(code :arity 1
:bytecode (16 0 33 13 0 20 0 0 16 0 1 1 0 49 2 32 1 0 2 50)
:constants (
"host-call"
"stopPropagation"))
"event-modifier-key?"
(code :arity 1
:bytecode (16 0 6 33 56 0 5 20 0 0 16 0 1 1 0 48 2 6 34 41 0 5 20 0 0 16 0 1 2 0 48 2 6 34 26 0 5 20 0 0 16 0 1 3 0 48 2 6 34 11 0 5 20 0 0 16 0 1 4 0 49 2 50)
:constants (
"host-get"
"ctrlKey"
"metaKey"
"shiftKey"
"altKey"))
"element-value"
(code :arity 1
:bytecode (16 0 6 33 19 0 5 20 2 0 16 0 1 3 0 48 2 52 1 0 1 52 0 0 1 33 13 0 20 2 0 16 0 1 3 0 49 2 32 1 0 2 50)
:constants (
"not"
"nil?"
"host-get"
"value"))
"error-message"
(code :arity 1
:bytecode (16 0 6 33 11 0 5 20 0 0 16 0 1 1 0 48 2 33 13 0 20 0 0 16 0 1 1 0 49 2 32 6 0 16 0 52 2 0 1 50)
:constants (
"host-get"
"message"
"str"))
"dom-get-data"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 17 2 16 2 33 12 0 20 0 0 16 2 16 1 49 2 32 1 0 2 50)
:constants (
"host-get"
"__sx_data"))
"dom-set-data"
(code :arity 3
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 17 0 20 3 0 16 0 1 2 0 52 4 0 0 48 3 32 1 0 2 5 20 3 0 20 1 0 16 0 1 2 0 48 2 16 1 16 2 49 3 50)
:constants (
"not"
"host-get"
"__sx_data"
"host-set!"
"dict"))
"dom-append-to-head"
(code :arity 1
:bytecode (20 0 0 48 0 33 18 0 20 1 0 20 0 0 48 0 1 2 0 16 0 49 3 32 1 0 2 50)
:constants (
"dom-head"
"host-call"
"appendChild"))
"set-document-title"
(code :arity 1
:bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 49 3 50)
:constants (
"host-set!"
"dom-document"
"title")))))

View File

@@ -0,0 +1,657 @@
(sxbc 1 "e038227f8fc8f0ad"
(code
:bytecode (1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 52 1 0 5 128 0 0 5 1 8 0 128 7 0 5 51 10 0 128 9 0 5 51 12 0 128 11 0 5 51 14 0 128 13 0 5 51 16 0 128 15 0 5 51 18 0 128 17 0 5 51 20 0 128 19 0 5 51 22 0 128 21 0 5 51 24 0 128 23 0 5 51 26 0 128 25 0 5 51 28 0 128 27 0 5 51 30 0 128 29 0 5 51 32 0 128 31 0 5 51 34 0 128 33 0 5 51 36 0 128 35 0 5 51 38 0 128 37 0 5 51 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 0 5 51 46 0 128 45 0 5 51 48 0 128 47 0 5 51 50 0 128 49 0 5 51 52 0 128 51 0 5 51 54 0 128 53 0 5 51 56 0 128 55 0 5 1 58 0 128 57 0 5 51 60 0 128 59 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 5 51 68 0 128 67 0 5 51 70 0 128 69 0 50)
:constants (
"ENGINE_VERBS"
"list"
"get"
"post"
"put"
"delete"
"patch"
"DEFAULT_SWAP"
"outerHTML"
"parse-time"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 74 0 16 0 1 3 0 52 2 0 2 33 12 0 16 0 1 1 0 52 4 0 2 32 50 0 16 0 1 5 0 52 2 0 2 33 29 0 16 0 1 5 0 1 8 0 52 7 0 3 1 1 0 52 4 0 2 1 9 0 52 6 0 2 32 9 0 16 0 1 1 0 52 4 0 2 50)
:constants (
"nil?"
0
"ends-with?"
"ms"
"parse-int"
"s"
"*"
"replace"
""
1000))
"parse-trigger-spec"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 4 0 2 32 27 0 16 0 1 2 0 52 1 0 2 17 1 51 4 0 51 6 0 16 1 52 5 0 2 52 3 0 2 50)
:constants (
"nil?"
"split"
","
"filter"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 50)
:constants (
"not"
"nil?"))
"map"
(code :arity 1
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 17 1 16 1 52 3 0 1 33 4 0 2 32 111 0 16 1 52 5 0 1 1 6 0 52 4 0 2 6 33 14 0 5 16 1 52 8 0 1 1 9 0 52 7 0 2 33 37 0 1 11 0 1 6 0 1 12 0 1 13 0 20 14 0 16 1 1 16 0 52 15 0 2 48 1 52 10 0 2 52 10 0 4 32 40 0 52 10 0 0 17 2 51 18 0 1 2 16 1 52 19 0 1 52 17 0 2 5 1 11 0 16 1 52 5 0 1 1 12 0 16 2 52 10 0 4 50)
:constants (
"split"
"trim"
" "
"empty?"
"="
"first"
"every"
">="
"len"
2
"dict"
"event"
"modifiers"
"interval"
"parse-time"
"nth"
1
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 1 0 52 0 0 2 33 13 0 18 0 1 1 0 3 52 2 0 3 32 97 0 16 0 1 3 0 52 0 0 2 33 13 0 18 0 1 3 0 3 52 2 0 3 32 72 0 16 0 1 5 0 52 4 0 2 33 26 0 18 0 1 6 0 20 7 0 16 0 1 9 0 52 8 0 2 48 1 52 2 0 3 32 34 0 16 0 1 10 0 52 4 0 2 33 21 0 18 0 1 11 0 16 0 1 12 0 52 8 0 2 52 2 0 3 32 1 0 2 50)
:constants (
"="
"once"
"dict-set!"
"changed"
"starts-with?"
"delay:"
"delay"
"parse-time"
"slice"
6
"from:"
"from"
5))
"rest"))))
"default-trigger"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 24 0 1 4 0 1 5 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 85 0 16 0 1 7 0 52 0 0 2 6 34 24 0 5 16 0 1 8 0 52 0 0 2 6 34 10 0 5 16 0 1 9 0 52 0 0 2 33 24 0 1 4 0 1 10 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 21 0 1 4 0 1 11 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 50)
:constants (
"="
"FORM"
"list"
"dict"
"event"
"submit"
"modifiers"
"INPUT"
"SELECT"
"TEXTAREA"
"change"
"click"))
"get-verb-info"
(code :arity 1
:bytecode (51 1 0 1 0 20 2 0 52 0 0 2 50)
:constants (
"some"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 1 2 0 16 0 52 1 0 2 48 2 17 1 16 1 33 21 0 1 4 0 16 0 52 5 0 1 1 6 0 16 1 52 3 0 4 32 1 0 2 50)
:constants (
"dom-get-attr"
"str"
"sx-"
"dict"
"method"
"upper"
"url"))
"ENGINE_VERBS"))
"build-request-headers"
(code :arity 3
:bytecode (1 1 0 1 2 0 1 3 0 20 4 0 48 0 52 0 0 4 17 3 20 5 0 16 0 1 6 0 48 2 17 4 16 4 33 14 0 16 3 1 8 0 16 4 52 7 0 3 32 1 0 2 5 20 5 0 20 9 0 1 10 0 48 1 1 11 0 48 2 17 4 16 4 33 14 0 16 3 1 12 0 16 4 52 7 0 3 32 1 0 2 5 16 2 33 14 0 16 3 1 13 0 16 2 52 7 0 3 32 1 0 2 5 20 5 0 16 0 1 14 0 48 2 17 4 16 4 33 38 0 20 15 0 16 4 48 1 17 5 16 5 33 20 0 51 17 0 1 3 1 5 16 5 52 18 0 1 52 16 0 2 32 1 0 2 32 1 0 2 5 16 3 50)
:constants (
"dict"
"SX-Request"
"true"
"SX-Current-URL"
"browser-location-href"
"dom-get-attr"
"sx-target"
"dict-set!"
"SX-Target"
"dom-query"
"script[data-components][data-hash]"
"data-hash"
"SX-Components-Hash"
"SX-Css"
"sx-headers"
"parse-header-value"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 18 1 16 0 52 2 0 2 52 1 0 1 52 0 0 3 50)
:constants (
"dict-set!"
"str"
"get"))
"keys"))
"process-response-headers"
(code :arity 1
:bytecode (1 1 0 16 0 1 2 0 48 1 1 3 0 16 0 1 4 0 48 1 1 5 0 16 0 1 6 0 48 1 1 7 0 16 0 1 8 0 48 1 1 9 0 16 0 1 10 0 48 1 1 11 0 16 0 1 12 0 48 1 1 13 0 16 0 1 14 0 48 1 1 15 0 16 0 1 16 0 48 1 1 17 0 16 0 1 18 0 48 1 1 19 0 16 0 1 20 0 48 1 1 21 0 16 0 1 22 0 48 1 1 23 0 16 0 1 24 0 48 1 1 25 0 16 0 1 26 0 48 1 52 0 0 26 50)
:constants (
"dict"
"redirect"
"SX-Redirect"
"refresh"
"SX-Refresh"
"trigger"
"SX-Trigger"
"retarget"
"SX-Retarget"
"reswap"
"SX-Reswap"
"location"
"SX-Location"
"replace-url"
"SX-Replace-Url"
"css-hash"
"SX-Css-Hash"
"trigger-swap"
"SX-Trigger-After-Swap"
"trigger-settle"
"SX-Trigger-After-Settle"
"content-type"
"Content-Type"
"cache-invalidate"
"SX-Cache-Invalidate"
"cache-update"
"SX-Cache-Update"))
"parse-swap-spec"
(code :arity 2
:bytecode (16 0 6 34 4 0 5 20 1 0 1 2 0 52 0 0 2 17 2 16 2 52 3 0 1 17 3 16 1 17 4 51 5 0 1 4 16 2 52 6 0 1 52 4 0 2 5 1 8 0 16 3 1 9 0 16 4 52 7 0 4 50)
:constants (
"split"
"DEFAULT_SWAP"
" "
"first"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 1 0 52 0 0 2 33 6 0 3 19 0 32 19 0 16 0 1 2 0 52 0 0 2 33 6 0 4 19 0 32 1 0 2 50)
:constants (
"="
"transition:true"
"transition:false"))
"rest"
"dict"
"style"
"transition"))
"parse-retry-spec"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 4 0 2 32 62 0 16 0 1 2 0 52 1 0 2 17 1 1 4 0 16 1 52 5 0 1 1 6 0 16 1 1 9 0 52 8 0 2 1 10 0 52 7 0 2 1 11 0 16 1 1 12 0 52 8 0 2 1 13 0 52 7 0 2 52 3 0 6 50)
:constants (
"nil?"
"split"
":"
"dict"
"strategy"
"first"
"start-ms"
"parse-int"
"nth"
1
1000
"cap-ms"
2
30000))
"next-retry-ms"
(code :arity 2
:bytecode (16 0 1 2 0 52 1 0 2 16 1 52 0 0 2 50)
:constants (
"min"
"*"
2))
"filter-params"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 5 0 16 1 32 116 0 16 0 1 2 0 52 1 0 2 33 7 0 52 3 0 0 32 97 0 16 0 1 4 0 52 1 0 2 33 5 0 16 1 32 80 0 16 0 1 6 0 52 5 0 2 33 39 0 20 8 0 16 0 1 11 0 52 10 0 2 1 12 0 52 9 0 2 52 7 0 2 17 2 51 14 0 1 2 16 1 52 13 0 2 32 29 0 20 8 0 16 0 1 12 0 52 9 0 2 52 7 0 2 17 2 51 15 0 1 2 16 1 52 13 0 2 50)
:constants (
"nil?"
"="
"none"
"list"
"*"
"starts-with?"
"not "
"map"
"trim"
"split"
"slice"
4
","
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 2 0 1 52 1 0 2 52 0 0 1 50)
:constants (
"not"
"contains?"
"first"))
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 1 0 1 52 0 0 2 50)
:constants (
"contains?"
"first"))))
"resolve-target"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 6 34 10 0 5 16 1 1 4 0 52 3 0 2 33 5 0 16 0 32 29 0 16 1 1 5 0 52 3 0 2 33 10 0 20 6 0 16 0 49 1 32 7 0 20 7 0 16 1 49 1 50)
:constants (
"dom-get-attr"
"sx-target"
"nil?"
"="
"this"
"closest"
"dom-parent"
"dom-query"))
"apply-optimistic"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 33 4 0 2 32 191 0 20 3 0 16 0 48 1 6 34 3 0 5 16 0 17 2 1 5 0 16 2 1 6 0 16 1 52 4 0 4 17 3 16 1 1 8 0 52 7 0 2 33 50 0 16 3 1 10 0 20 11 0 16 2 1 10 0 48 2 52 9 0 3 5 20 12 0 16 2 1 10 0 1 13 0 48 3 5 20 12 0 16 2 1 14 0 1 15 0 48 3 32 94 0 16 1 1 16 0 52 7 0 2 33 34 0 16 3 1 17 0 20 18 0 16 2 1 17 0 48 2 52 9 0 3 5 20 19 0 16 2 1 17 0 3 48 3 32 48 0 16 1 1 21 0 52 20 0 2 33 35 0 16 1 1 23 0 52 22 0 2 17 4 16 3 1 24 0 16 4 52 9 0 3 5 20 25 0 16 2 16 4 48 2 32 1 0 2 5 16 3 50)
:constants (
"dom-get-attr"
"sx-optimistic"
"nil?"
"resolve-target"
"dict"
"target"
"directive"
"="
"remove"
"dict-set!"
"opacity"
"dom-get-style"
"dom-set-style"
"0"
"pointer-events"
"none"
"disable"
"disabled"
"dom-get-prop"
"dom-set-prop"
"starts-with?"
"add-class:"
"slice"
10
"add-class"
"dom-add-class"))
"revert-optimistic"
(code :arity 1
:bytecode (16 0 33 153 0 16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 2 1 4 0 52 3 0 2 33 44 0 20 5 0 16 1 1 6 0 16 0 1 6 0 52 0 0 2 6 34 4 0 5 1 7 0 48 3 5 20 5 0 16 1 1 8 0 1 7 0 49 3 32 72 0 16 2 1 9 0 52 3 0 2 33 28 0 20 10 0 16 1 1 11 0 16 0 1 11 0 52 0 0 2 6 34 2 0 5 4 49 3 32 32 0 16 0 1 12 0 52 0 0 2 33 19 0 20 13 0 16 1 16 0 1 12 0 52 0 0 2 49 2 32 1 0 2 32 1 0 2 50)
:constants (
"get"
"target"
"directive"
"="
"remove"
"dom-set-style"
"opacity"
""
"pointer-events"
"disable"
"dom-set-prop"
"disabled"
"add-class"
"dom-remove-class"))
"find-oob-swaps"
(code :arity 1
:bytecode (52 0 0 0 17 1 51 2 0 1 0 1 1 1 3 0 1 4 0 52 0 0 2 52 1 0 2 5 16 1 50)
:constants (
"list"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 18 0 1 2 0 16 0 1 3 0 52 1 0 3 48 2 17 1 51 5 0 1 0 0 1 16 1 52 4 0 2 50)
:constants (
"dom-query-all"
"str"
"["
"]"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 18 0 48 2 6 34 4 0 5 1 1 0 17 1 20 2 0 16 0 48 1 17 2 20 3 0 16 0 18 0 48 2 5 16 2 33 29 0 20 4 0 18 1 1 6 0 16 0 1 7 0 16 1 1 8 0 16 2 52 5 0 6 49 2 32 1 0 2 50)
:constants (
"dom-get-attr"
"outerHTML"
"dom-id"
"dom-remove-attr"
"append!"
"dict"
"element"
"swap-type"
"target-id"))))
"sx-swap-oob"
"hx-swap-oob"))
"morph-node"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 11 0 5 20 0 0 16 0 1 2 0 48 2 33 4 0 2 32 137 1 20 0 0 16 0 1 3 0 48 2 6 33 55 0 5 20 4 0 16 0 1 5 0 48 2 6 33 40 0 5 20 0 0 16 1 1 3 0 48 2 6 33 25 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 33 12 0 20 8 0 16 0 16 1 49 2 32 53 1 20 10 0 16 0 48 1 20 10 0 16 1 48 1 52 6 0 2 52 9 0 1 6 34 23 0 5 20 11 0 16 0 48 1 20 11 0 16 1 48 1 52 6 0 2 52 9 0 1 33 24 0 20 12 0 20 13 0 16 0 48 1 20 14 0 16 1 48 1 16 0 49 3 32 233 0 20 10 0 16 0 48 1 1 15 0 52 6 0 2 6 34 15 0 5 20 10 0 16 0 48 1 1 16 0 52 6 0 2 33 46 0 20 17 0 16 0 48 1 20 17 0 16 1 48 1 52 6 0 2 52 9 0 1 33 17 0 20 18 0 16 0 20 17 0 16 1 48 1 49 2 32 1 0 2 32 151 0 20 10 0 16 0 48 1 1 19 0 52 6 0 2 33 133 0 20 0 0 16 0 1 3 0 48 2 6 33 44 0 5 20 0 0 16 1 1 3 0 48 2 6 33 29 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 52 9 0 1 33 18 0 20 20 0 16 0 48 1 5 20 21 0 16 0 48 1 32 1 0 2 5 20 22 0 16 0 16 1 48 2 5 20 23 0 16 0 48 1 6 33 8 0 5 20 24 0 16 0 48 1 52 9 0 1 33 12 0 20 25 0 16 0 16 1 49 2 32 1 0 2 32 1 0 2 50)
:constants (
"dom-has-attr?"
"sx-preserve"
"sx-ignore"
"data-sx-island"
"is-processed?"
"island-hydrated"
"="
"dom-get-attr"
"morph-island-children"
"not"
"dom-node-type"
"dom-node-name"
"dom-replace-child"
"dom-parent"
"dom-clone"
3
8
"dom-text-content"
"dom-set-text-content"
1
"dispose-island"
"dispose-islands-in"
"sync-attrs"
"dom-is-active-element?"
"dom-is-input-element?"
"morph-children"))
"sync-attrs"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 2 16 2 52 3 0 1 33 7 0 52 4 0 0 32 9 0 16 2 1 6 0 52 5 0 2 17 3 51 8 0 1 0 1 3 20 9 0 16 1 48 1 52 7 0 2 5 51 10 0 1 1 1 3 1 0 20 9 0 16 0 48 1 52 7 0 2 50)
:constants (
"dom-get-attr"
"data-sx-reactive-attrs"
""
"empty?"
"list"
"split"
","
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 20 5 0 18 0 16 1 48 2 16 2 52 4 0 2 52 3 0 1 6 33 13 0 5 18 1 16 1 52 6 0 2 52 3 0 1 33 14 0 20 7 0 18 0 16 1 16 2 49 3 32 1 0 2 50)
:constants (
"first"
"nth"
1
"not"
"="
"dom-get-attr"
"contains?"
"dom-set-attr"))
"dom-attr-list"
(code :arity 1 :upvalue-count 3
:bytecode (16 0 52 0 0 1 17 1 20 2 0 18 0 16 1 48 2 52 1 0 1 6 33 31 0 5 18 1 16 1 52 3 0 2 52 1 0 1 6 33 14 0 5 16 1 1 5 0 52 4 0 2 52 1 0 1 33 12 0 20 6 0 18 2 16 1 49 2 32 1 0 2 50)
:constants (
"first"
"not"
"dom-has-attr?"
"contains?"
"="
"data-sx-reactive-attrs"
"dom-remove-attr"))))
"morph-children"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 20 0 0 16 1 48 1 17 3 51 2 0 52 3 0 0 16 2 52 1 0 3 17 4 1 4 0 17 5 51 6 0 1 4 1 5 1 2 1 0 16 3 52 5 0 2 5 51 7 0 1 5 1 2 1 0 16 5 16 2 52 9 0 1 52 8 0 2 52 5 0 2 50)
:constants (
"dom-child-list"
"reduce"
(code :arity 2
:bytecode (20 0 0 16 1 48 1 17 2 16 2 33 16 0 16 0 16 2 16 1 52 1 0 3 5 16 0 32 2 0 16 0 50)
:constants (
"dom-id"
"dict-set!"))
"dict"
0
"for-each"
(code :arity 1 :upvalue-count 4
:bytecode (20 0 0 16 0 48 1 17 1 16 1 33 11 0 18 0 16 1 52 1 0 2 32 1 0 2 17 2 16 2 6 33 11 0 5 16 2 52 3 0 1 52 2 0 1 33 100 0 18 1 18 2 52 5 0 1 52 4 0 2 6 33 19 0 5 16 2 18 2 18 1 52 7 0 2 52 6 0 2 52 2 0 1 33 39 0 20 8 0 18 3 16 2 18 1 18 2 52 5 0 1 52 4 0 2 33 11 0 18 2 18 1 52 7 0 2 32 1 0 2 48 3 32 1 0 2 5 20 9 0 16 2 16 0 48 2 5 18 1 52 10 0 1 19 1 32 100 0 18 1 18 2 52 5 0 1 52 4 0 2 33 71 0 18 2 18 1 52 7 0 2 17 3 20 0 0 16 3 48 1 6 33 7 0 5 16 1 52 2 0 1 33 19 0 20 8 0 18 3 20 11 0 16 0 48 1 16 3 49 3 32 18 0 20 9 0 16 3 16 0 48 2 5 18 1 52 10 0 1 19 1 32 14 0 20 12 0 18 3 20 11 0 16 0 48 1 49 2 50)
:constants (
"dom-id"
"dict-get"
"not"
"nil?"
"<"
"len"
"="
"nth"
"dom-insert-before"
"morph-node"
"inc"
"dom-clone"
"dom-append"))
(code :arity 1 :upvalue-count 3
:bytecode (16 0 18 0 52 0 0 2 33 76 0 18 1 16 0 52 1 0 2 17 1 20 2 0 16 1 18 2 48 2 6 33 34 0 5 20 4 0 16 1 1 5 0 48 2 52 3 0 1 6 33 15 0 5 20 4 0 16 1 1 6 0 48 2 52 3 0 1 33 12 0 20 7 0 18 2 16 1 49 2 32 1 0 2 32 1 0 2 50)
:constants (
">="
"nth"
"dom-is-child-of?"
"not"
"dom-has-attr?"
"sx-preserve"
"sx-ignore"
"dom-remove-child"))
"range"
"len"))
"morph-island-children"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 17 2 20 0 0 16 1 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 0 0 16 1 1 2 0 48 2 17 5 52 3 0 0 17 6 52 3 0 0 17 7 51 5 0 1 6 16 3 52 4 0 2 5 51 6 0 1 7 16 5 52 4 0 2 5 51 7 0 1 6 16 2 52 4 0 2 5 51 8 0 1 7 1 0 16 4 52 4 0 2 5 20 9 0 16 1 49 1 50)
:constants (
"dom-query-all"
"[data-sx-lake]"
"[data-sx-marsh]"
"dict"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-sx-lake"
"dict-set!"))
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-sx-marsh"
"dict-set!"))
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 22 0 20 3 0 16 0 16 2 48 2 5 20 4 0 16 0 16 2 49 2 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-sx-lake"
"dict-get"
"sync-attrs"
"morph-children"))
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 14 0 20 3 0 16 0 16 2 18 1 49 3 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-sx-marsh"
"dict-get"
"morph-marsh"))
"process-signal-updates"))
"morph-marsh"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 3 0 16 1 48 1 17 5 16 4 6 33 18 0 5 16 5 6 33 11 0 5 16 5 52 5 0 1 52 4 0 1 33 61 0 20 6 0 16 5 48 1 17 6 16 3 33 16 0 20 7 0 16 3 16 6 52 8 0 1 48 2 32 2 0 16 6 17 7 20 9 0 16 0 48 1 5 20 10 0 16 0 51 11 0 1 7 1 4 1 0 49 2 32 19 0 20 12 0 16 0 16 1 48 2 5 20 13 0 16 0 16 1 49 2 50)
:constants (
"dom-get-data"
"sx-marsh-transform"
"sx-marsh-env"
"dom-inner-html"
"not"
"empty?"
"parse"
"cek-call"
"list"
"dispose-marsh-scope"
"with-marsh-scope"
(code :upvalue-count 3
:bytecode (20 0 0 18 0 18 1 2 48 3 17 0 20 1 0 18 2 2 48 2 5 20 2 0 18 2 16 0 49 2 50)
:constants (
"render-to-dom"
"dom-remove-children-after"
"dom-append"))
"sync-attrs"
"morph-children"))
"process-signal-updates"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)
:constants (
"dom-query-all"
"[data-sx-signal]"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 94 0 16 1 1 3 0 52 2 0 2 17 2 16 2 1 5 0 52 4 0 2 33 67 0 16 1 1 5 0 16 2 52 6 0 3 17 3 16 1 16 2 1 8 0 52 7 0 2 52 6 0 2 17 4 20 9 0 16 4 48 1 17 5 20 10 0 20 11 0 16 3 48 1 16 5 48 2 5 20 12 0 16 0 1 1 0 49 2 32 1 0 2 32 1 0 2 50)
:constants (
"dom-get-attr"
"data-sx-signal"
"index-of"
":"
">"
0
"slice"
"+"
1
"json-parse"
"reset!"
"use-store"
"dom-remove-attr"))))
"swap-dom-nodes"
(code :arity 3
:bytecode (16 2 6 1 0 0 52 1 0 2 33 56 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 32 73 1 6 1 7 0 52 1 0 2 33 117 0 5 20 8 0 16 0 48 1 17 3 20 9 0 16 1 48 1 17 4 20 2 0 16 1 48 1 33 71 0 20 10 0 16 1 48 1 17 5 16 5 33 45 0 20 9 0 16 5 48 1 17 4 5 20 11 0 16 3 16 4 16 0 48 3 5 20 12 0 16 5 48 1 17 6 20 13 0 16 3 16 4 16 6 48 3 32 9 0 20 14 0 16 3 16 0 48 2 32 11 0 20 11 0 16 3 16 4 16 0 48 3 5 16 4 32 201 0 6 1 15 0 52 1 0 2 33 13 0 5 20 16 0 16 0 16 1 49 2 32 177 0 6 1 17 0 52 1 0 2 33 13 0 5 20 6 0 16 0 16 1 49 2 32 153 0 6 1 18 0 52 1 0 2 33 13 0 5 20 19 0 16 0 16 1 49 2 32 129 0 6 1 20 0 52 1 0 2 33 20 0 5 20 21 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 98 0 6 1 22 0 52 1 0 2 33 18 0 5 20 14 0 20 8 0 16 0 48 1 16 0 49 2 32 69 0 6 1 23 0 52 1 0 2 33 5 0 5 2 32 53 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 50)
:constants (
"innerHTML"
"="
"dom-is-fragment?"
"morph-children"
"dom-create-element"
"div"
"dom-append"
"outerHTML"
"dom-parent"
"dom-clone"
"dom-first-child"
"dom-replace-child"
"dom-next-sibling"
"insert-remaining-siblings"
"dom-remove-child"
"afterend"
"dom-insert-after"
"beforeend"
"afterbegin"
"dom-prepend"
"beforebegin"
"dom-insert-before"
"delete"
"none"))
"insert-remaining-siblings"
(code :arity 3
:bytecode (16 2 33 33 0 20 0 0 16 2 48 1 17 3 20 1 0 16 1 16 2 48 2 5 20 2 0 16 0 16 2 16 3 49 3 32 1 0 2 50)
:constants (
"dom-next-sibling"
"dom-insert-after"
"insert-remaining-siblings"))
"swap-html-string"
(code :arity 3
:bytecode (16 2 6 1 0 0 52 1 0 2 33 13 0 5 20 2 0 16 0 16 1 49 2 32 212 0 6 1 3 0 52 1 0 2 33 38 0 5 20 4 0 16 0 48 1 17 3 20 5 0 16 0 1 6 0 16 1 48 3 5 20 7 0 16 3 16 0 48 2 5 16 3 32 163 0 6 1 6 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 6 0 16 1 49 3 32 136 0 6 1 8 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 8 0 16 1 49 3 32 109 0 6 1 9 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 9 0 16 1 49 3 32 82 0 6 1 10 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 10 0 16 1 49 3 32 55 0 6 1 11 0 52 1 0 2 33 18 0 5 20 7 0 20 4 0 16 0 48 1 16 0 49 2 32 26 0 6 1 12 0 52 1 0 2 33 5 0 5 2 32 10 0 5 20 2 0 16 0 16 1 49 2 50)
:constants (
"innerHTML"
"="
"dom-set-inner-html"
"outerHTML"
"dom-parent"
"dom-insert-adjacent-html"
"afterend"
"dom-remove-child"
"beforeend"
"afterbegin"
"beforebegin"
"delete"
"none"))
"handle-history"
(code :arity 3
:bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 16 2 1 4 0 52 3 0 2 17 5 16 5 33 10 0 20 5 0 16 5 49 1 32 101 0 16 3 6 33 14 0 5 16 3 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 9 0 16 3 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 3 49 1 32 51 0 16 4 6 33 14 0 5 16 4 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 5 0 16 4 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 4 49 1 32 1 0 2 50)
:constants (
"dom-get-attr"
"sx-push-url"
"sx-replace-url"
"get"
"replace-url"
"browser-replace-state"
"not"
"="
"false"
"browser-push-state"
"true"))
"PRELOAD_TTL"
30000
"preload-cache-get"
(code :arity 2
:bytecode (16 0 16 1 52 0 0 2 17 2 16 2 52 1 0 1 33 4 0 2 32 52 0 20 4 0 48 0 16 2 1 6 0 52 5 0 2 52 3 0 2 20 7 0 52 2 0 2 33 13 0 16 0 16 1 52 8 0 2 5 2 32 11 0 16 0 16 1 52 8 0 2 5 16 2 50)
:constants (
"dict-get"
"nil?"
">"
"-"
"now-ms"
"get"
"timestamp"
"PRELOAD_TTL"
"dict-delete!"))
"preload-cache-set"
(code :arity 4
:bytecode (16 0 16 1 1 2 0 16 2 1 3 0 16 3 1 4 0 20 5 0 48 0 52 1 0 6 52 0 0 3 50)
:constants (
"dict-set!"
"dict"
"text"
"content-type"
"timestamp"
"now-ms"))
"classify-trigger"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 1 1 3 0 52 2 0 2 33 6 0 1 4 0 32 57 0 16 1 1 5 0 52 2 0 2 33 6 0 1 5 0 32 39 0 16 1 1 6 0 52 2 0 2 33 6 0 1 6 0 32 21 0 16 1 1 7 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 1 0 50)
:constants (
"get"
"event"
"="
"every"
"poll"
"intersect"
"load"
"revealed"))
"should-boost-link?"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 119 0 5 16 1 1 4 0 52 3 0 2 52 2 0 1 6 33 101 0 5 16 1 1 5 0 52 3 0 2 52 2 0 1 6 33 83 0 5 16 1 1 6 0 52 3 0 2 52 2 0 1 6 33 65 0 5 20 7 0 16 1 48 1 6 33 53 0 5 20 8 0 16 0 1 9 0 48 2 52 2 0 1 6 33 34 0 5 20 8 0 16 0 1 10 0 48 2 52 2 0 1 6 33 15 0 5 20 8 0 16 0 1 11 0 48 2 52 2 0 1 50)
:constants (
"dom-get-attr"
"href"
"not"
"starts-with?"
"#"
"javascript:"
"mailto:"
"browser-same-origin?"
"dom-has-attr?"
"sx-get"
"sx-post"
"sx-disable"))
"should-boost-form?"
(code :arity 1
:bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 34 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 4 0 48 2 52 0 0 1 50)
:constants (
"not"
"dom-has-attr?"
"sx-get"
"sx-post"
"sx-disable"))
"parse-sse-swap"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 50)
:constants (
"dom-get-attr"
"sx-sse-swap"
"message")))))

View File

@@ -0,0 +1,107 @@
(sxbc 1 "19bca721c37b25b6"
(code
:bytecode (52 1 0 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 50)
:constants (
"freeze-registry"
"dict"
"freeze-signal"
(code :arity 2
:bytecode (1 1 0 2 52 0 0 2 17 2 16 2 33 56 0 20 3 0 16 2 52 2 0 2 6 34 5 0 5 52 4 0 0 17 3 20 5 0 16 3 1 7 0 16 0 1 8 0 16 1 52 6 0 4 48 2 5 20 3 0 16 2 16 3 52 9 0 3 32 1 0 2 50)
:constants (
"context"
"sx-freeze-scope"
"get"
"freeze-registry"
"list"
"append!"
"dict"
"name"
"signal"
"dict-set!"))
"freeze-scope"
(code :arity 2
:bytecode (1 1 0 16 0 52 0 0 2 5 20 3 0 16 0 52 4 0 0 52 2 0 3 5 20 5 0 16 1 2 48 2 5 1 1 0 52 6 0 1 5 2 50)
:constants (
"scope-push!"
"sx-freeze-scope"
"dict-set!"
"freeze-registry"
"list"
"cek-call"
"scope-pop!"))
"cek-freeze-scope"
(code :arity 1
:bytecode (20 1 0 16 0 52 0 0 2 6 34 5 0 5 52 2 0 0 17 1 52 3 0 0 17 2 51 5 0 1 2 16 1 52 4 0 2 5 1 6 0 16 0 1 7 0 16 2 52 3 0 4 50)
:constants (
"get"
"freeze-registry"
"list"
"dict"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 1 2 0 52 1 0 2 20 3 0 16 0 1 4 0 52 1 0 2 48 1 52 0 0 3 50)
:constants (
"dict-set!"
"get"
"name"
"signal-value"
"signal"))
"name"
"signals"))
"cek-freeze-all"
(code
:bytecode (51 1 0 20 3 0 52 2 0 1 52 0 0 2 50)
:constants (
"map"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"cek-freeze-scope"))
"keys"
"freeze-registry"))
"cek-thaw-scope"
(code :arity 2
:bytecode (20 1 0 16 0 52 0 0 2 6 34 5 0 5 52 2 0 0 17 2 16 1 1 3 0 52 0 0 2 17 3 16 3 33 14 0 51 5 0 1 3 16 2 52 4 0 2 32 1 0 2 50)
:constants (
"get"
"freeze-registry"
"list"
"signals"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 18 0 16 1 52 0 0 2 17 3 16 3 52 4 0 1 52 3 0 1 33 12 0 20 5 0 16 2 16 3 49 2 32 1 0 2 50)
:constants (
"get"
"name"
"signal"
"not"
"nil?"
"reset!"))))
"cek-thaw-all"
(code :arity 1
:bytecode (51 1 0 16 0 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 0 49 2 50)
:constants (
"cek-thaw-scope"
"get"
"name"))))
"freeze-to-sx"
(code :arity 1
:bytecode (20 0 0 20 1 0 16 0 48 1 49 1 50)
:constants (
"sx-serialize"
"cek-freeze-scope"))
"thaw-from-sx"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 1 52 2 0 1 52 1 0 1 33 27 0 16 1 52 3 0 1 17 2 20 4 0 16 2 1 6 0 52 5 0 2 16 2 49 2 32 1 0 2 50)
:constants (
"sx-parse"
"not"
"empty?"
"first"
"cek-thaw-scope"
"get"
"name")))))

View File

@@ -0,0 +1,119 @@
(sxbc 1 "57726b5b82c1a3cb"
(code
: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 50)
:constants (
"assert-signal-value"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 2 16 1 1 3 0 16 1 1 4 0 16 2 52 2 0 4 49 3 50)
:constants (
"deref"
"assert="
"str"
"Expected signal value "
", got "))
"assert-signal-has-subscribers"
(code :arity 1
:bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)
:constants (
"assert"
">"
"len"
"signal-subscribers"
0
"Expected signal to have subscribers"))
"assert-signal-no-subscribers"
(code :arity 1
:bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)
:constants (
"assert"
"="
"len"
"signal-subscribers"
0
"Expected signal to have no subscribers"))
"assert-signal-subscriber-count"
(code :arity 2
:bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 0 4 49 3 50)
:constants (
"len"
"signal-subscribers"
"assert="
"str"
"Expected "
" subscribers, got "))
"simulate-signal-set!"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"reset!"))
"simulate-signal-swap!"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 49 2 50)
:constants (
"swap!"))
"assert-computed-dep-count"
(code :arity 2
:bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 0 4 49 3 50)
:constants (
"len"
"signal-deps"
"assert="
"str"
"Expected "
" deps, got "))
"assert-computed-depends-on"
(code :arity 2
:bytecode (20 0 0 20 2 0 16 0 48 1 16 1 52 1 0 2 1 3 0 49 2 50)
:constants (
"assert"
"contains?"
"signal-deps"
"Expected computed to depend on the given signal"))
"count-effect-runs"
(code :arity 1
:bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 51 3 0 1 1 48 1 5 1 1 0 17 2 20 2 0 51 4 0 1 2 1 0 48 1 17 3 16 2 50)
:constants (
"signal"
0
"effect"
(code :upvalue-count 1
:bytecode (20 0 0 18 0 49 1 50)
:constants (
"deref"))
(code :upvalue-count 2
:bytecode (18 0 1 1 0 52 0 0 2 19 0 5 20 2 0 18 1 2 49 2 50)
:constants (
"+"
1
"cek-call"))))
"make-test-signal"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 52 1 0 0 17 2 20 2 0 51 3 0 1 2 1 1 48 1 5 1 0 0 16 1 1 4 0 16 2 65 2 0 50)
:constants (
"signal"
"list"
"effect"
(code :upvalue-count 2
:bytecode (20 0 0 18 0 20 1 0 18 1 48 1 49 2 50)
:constants (
"append!"
"deref"))
"history"))
"assert-batch-coalesces"
(code :arity 2
:bytecode (1 0 0 17 2 20 1 0 1 0 0 48 1 17 3 20 2 0 51 3 0 1 3 1 2 48 1 5 1 0 0 17 2 5 20 4 0 16 0 48 1 5 20 5 0 16 2 16 1 1 7 0 16 1 1 8 0 16 2 52 6 0 4 49 3 50)
:constants (
0
"signal"
"effect"
(code :upvalue-count 2
:bytecode (20 0 0 18 0 48 1 5 18 1 1 2 0 52 1 0 2 19 1 50)
:constants (
"deref"
"+"
1))
"batch"
"assert="
"str"
"Expected "
" notifications, got ")))))

View File

@@ -0,0 +1,393 @@
(sxbc 1 "b94a32e5b86d6f76"
(code
: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 50)
:constants (
"mock-element"
(code :arity 3
:bytecode (1 0 0 52 1 0 0 1 2 0 65 0 0 1 3 0 52 1 0 0 1 4 0 16 0 1 5 0 1 6 0 1 7 0 65 0 0 16 1 33 11 0 1 9 0 16 1 65 1 0 32 3 0 65 0 0 16 2 33 11 0 1 10 0 16 2 65 1 0 32 3 0 65 0 0 52 8 0 3 65 6 0 50)
:constants (
"children"
"list"
"listeners"
"event-log"
"tag"
"text"
""
"attrs"
"merge"
"class"
"id"))
"mock-set-text!"
(code :arity 2
:bytecode (16 0 1 1 0 16 1 52 0 0 3 50)
:constants (
"dict-set!"
"text"))
"mock-append-child!"
(code :arity 2
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 1 49 2 50)
:constants (
"append!"
"get"
"children"))
"mock-set-attr!"
(code :arity 3
:bytecode (16 0 1 2 0 52 1 0 2 16 1 16 2 52 0 0 3 50)
:constants (
"dict-set!"
"get"
"attrs"))
"mock-get-attr"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 16 1 52 0 0 2 50)
:constants (
"get"
"attrs"))
"mock-add-listener!"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 17 3 16 3 16 1 52 3 0 2 52 2 0 1 33 15 0 16 3 16 1 52 5 0 0 52 4 0 3 32 1 0 2 5 20 6 0 16 3 16 1 52 0 0 2 16 2 49 2 50)
:constants (
"get"
"listeners"
"not"
"has-key?"
"dict-set!"
"list"
"append!"))
"simulate-click"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 1 2 0 52 0 0 2 17 1 16 1 33 14 0 51 4 0 1 0 16 1 52 3 0 2 32 1 0 2 5 20 5 0 16 0 1 6 0 52 0 0 2 1 7 0 1 2 0 65 1 0 49 2 50)
:constants (
"get"
"listeners"
"click"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 2 0 18 0 1 3 0 1 4 0 65 2 0 52 1 0 1 49 2 50)
:constants (
"cek-call"
"list"
"target"
"type"
"click"))
"append!"
"event-log"
"type"))
"simulate-input"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 16 1 48 3 5 16 0 1 3 0 52 2 0 2 1 4 0 52 2 0 2 17 2 16 2 33 14 0 51 6 0 1 0 16 2 52 5 0 2 32 1 0 2 5 20 7 0 16 0 1 8 0 52 2 0 2 1 1 0 16 1 1 9 0 1 4 0 65 2 0 49 2 50)
:constants (
"mock-set-attr!"
"value"
"get"
"listeners"
"input"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 1 2 0 18 0 1 3 0 1 4 0 65 2 0 52 1 0 1 49 2 50)
:constants (
"cek-call"
"list"
"target"
"type"
"input"))
"append!"
"event-log"
"type"))
"simulate-event"
(code :arity 3
:bytecode (16 0 1 1 0 52 0 0 2 16 1 52 0 0 2 17 3 16 3 33 18 0 51 3 0 1 0 1 2 1 1 16 3 52 2 0 2 32 1 0 2 5 20 4 0 16 0 1 5 0 52 0 0 2 1 6 0 16 2 1 7 0 16 1 65 2 0 49 2 50)
:constants (
"get"
"listeners"
"for-each"
(code :arity 1 :upvalue-count 3
:bytecode (20 0 0 16 0 1 2 0 18 0 1 3 0 18 1 1 4 0 18 2 65 3 0 52 1 0 1 49 2 50)
:constants (
"cek-call"
"list"
"target"
"detail"
"type"))
"append!"
"event-log"
"detail"
"type"))
"assert-text"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 1 6 0 52 3 0 5 49 3 50)
:constants (
"get"
"text"
"assert="
"str"
"Expected text \""
"\", got \""
"\""))
"assert-attr"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 20 1 0 16 3 16 2 1 3 0 16 1 1 4 0 16 2 1 5 0 16 3 1 6 0 52 2 0 7 49 3 50)
:constants (
"mock-get-attr"
"assert="
"str"
"Expected attr "
"=\""
"\", got \""
"\""))
"assert-class"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 2 20 3 0 16 2 1 6 0 52 5 0 2 16 1 52 4 0 2 1 8 0 16 1 1 9 0 16 2 1 10 0 52 7 0 5 49 2 50)
:constants (
"mock-get-attr"
"class"
""
"assert"
"contains?"
"split"
" "
"str"
"Expected class \""
"\" in \""
"\""))
"assert-no-class"
(code :arity 2
:bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 2 20 3 0 16 2 1 7 0 52 6 0 2 16 1 52 5 0 2 52 4 0 1 1 9 0 16 1 1 10 0 16 2 1 11 0 52 8 0 5 49 2 50)
:constants (
"mock-get-attr"
"class"
""
"assert"
"not"
"contains?"
"split"
" "
"str"
"Expected no class \""
"\" but found in \""
"\""))
"assert-child-count"
(code :arity 2
:bytecode (16 0 1 2 0 52 1 0 2 52 0 0 1 17 2 20 3 0 16 2 16 1 1 5 0 16 1 1 6 0 16 2 52 4 0 4 49 3 50)
:constants (
"len"
"get"
"children"
"assert="
"str"
"Expected "
" children, got "))
"assert-event-fired"
(code :arity 2
:bytecode (20 0 0 51 2 0 1 1 16 0 1 4 0 52 3 0 2 52 1 0 2 1 6 0 16 1 1 7 0 52 5 0 3 49 2 50)
:constants (
"assert"
"some"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"type"))
"get"
"event-log"
"str"
"Expected event \""
"\" to have been fired"))
"assert-no-event"
(code :arity 2
:bytecode (20 0 0 51 3 0 1 1 16 0 1 5 0 52 4 0 2 52 2 0 2 52 1 0 1 1 7 0 16 1 1 8 0 52 6 0 3 49 2 50)
:constants (
"assert"
"not"
"some"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"type"))
"get"
"event-log"
"str"
"Expected event \""
"\" to NOT have been fired"))
"event-fire-count"
(code :arity 2
:bytecode (51 2 0 1 1 16 0 1 4 0 52 3 0 2 52 1 0 2 52 0 0 1 50)
:constants (
"len"
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"type"))
"get"
"event-log"))
"make-web-harness"
(code :arity 1
:bytecode (20 0 0 1 1 0 16 0 48 2 17 1 20 2 0 16 1 1 3 0 1 4 0 65 0 0 1 5 0 20 6 0 1 7 0 1 8 0 1 5 0 48 3 65 2 0 48 3 5 16 1 50)
:constants (
"make-harness"
"platform"
"harness-set!"
"dom"
"elements"
"root"
"mock-element"
"div"
"id"))
"is-renderable?"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 4 0 3 32 118 0 16 0 52 1 0 1 33 4 0 3 32 105 0 16 0 52 2 0 1 33 4 0 3 32 92 0 16 0 52 3 0 1 33 4 0 3 32 79 0 16 0 52 4 0 1 33 4 0 4 32 66 0 16 0 52 6 0 1 52 5 0 1 33 4 0 4 32 49 0 16 0 52 7 0 1 33 4 0 3 32 36 0 16 0 52 8 0 1 17 1 16 1 52 10 0 1 1 11 0 52 9 0 2 6 33 11 0 5 16 1 52 4 0 1 52 5 0 1 50)
:constants (
"nil?"
"string?"
"number?"
"boolean?"
"dict?"
"not"
"list?"
"empty?"
"first"
"="
"type-of"
"symbol"))
"is-render-leak?"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 6 33 12 0 5 20 2 0 16 0 48 1 52 0 0 1 50)
:constants (
"not"
"nil?"
"is-renderable?"))
"assert-renderable"
(code :arity 2
:bytecode (20 0 0 20 1 0 16 0 48 1 1 3 0 16 1 1 4 0 16 0 52 5 0 1 16 0 52 6 0 1 33 6 0 1 7 0 32 48 0 16 0 52 8 0 1 6 33 26 0 5 16 0 52 10 0 1 52 9 0 1 6 33 11 0 5 16 0 52 11 0 1 52 6 0 1 33 6 0 1 12 0 32 3 0 1 13 0 52 2 0 5 49 2 50)
:constants (
"assert"
"is-renderable?"
"str"
"Render leak in "
": "
"type-of"
"dict?"
" — dict would appear as {:key val} text in output"
"list?"
"not"
"empty?"
"first"
" — list of dicts would appear as raw data in output"
" — non-renderable value would appear as text"))
"render-body-audit"
(code :arity 1
:bytecode (52 0 0 0 17 1 51 2 0 1 1 16 0 52 1 0 2 5 16 1 50)
:constants (
"list"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 48 1 33 88 0 20 1 0 18 0 1 2 0 16 0 52 3 0 1 33 6 0 1 4 0 32 48 0 16 0 52 5 0 1 6 33 26 0 5 16 0 52 7 0 1 52 6 0 1 6 33 11 0 5 16 0 52 8 0 1 52 3 0 1 33 6 0 1 9 0 32 3 0 1 10 0 1 11 0 16 0 52 12 0 1 65 2 0 49 2 32 1 0 2 50)
:constants (
"is-render-leak?"
"append!"
"leak-kind"
"dict?"
"dict"
"list?"
"not"
"empty?"
"first"
"list-of-dicts"
"other"
"value-type"
"type-of"))))
"assert-render-body-clean"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 2 52 2 0 1 1 4 0 16 2 52 5 0 1 1 6 0 16 1 1 7 0 1 8 0 1 9 0 52 3 0 7 49 2 50)
:constants (
"render-body-audit"
"assert"
"empty?"
"str"
"Render body has "
"len"
" leak(s) in "
". "
"render-to-html/render-to-dom render ALL body expressions — "
"put side effects in let bindings, not body expressions."))
"mock-render"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 4 0 2 32 173 0 16 0 52 1 0 1 33 25 0 20 2 0 1 3 0 48 1 17 1 20 4 0 16 1 16 0 48 2 5 16 1 32 139 0 16 0 52 5 0 1 33 29 0 20 2 0 1 3 0 48 1 17 1 20 4 0 16 1 16 0 52 6 0 1 48 2 5 16 1 32 101 0 16 0 52 8 0 1 52 7 0 1 33 4 0 2 32 84 0 16 0 52 9 0 1 33 4 0 2 32 71 0 16 0 52 10 0 1 17 1 16 1 52 12 0 1 1 13 0 52 11 0 2 52 7 0 1 33 4 0 2 32 39 0 20 2 0 20 14 0 16 1 48 1 48 1 17 2 2 17 3 51 15 0 1 2 1 3 17 3 16 3 16 0 52 16 0 1 48 1 5 16 2 50)
:constants (
"nil?"
"string?"
"mock-element"
"TEXT"
"mock-set-text!"
"number?"
"str"
"not"
"list?"
"empty?"
"first"
"="
"type-of"
"symbol"
"symbol-name"
(code :arity 1 :upvalue-count 2
:bytecode (16 0 52 1 0 1 52 0 0 1 33 127 0 16 0 52 2 0 1 17 1 16 1 52 4 0 1 1 5 0 52 3 0 2 33 62 0 16 0 52 6 0 1 52 1 0 1 52 0 0 1 33 41 0 20 7 0 18 0 20 8 0 16 1 48 1 16 0 1 10 0 52 9 0 2 48 3 5 18 1 16 0 52 6 0 1 52 6 0 1 49 1 32 1 0 2 32 38 0 20 11 0 16 1 48 1 17 2 16 2 33 12 0 20 12 0 18 0 16 2 48 2 32 1 0 2 5 18 1 16 0 52 6 0 1 49 1 32 1 0 2 50)
:constants (
"not"
"empty?"
"first"
"="
"type-of"
"keyword"
"rest"
"mock-set-attr!"
"keyword-name"
"nth"
1
"mock-render"
"mock-append-child!"))
"rest"))
"mock-render-fragment"
(code :arity 1
:bytecode (51 1 0 20 3 0 16 0 52 2 0 2 52 0 0 2 50)
:constants (
"filter"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 50)
:constants (
"not"
"nil?"))
"map"
"mock-render"))
"assert-single-render-root"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 2 52 3 0 1 1 4 0 52 2 0 2 1 6 0 16 1 1 7 0 16 2 52 3 0 1 1 8 0 1 9 0 1 10 0 52 5 0 7 49 2 50)
:constants (
"mock-render-fragment"
"assert"
"="
"len"
1
"str"
"Expected single render root in "
" but got "
" element(s). "
"Multi-body let/begin in render-to-html/render-to-dom renders "
"ALL expressions — put side effects in let bindings."))
"assert-tag"
(code :arity 2
:bytecode (20 0 0 16 0 1 3 0 52 2 0 2 16 1 52 1 0 2 1 5 0 16 1 1 6 0 16 0 1 3 0 52 2 0 2 1 7 0 52 4 0 5 49 2 50)
:constants (
"assert"
"="
"get"
"tag"
"str"
"Expected <"
"> but got <"
">")))))

View File

@@ -0,0 +1,303 @@
(sxbc 1 "b3cae03948f7a615"
(code
:bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 5 1 5 0 51 6 0 1 7 0 51 8 0 1 9 0 51 10 0 1 11 0 51 12 0 1 13 0 51 14 0 1 15 0 51 16 0 1 17 0 51 18 0 1 19 0 51 20 0 1 21 0 51 14 0 1 22 0 51 23 0 1 24 0 51 14 0 1 25 0 51 18 0 1 26 0 51 16 0 1 27 0 51 16 0 1 28 0 51 29 0 1 30 0 51 31 0 1 32 0 51 16 0 1 33 0 51 14 0 1 34 0 51 35 0 1 36 0 51 14 0 1 37 0 51 38 0 1 39 0 51 16 0 1 40 0 51 16 0 1 41 0 51 14 0 1 42 0 51 16 0 1 43 0 51 14 0 1 44 0 51 14 0 65 27 0 128 4 0 5 51 46 0 128 45 0 5 51 48 0 128 47 0 5 51 50 0 128 49 0 5 51 52 0 128 51 0 5 51 54 0 128 53 0 5 51 56 0 128 55 0 5 51 58 0 128 57 0 5 51 60 0 128 59 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 5 51 68 0 128 67 0 5 51 70 0 128 69 0 5 51 72 0 128 71 0 5 51 74 0 128 73 0 5 51 76 0 128 75 0 5 51 78 0 128 77 0 5 51 80 0 128 79 0 50)
:constants (
"assert"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 17 0 16 1 6 34 4 0 5 1 2 0 52 1 0 1 32 1 0 2 50)
:constants (
"not"
"error"
"Assertion failed"))
"assert="
(code :arity 3
:bytecode (16 0 16 1 52 1 0 2 52 0 0 1 33 28 0 16 2 6 34 15 0 5 1 4 0 16 1 1 5 0 16 0 52 3 0 4 52 2 0 1 32 1 0 2 50)
:constants (
"not"
"="
"error"
"str"
"Expected "
", got "))
"default-platform"
"current-user"
(code
:bytecode (2 50)
:constants ())
"csrf-token"
(code
:bytecode (1 0 0 50)
:constants (
"test-csrf-token"))
"app-url"
(code :arity 2
:bytecode (1 0 0 50)
:constants (
"/mock-app-url"))
"frag"
(code :arity 3
:bytecode (1 0 0 50)
:constants (
""))
"sleep"
(code :arity 1
:bytecode (2 50)
:constants ())
"local-storage-set"
(code :arity 2
:bytecode (2 50)
:constants ())
"set-cookie"
(code :arity 3
:bytecode (2 50)
:constants ())
"url-for"
(code :arity 2
:bytecode (1 0 0 50)
:constants (
"/mock-url"))
"create-element"
"request-path"
(code
:bytecode (1 0 0 50)
:constants (
"/"))
"config"
"set-attr"
"set-text"
"remove-child"
"fetch"
(code :arity 2
:bytecode (1 0 0 1 1 0 1 2 0 1 3 0 1 4 0 3 65 3 0 50)
:constants (
"status"
200
"body"
""
"ok"))
"query"
(code :arity 3
:bytecode (52 0 0 0 50)
:constants (
"list"))
"add-class"
"get-element"
"now"
(code
:bytecode (1 0 0 50)
:constants (
0))
"abort"
"action"
(code :arity 3
:bytecode (1 0 0 3 65 1 0 50)
:constants (
"ok"))
"remove-class"
"append-child"
"request-arg"
"emit-dom"
"local-storage-get"
"get-cookie"
"make-harness"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 6 0 20 1 0 32 9 0 20 1 0 16 0 52 2 0 2 17 1 1 3 0 52 4 0 0 1 5 0 16 1 1 6 0 1 7 0 65 0 0 1 8 0 65 0 0 1 9 0 2 65 3 0 65 3 0 50)
:constants (
"nil?"
"default-platform"
"merge"
"log"
"list"
"platform"
"state"
"cookies"
"storage"
"dom"))
"harness-reset!"
(code :arity 1
:bytecode (16 0 1 1 0 52 2 0 0 52 0 0 3 5 16 0 1 3 0 1 4 0 65 0 0 1 5 0 65 0 0 1 6 0 2 65 3 0 52 0 0 3 5 16 0 50)
:constants (
"dict-set!"
"log"
"list"
"state"
"cookies"
"storage"
"dom"))
"harness-log"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 1 52 2 0 1 33 5 0 16 2 32 11 0 51 4 0 1 1 16 2 52 3 0 2 50)
:constants (
"get"
"log"
"nil?"
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"op"))))
"harness-get"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 16 1 52 0 0 2 50)
:constants (
"get"
"state"))
"harness-set!"
(code :arity 3
:bytecode (16 0 1 2 0 52 1 0 2 16 1 16 2 52 0 0 3 5 2 50)
:constants (
"dict-set!"
"get"
"state"))
"make-interceptor"
(code :arity 3
:bytecode (51 0 0 1 2 1 0 1 1 50)
:constants (
(code :arity 1 :upvalue-count 3
:bytecode (16 0 52 0 0 1 33 7 0 18 0 48 0 32 122 0 1 2 0 16 0 52 3 0 1 52 1 0 2 33 13 0 18 0 16 0 52 4 0 1 48 1 32 93 0 1 5 0 16 0 52 3 0 1 52 1 0 2 33 22 0 18 0 16 0 52 4 0 1 16 0 1 2 0 52 6 0 2 48 2 32 55 0 1 7 0 16 0 52 3 0 1 52 1 0 2 33 31 0 18 0 16 0 52 4 0 1 16 0 1 2 0 52 6 0 2 16 0 1 5 0 52 6 0 2 48 3 32 8 0 18 0 16 0 52 8 0 2 17 1 18 1 1 10 0 52 9 0 2 17 2 20 11 0 16 2 1 12 0 16 0 1 13 0 16 1 1 14 0 18 2 65 3 0 48 2 5 16 1 50)
:constants (
"empty?"
"="
1
"len"
"first"
2
"nth"
3
"apply"
"get"
"log"
"append!"
"args"
"result"
"op"))))
"install-interceptors"
(code :arity 2
:bytecode (51 1 0 1 0 1 1 16 0 1 4 0 52 3 0 2 52 2 0 1 52 0 0 2 5 16 1 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 1 1 0 52 0 0 2 16 0 52 0 0 2 17 1 20 2 0 18 0 16 0 16 1 48 3 17 2 20 3 0 18 1 16 0 16 2 49 3 50)
:constants (
"get"
"platform"
"make-interceptor"
"env-bind!"))
"keys"
"get"
"platform"))
"io-calls"
(code :arity 2
:bytecode (51 1 0 1 1 16 0 1 3 0 52 2 0 2 52 0 0 2 50)
:constants (
"filter"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
:constants (
"="
"get"
"op"))
"get"
"log"))
"io-call-count"
(code :arity 2
:bytecode (20 1 0 16 0 16 1 48 2 52 0 0 1 50)
:constants (
"len"
"io-calls"))
"io-call-nth"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 16 2 16 3 52 2 0 1 52 1 0 2 33 11 0 16 3 16 2 52 3 0 2 32 1 0 2 50)
:constants (
"io-calls"
"<"
"len"
"nth"))
"io-call-args"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 16 2 48 3 17 3 16 3 52 1 0 1 33 4 0 2 32 9 0 16 3 1 3 0 52 2 0 2 50)
:constants (
"io-call-nth"
"nil?"
"get"
"args"))
"io-call-result"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 16 2 48 3 17 3 16 3 52 1 0 1 33 4 0 2 32 9 0 16 3 1 3 0 52 2 0 2 50)
:constants (
"io-call-nth"
"nil?"
"get"
"result"))
"assert-io-called"
(code :arity 2
:bytecode (20 0 0 20 2 0 16 0 16 1 48 2 1 3 0 52 1 0 2 1 5 0 16 1 1 6 0 52 4 0 3 49 2 50)
:constants (
"assert"
">"
"io-call-count"
0
"str"
"Expected IO operation "
" to be called but it was not"))
"assert-no-io"
(code :arity 2
:bytecode (20 0 0 20 2 0 16 0 16 1 48 2 1 3 0 52 1 0 2 1 5 0 16 1 1 6 0 20 2 0 16 0 16 1 48 2 1 7 0 52 4 0 5 49 2 50)
:constants (
"assert"
"="
"io-call-count"
0
"str"
"Expected IO operation "
" not to be called but it was called "
" time(s)"))
"assert-io-count"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 20 1 0 16 3 16 2 52 2 0 2 1 4 0 16 1 1 5 0 16 2 1 6 0 16 3 1 7 0 52 3 0 7 49 2 50)
:constants (
"io-call-count"
"assert"
"="
"str"
"Expected "
" to be called "
" time(s) but was called "
" time(s)"))
"assert-io-args"
(code :arity 4
:bytecode (20 0 0 16 0 16 1 16 2 48 3 17 4 20 1 0 20 2 0 16 4 16 3 48 2 1 4 0 16 2 1 5 0 16 1 1 6 0 16 3 52 3 0 1 1 7 0 16 4 52 3 0 1 52 3 0 8 49 2 50)
:constants (
"io-call-args"
"assert"
"equal?"
"str"
"Expected call "
" to "
" with args "
" but got "))
"assert-io-result"
(code :arity 4
:bytecode (20 0 0 16 0 16 1 16 2 48 3 17 4 20 1 0 20 2 0 16 4 16 3 48 2 1 4 0 16 2 1 5 0 16 1 1 6 0 16 3 52 3 0 1 1 7 0 16 4 52 3 0 1 52 3 0 8 49 2 50)
:constants (
"io-call-result"
"assert"
"equal?"
"str"
"Expected call "
" to "
" to return "
" but got "))
"assert-state"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 20 1 0 20 2 0 16 3 16 2 48 2 1 4 0 16 1 1 5 0 16 2 52 3 0 1 1 6 0 16 3 52 3 0 1 52 3 0 6 49 2 50)
:constants (
"harness-get"
"assert"
"equal?"
"str"
"Expected state "
" to be "
" but got ")))))

View File

@@ -0,0 +1,309 @@
(sxbc 1 "352dd0823915cc55"
(code
: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 50)
:constants (
"hsx-indent"
(code :arity 1
:bytecode (1 0 0 17 1 51 2 0 1 1 1 4 0 16 0 52 3 0 2 52 1 0 2 5 16 1 50)
:constants (
""
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 1 1 0 52 0 0 2 19 0 50)
:constants (
"str"
" "))
"range"
0))
"hsx-sym-name"
(code :arity 1
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)
:constants (
"="
"type-of"
"symbol"
"symbol-name"))
"hsx-kw-name"
(code :arity 1
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)
:constants (
"="
"type-of"
"keyword"
"keyword-name"))
"hsx-is-element?"
(code :arity 1
:bytecode (16 0 6 33 26 0 5 16 0 1 2 0 52 1 0 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 49 1 50)
:constants (
"not"
"starts-with?"
"~"
"is-html-tag?"))
"hsx-is-component?"
(code :arity 1
:bytecode (16 0 6 33 10 0 5 16 0 1 1 0 52 0 0 2 50)
:constants (
"starts-with?"
"~"))
"hsx-extract-css"
(code :arity 1
:bytecode (2 17 1 2 17 2 52 0 0 0 17 3 1 1 0 17 4 16 0 52 2 0 1 17 5 2 17 6 51 3 0 1 4 1 5 1 0 1 1 1 6 1 2 1 3 17 6 16 6 48 0 5 1 5 0 16 1 1 6 0 16 2 1 7 0 16 3 1 8 0 16 4 16 5 52 9 0 2 33 11 0 16 0 16 4 52 10 0 2 32 4 0 52 0 0 0 52 4 0 8 50)
:constants (
"list"
0
"len"
(code :upvalue-count 7
:bytecode (18 0 18 1 52 0 0 2 33 180 0 20 1 0 18 2 18 0 52 2 0 2 48 1 17 0 16 0 1 4 0 52 3 0 2 33 37 0 18 2 18 0 1 6 0 52 5 0 2 52 2 0 2 19 3 5 18 0 1 7 0 52 5 0 2 19 0 5 18 4 49 0 32 113 0 16 0 1 8 0 52 3 0 2 33 37 0 18 2 18 0 1 6 0 52 5 0 2 52 2 0 2 19 5 5 18 0 1 7 0 52 5 0 2 19 0 5 18 4 49 0 32 64 0 16 0 33 58 0 20 9 0 18 6 18 2 18 0 52 2 0 2 48 2 5 20 9 0 18 6 18 2 18 0 1 6 0 52 5 0 2 52 2 0 2 48 2 5 18 0 1 7 0 52 5 0 2 19 0 5 18 4 49 0 32 1 0 2 32 1 0 2 50)
:constants (
"<"
"hsx-kw-name"
"nth"
"="
"class"
"+"
1
2
"id"
"append!"))
"dict"
"classes"
"id"
"attrs"
"children"
"<"
"slice"))
"hsx-tag-str"
(code :arity 2
:bytecode (16 0 17 2 16 1 1 1 0 52 0 0 2 17 3 16 1 1 2 0 52 0 0 2 17 4 16 3 6 33 7 0 5 16 3 52 3 0 1 33 21 0 51 5 0 1 2 16 3 1 7 0 52 6 0 2 52 4 0 2 32 1 0 2 5 16 4 33 16 0 16 2 1 9 0 16 4 52 8 0 3 17 2 32 1 0 2 5 16 2 50)
:constants (
"get"
"classes"
"id"
"string?"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 1 1 0 16 0 52 0 0 3 19 0 50)
:constants (
"str"
"."))
"split"
" "
"str"
"#"))
"hsx-atom"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 151 0 16 0 52 2 0 1 33 15 0 1 4 0 16 0 1 4 0 52 3 0 3 32 127 0 16 0 52 5 0 1 33 9 0 16 0 52 3 0 1 32 109 0 16 0 52 7 0 1 1 8 0 52 6 0 2 33 17 0 16 0 33 6 0 1 9 0 32 3 0 1 10 0 32 76 0 16 0 52 7 0 1 1 11 0 52 6 0 2 33 20 0 1 12 0 20 13 0 16 0 48 1 1 14 0 52 3 0 3 32 40 0 16 0 52 7 0 1 1 15 0 52 6 0 2 33 17 0 1 16 0 20 17 0 16 0 48 1 52 3 0 2 32 7 0 20 18 0 16 0 49 1 50)
:constants (
"nil?"
"nil"
"string?"
"str"
"\""
"number?"
"="
"type-of"
"boolean"
"true"
"false"
"symbol"
"{"
"symbol-name"
"}"
"keyword"
":"
"keyword-name"
"sx-serialize"))
"hsx-inline"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 33 10 0 20 2 0 16 0 49 1 32 84 1 16 0 52 3 0 1 33 6 0 1 4 0 32 69 1 20 5 0 16 0 52 6 0 1 48 1 17 1 16 1 1 8 0 52 7 0 2 33 24 0 1 10 0 20 2 0 16 0 1 12 0 52 11 0 2 48 1 52 9 0 2 32 20 1 16 1 1 13 0 52 7 0 2 33 49 0 1 14 0 16 0 52 16 0 1 1 12 0 52 15 0 2 33 17 0 20 17 0 16 0 1 12 0 52 11 0 2 48 1 32 3 0 1 18 0 1 19 0 52 9 0 3 32 215 0 16 1 1 20 0 52 7 0 2 33 38 0 20 2 0 16 0 1 12 0 52 11 0 2 48 1 1 21 0 20 17 0 16 0 1 22 0 52 11 0 2 48 1 52 9 0 3 32 165 0 16 1 1 23 0 52 7 0 2 33 38 0 20 2 0 16 0 1 12 0 52 11 0 2 48 1 1 24 0 20 17 0 16 0 1 22 0 52 11 0 2 48 1 52 9 0 3 32 115 0 16 1 1 9 0 52 7 0 2 33 33 0 1 25 0 1 18 0 51 28 0 16 0 52 29 0 1 52 27 0 2 52 26 0 2 1 25 0 52 9 0 3 32 70 0 1 30 0 20 2 0 16 0 52 6 0 1 48 1 16 0 52 16 0 1 1 12 0 52 15 0 2 33 30 0 1 31 0 1 31 0 20 17 0 16 0 52 29 0 1 52 27 0 2 52 26 0 2 52 9 0 2 32 3 0 1 18 0 1 19 0 52 9 0 4 50)
:constants (
"not"
"list?"
"sx-serialize"
"empty?"
"()"
"hsx-sym-name"
"first"
"="
"deref"
"str"
"@"
"nth"
1
"signal"
"signal("
">"
"len"
"hsx-inline"
""
")"
"reset!"
" := "
2
"swap!"
" <- "
"\""
"join"
"map"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 5 0 16 0 32 17 0 1 2 0 20 3 0 16 0 48 1 1 4 0 52 1 0 3 50)
:constants (
"string?"
"str"
"{"
"hsx-inline"
"}"))
"rest"
"("
" "))
"hsx-attrs-str"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 48 0 52 2 0 0 17 1 1 3 0 17 2 2 17 3 51 4 0 1 2 1 0 1 1 1 3 17 3 16 3 48 0 5 1 6 0 1 6 0 16 1 52 7 0 2 52 5 0 2 50)
:constants (
"empty?"
""
"list"
0
(code :upvalue-count 4
:bytecode (18 0 18 1 52 1 0 1 52 0 0 2 33 70 0 20 2 0 18 2 1 4 0 20 5 0 18 1 18 0 52 6 0 2 48 1 1 7 0 20 8 0 18 1 18 0 1 10 0 52 9 0 2 52 6 0 2 48 1 52 3 0 4 48 2 5 18 0 1 11 0 52 9 0 2 19 0 5 18 3 49 0 32 1 0 2 50)
:constants (
"<"
"len"
"append!"
"str"
":"
"keyword-name"
"nth"
" "
"hsx-atom"
"+"
1
2))
"str"
" "
"join"))
"hsx-children"
(code :arity 3
:bytecode (16 1 52 0 0 1 33 5 0 16 0 32 85 0 16 1 52 2 0 1 1 3 0 52 1 0 2 6 33 15 0 5 16 1 52 6 0 1 52 5 0 1 52 4 0 1 33 23 0 16 0 1 8 0 20 9 0 16 1 52 6 0 1 48 1 52 7 0 3 32 27 0 16 0 1 10 0 1 10 0 51 13 0 1 2 16 1 52 12 0 2 52 11 0 2 52 7 0 3 50)
:constants (
"empty?"
"="
"len"
1
"not"
"list?"
"first"
"str"
" "
"hsx-atom"
"
"
"join"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 1 2 0 52 1 0 2 49 2 50)
:constants (
"sx->hypersx-node"
"+"
1))))
"sx->hypersx-node"
(code :arity 2
:bytecode (20 0 0 16 1 48 1 17 2 16 0 52 1 0 1 33 12 0 16 2 1 3 0 52 2 0 2 32 201 4 16 0 52 5 0 1 52 4 0 1 33 16 0 16 2 20 6 0 16 0 48 1 52 2 0 2 32 172 4 16 0 52 7 0 1 33 12 0 16 2 1 8 0 52 2 0 2 32 151 4 20 9 0 16 0 52 10 0 1 48 1 17 3 16 3 1 2 0 52 11 0 2 33 16 0 16 2 20 12 0 16 0 48 1 52 2 0 2 32 110 4 16 3 1 13 0 52 11 0 2 33 16 0 16 2 20 12 0 16 0 48 1 52 2 0 2 32 82 4 16 3 1 14 0 52 11 0 2 33 16 0 16 2 20 12 0 16 0 48 1 52 2 0 2 32 54 4 16 3 1 15 0 52 11 0 2 33 16 0 16 2 20 12 0 16 0 48 1 52 2 0 2 32 26 4 16 3 1 16 0 52 11 0 2 33 16 0 16 2 20 12 0 16 0 48 1 52 2 0 2 32 254 3 16 3 1 17 0 52 11 0 2 6 34 10 0 5 16 3 1 18 0 52 11 0 2 33 68 0 16 2 16 3 1 19 0 20 20 0 16 0 1 22 0 52 21 0 2 48 1 1 19 0 20 20 0 16 0 1 23 0 52 21 0 2 48 1 1 24 0 20 25 0 16 0 52 26 0 1 16 1 1 22 0 52 27 0 2 48 2 52 2 0 8 32 160 3 16 3 1 28 0 52 11 0 2 33 54 0 16 2 1 29 0 20 12 0 16 0 1 22 0 52 21 0 2 48 1 1 24 0 1 24 0 51 32 0 1 1 16 0 1 23 0 52 33 0 2 52 31 0 2 52 30 0 2 52 2 0 5 32 94 3 16 3 1 34 0 52 11 0 2 33 223 0 16 0 1 22 0 52 21 0 2 17 4 16 0 1 23 0 52 21 0 2 17 5 16 0 52 36 0 1 1 37 0 52 35 0 2 33 12 0 16 0 1 37 0 52 21 0 2 32 1 0 2 17 6 16 5 52 5 0 1 52 4 0 1 6 33 22 0 5 16 6 52 1 0 1 6 34 11 0 5 16 6 52 5 0 1 52 4 0 1 33 54 0 16 2 1 38 0 20 12 0 16 4 48 1 1 19 0 20 6 0 16 5 48 1 16 6 33 17 0 1 19 0 20 6 0 16 6 48 1 52 2 0 2 32 3 0 1 39 0 52 2 0 6 32 74 0 16 2 1 38 0 20 12 0 16 4 48 1 1 24 0 20 25 0 16 5 16 1 1 22 0 52 27 0 2 48 2 16 6 33 31 0 1 24 0 16 2 1 40 0 20 25 0 16 6 16 1 1 22 0 52 27 0 2 48 2 52 2 0 4 32 3 0 1 39 0 52 2 0 6 32 115 2 16 3 1 41 0 52 11 0 2 6 34 24 0 5 16 3 1 42 0 52 11 0 2 6 34 10 0 5 16 3 1 43 0 52 11 0 2 33 121 0 16 0 1 22 0 52 21 0 2 17 4 16 0 1 23 0 52 33 0 2 17 5 16 2 16 3 1 19 0 1 44 0 51 45 0 16 4 52 5 0 1 6 33 26 0 5 16 4 52 7 0 1 52 4 0 1 6 33 11 0 5 16 4 52 10 0 1 52 5 0 1 33 5 0 16 4 32 6 0 16 4 52 46 0 1 52 31 0 2 52 30 0 2 1 24 0 1 24 0 51 32 0 1 1 16 5 52 31 0 2 52 30 0 2 52 2 0 6 32 210 1 16 3 1 31 0 52 11 0 2 6 33 62 0 5 16 0 52 36 0 1 1 37 0 52 11 0 2 6 33 44 0 5 16 0 1 22 0 52 21 0 2 52 5 0 1 6 33 26 0 5 20 9 0 16 0 1 22 0 52 21 0 2 52 10 0 1 48 1 1 47 0 52 11 0 2 33 81 0 16 0 1 22 0 52 21 0 2 17 4 16 0 1 23 0 52 21 0 2 17 5 16 2 1 48 0 20 12 0 16 5 48 1 1 49 0 20 20 0 16 4 1 22 0 52 21 0 2 48 1 1 24 0 20 25 0 16 4 52 26 0 1 16 1 1 22 0 52 27 0 2 48 2 52 2 0 7 32 51 1 16 3 1 50 0 52 11 0 2 6 33 62 0 5 16 0 52 36 0 1 1 37 0 52 11 0 2 6 33 44 0 5 16 0 1 22 0 52 21 0 2 52 5 0 1 6 33 26 0 5 20 9 0 16 0 1 22 0 52 21 0 2 52 10 0 1 48 1 1 47 0 52 11 0 2 33 81 0 16 0 1 22 0 52 21 0 2 17 4 16 0 1 23 0 52 21 0 2 17 5 16 2 1 51 0 20 20 0 16 4 1 22 0 52 21 0 2 48 1 1 52 0 20 12 0 16 5 48 1 1 24 0 20 25 0 16 4 52 26 0 1 16 1 1 22 0 52 27 0 2 48 2 52 2 0 7 32 148 0 20 53 0 16 3 48 1 33 61 0 20 54 0 16 0 52 55 0 1 48 1 17 4 20 56 0 16 2 20 57 0 16 3 16 4 48 2 20 58 0 16 4 1 60 0 52 59 0 2 48 1 52 2 0 3 16 4 1 61 0 52 59 0 2 16 1 49 3 32 77 0 20 62 0 16 3 48 1 33 54 0 20 54 0 16 0 52 55 0 1 48 1 17 4 20 56 0 16 2 16 3 20 58 0 16 4 1 60 0 52 59 0 2 48 1 52 2 0 3 16 4 1 61 0 52 59 0 2 16 1 49 3 32 13 0 16 2 20 20 0 16 0 48 1 52 2 0 2 50)
:constants (
"hsx-indent"
"nil?"
"str"
"nil"
"not"
"list?"
"hsx-atom"
"empty?"
"()"
"hsx-sym-name"
"first"
"="
"hsx-inline"
"deref"
"reset!"
"swap!"
"signal"
"defcomp"
"defisland"
" "
"sx-serialize"
"nth"
1
2
"
"
"sx->hypersx-node"
"last"
"+"
"when"
"when "
"join"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 16 0 18 0 1 2 0 52 1 0 2 49 2 50)
:constants (
"sx->hypersx-node"
"+"
1))
"slice"
"if"
">"
"len"
3
"if "
""
"else
"
"let"
"letrec"
"let*"
", "
(code :arity 1
:bytecode (16 0 52 0 0 1 6 33 14 0 5 16 0 52 2 0 1 1 3 0 52 1 0 2 33 35 0 20 5 0 16 0 52 6 0 1 48 1 1 7 0 20 8 0 16 0 1 10 0 52 9 0 2 48 1 52 4 0 3 32 7 0 20 5 0 16 0 49 1 50)
:constants (
"list?"
">="
"len"
2
"str"
"sx-serialize"
"first"
" = "
"hsx-inline"
"nth"
1))
"list"
"fn"
"map "
" -> "
"for-each"
"for "
" in "
"hsx-is-element?"
"hsx-extract-css"
"rest"
"hsx-children"
"hsx-tag-str"
"hsx-attrs-str"
"get"
"attrs"
"children"
"hsx-is-component?"))
"sx->hypersx"
(code :arity 1
:bytecode (1 1 0 51 3 0 16 0 52 2 0 2 52 0 0 2 50)
:constants (
"join"
"
"
"map"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 49 2 50)
:constants (
"sx->hypersx-node"
0)))))))

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,372 @@
(sxbc 1 "c2d5bf6a702b8eb7"
(code
:bytecode (1 1 0 1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 1 7 0 1 8 0 1 9 0 1 4 0 1 10 0 1 11 0 1 12 0 1 13 0 1 14 0 1 8 0 1 15 0 1 4 0 1 16 0 1 17 0 1 18 0 1 4 0 1 19 0 1 13 0 1 20 0 1 6 0 1 21 0 1 22 0 1 23 0 1 8 0 1 24 0 1 8 0 1 25 0 1 11 0 1 26 0 1 13 0 1 27 0 1 22 0 1 28 0 1 4 0 1 29 0 1 4 0 1 30 0 1 8 0 1 31 0 1 13 0 1 32 0 1 33 0 1 34 0 1 4 0 1 35 0 1 6 0 1 36 0 1 2 0 1 37 0 1 6 0 1 38 0 1 2 0 1 39 0 1 6 0 1 40 0 1 13 0 1 41 0 1 2 0 1 42 0 1 33 0 1 43 0 1 13 0 1 44 0 1 22 0 65 35 0 128 0 0 5 51 46 0 128 45 0 5 51 48 0 128 47 0 5 51 50 0 128 49 0 5 51 52 0 128 51 0 5 51 54 0 128 53 0 5 51 56 0 128 55 0 5 51 58 0 128 57 0 5 51 60 0 128 59 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 50)
:constants (
"special-form-category-map"
"defmacro"
"Functions & Components"
"for-each"
"Higher-Order Forms"
"defpage"
"Domain Definitions"
"let"
"Binding"
"filter"
"shift"
"Continuations"
"and"
"Control Flow"
"set!"
"map-indexed"
"dynamic-wind"
"Guards"
"reduce"
"cond"
"defquery"
"->"
"Sequencing & Threading"
"let*"
"define"
"reset"
"case"
"do"
"map"
"some"
"letrec"
"if"
"quote"
"Quoting"
"every?"
"defhandler"
"fn"
"defstyle"
"lambda"
"defaction"
"or"
"defcomp"
"quasiquote"
"when"
"begin"
"extract-define-kwargs"
(code :arity 1
:bytecode (65 0 0 17 1 16 0 1 1 0 52 0 0 2 17 2 16 2 52 2 0 1 17 3 51 4 0 1 3 1 2 1 1 1 6 0 16 3 52 5 0 2 52 3 0 2 5 16 1 50)
:constants (
"slice"
2
"len"
"for-each"
(code :arity 1 :upvalue-count 3
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 6 33 20 0 5 18 1 16 0 52 5 0 2 52 4 0 1 1 6 0 52 3 0 2 33 94 0 20 7 0 18 1 16 0 52 5 0 2 48 1 17 1 18 1 16 0 1 2 0 52 1 0 2 52 5 0 2 17 2 18 2 16 1 16 2 52 4 0 1 1 9 0 52 3 0 2 33 29 0 1 11 0 1 13 0 20 15 0 16 2 52 14 0 2 52 12 0 2 1 16 0 52 10 0 3 32 6 0 16 2 52 10 0 1 52 8 0 3 32 1 0 2 50)
:constants (
"<"
"+"
1
"="
"type-of"
"nth"
"keyword"
"keyword-name"
"dict-set!"
"list"
"str"
"("
"join"
" "
"map"
"serialize"
")"))
"range"
0))
"categorize-special-forms"
(code :arity 1
:bytecode (65 0 0 17 1 51 1 0 1 1 16 0 52 0 0 2 5 16 1 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 1
: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 175 0 16 0 1 11 0 52 10 0 2 17 1 20 12 0 16 0 48 1 17 2 20 14 0 16 1 52 13 0 2 6 34 4 0 5 1 15 0 17 3 18 0 16 3 52 17 0 2 52 16 0 1 33 15 0 18 0 16 3 52 2 0 0 52 18 0 3 32 1 0 2 5 20 19 0 18 0 16 3 52 13 0 2 1 20 0 16 2 1 20 0 52 13 0 2 6 34 4 0 5 1 21 0 1 22 0 16 2 1 22 0 52 13 0 2 6 34 4 0 5 1 21 0 1 23 0 16 2 1 23 0 52 13 0 2 6 34 4 0 5 1 21 0 1 24 0 16 2 1 24 0 52 13 0 2 6 34 4 0 5 1 21 0 1 25 0 16 1 65 5 0 49 2 32 1 0 2 50)
:constants (
"="
"type-of"
"list"
">="
"len"
2
"first"
"symbol"
"symbol-name"
"define-special-form"
"nth"
1
"extract-define-kwargs"
"get"
"special-form-category-map"
"Other"
"not"
"has-key?"
"dict-set!"
"append!"
"doc"
""
"example"
"tail-position"
"syntax"
"name"))))
"build-ref-items-with-href"
(code :arity 4
:bytecode (51 1 0 1 3 1 2 1 1 16 0 52 0 0 2 50)
:constants (
"map"
(code :arity 1 :upvalue-count 3
:bytecode (18 0 1 1 0 52 0 0 2 33 90 0 16 0 1 3 0 52 2 0 2 17 1 16 0 1 4 0 52 2 0 2 17 2 16 0 1 5 0 52 2 0 2 17 3 1 6 0 16 3 6 33 12 0 5 51 8 0 1 1 18 1 52 7 0 2 33 11 0 18 2 16 1 52 9 0 2 32 1 0 2 1 10 0 16 3 1 11 0 16 2 1 12 0 16 1 65 4 0 32 64 0 16 0 1 3 0 52 2 0 2 17 1 16 0 1 4 0 52 2 0 2 17 2 1 6 0 51 8 0 1 1 18 1 52 7 0 2 33 11 0 18 2 16 1 52 9 0 2 32 1 0 2 1 11 0 16 2 1 12 0 16 1 65 3 0 50)
:constants (
"="
3
"nth"
0
1
2
"href"
"some"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 18 0 52 0 0 2 50)
:constants (
"="))
"str"
"exists"
"desc"
"name"))))
"build-reference-data"
(code :arity 3
:bytecode (16 0 6 1 0 0 52 1 0 2 33 82 0 5 1 2 0 20 3 0 16 1 1 2 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 7 0 20 3 0 16 1 1 7 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 8 0 20 3 0 16 1 1 8 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 65 3 0 32 227 0 6 1 9 0 52 1 0 2 33 57 0 5 1 10 0 20 3 0 16 1 1 10 0 52 4 0 2 1 11 0 16 2 1 6 0 48 4 1 12 0 20 3 0 16 1 1 12 0 52 4 0 2 1 11 0 16 2 1 6 0 48 4 65 2 0 32 159 0 6 1 13 0 52 1 0 2 33 32 0 5 1 14 0 20 3 0 16 1 1 14 0 52 4 0 2 1 15 0 16 2 1 16 0 48 4 65 1 0 32 116 0 6 1 17 0 52 1 0 2 33 26 0 5 1 18 0 51 20 0 16 1 1 18 0 52 4 0 2 52 19 0 2 65 1 0 32 79 0 5 1 2 0 20 3 0 16 1 1 2 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 7 0 20 3 0 16 1 1 7 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 8 0 20 3 0 16 1 1 8 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 65 3 0 50)
:constants (
"attributes"
"="
"req-attrs"
"build-ref-items-with-href"
"get"
"/geography/hypermedia/reference/attributes/"
3
"beh-attrs"
"uniq-attrs"
"headers"
"req-headers"
"/geography/hypermedia/reference/headers/"
"resp-headers"
"events"
"events-list"
"/geography/hypermedia/reference/events/"
2
"js-api"
"js-api-list"
"map"
(code :arity 1
:bytecode (1 0 0 16 0 1 2 0 52 1 0 2 1 3 0 16 0 1 4 0 52 1 0 2 65 2 0 50)
:constants (
"desc"
"nth"
1
"name"
0))))
"build-attr-detail"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 108 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 0 1 6 0 16 1 1 7 0 52 3 0 2 1 1 0 2 1 8 0 16 1 1 9 0 52 3 0 2 1 10 0 16 1 1 11 0 52 3 0 2 1 12 0 16 1 1 4 0 52 13 0 2 33 32 0 1 15 0 16 0 1 17 0 1 18 0 52 16 0 3 1 19 0 1 20 0 52 16 0 3 52 14 0 2 32 1 0 2 65 7 0 50)
:constants (
"nil?"
"attr-not-found"
"attr-handler"
"get"
"handler"
"attr-title"
"attr-example"
"example"
"attr-description"
"description"
"attr-demo"
"demo"
"attr-wire-id"
"has-key?"
"str"
"ref-wire-"
"replace"
":"
"-"
"*"
"star"))
"build-header-detail"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 60 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 1 1 6 0 52 3 0 2 1 1 0 2 1 7 0 16 0 1 8 0 16 1 1 9 0 52 3 0 2 1 10 0 16 1 1 11 0 52 3 0 2 65 6 0 50)
:constants (
"nil?"
"header-not-found"
"header-description"
"get"
"description"
"header-demo"
"demo"
"header-title"
"header-example"
"example"
"header-direction"
"direction"))
"build-event-detail"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 48 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 1 1 6 0 52 3 0 2 1 7 0 16 1 1 8 0 52 3 0 2 1 1 0 2 1 9 0 16 0 65 5 0 50)
:constants (
"nil?"
"event-not-found"
"event-example"
"get"
"example"
"event-demo"
"demo"
"event-description"
"description"
"event-title"))
"build-component-source"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 0 1 3 0 52 0 0 2 17 3 16 0 1 4 0 52 0 0 2 17 4 16 0 1 5 0 52 0 0 2 17 5 16 0 1 6 0 52 0 0 2 17 6 16 1 1 8 0 52 7 0 2 33 15 0 1 10 0 16 2 1 11 0 52 9 0 3 32 211 0 16 3 52 12 0 1 33 25 0 16 4 33 13 0 1 14 0 1 15 0 52 13 0 2 32 4 0 52 13 0 0 32 40 0 16 4 33 26 0 1 18 0 16 3 52 17 0 2 1 14 0 1 15 0 52 13 0 2 52 16 0 2 32 9 0 1 18 0 16 3 52 17 0 2 17 7 1 19 0 1 21 0 16 7 52 20 0 2 1 22 0 52 9 0 3 17 8 16 1 1 23 0 52 7 0 2 33 6 0 1 24 0 32 3 0 1 25 0 17 9 16 1 1 26 0 52 7 0 2 6 33 29 0 5 16 6 52 28 0 1 52 27 0 1 6 33 14 0 5 16 6 1 29 0 52 7 0 2 52 27 0 1 33 12 0 1 30 0 16 6 52 9 0 2 32 3 0 1 31 0 17 10 1 19 0 16 9 1 21 0 16 2 1 21 0 16 8 16 10 1 32 0 16 5 1 22 0 52 9 0 10 50)
:constants (
"get"
"type"
"name"
"params"
"has-children"
"body-sx"
"affinity"
"="
"not-found"
"str"
";; component "
" not found"
"empty?"
"list"
"&rest"
"children"
"append"
"cons"
"&key"
"("
"join"
" "
")"
"island"
"defisland"
"defcomp"
"component"
"not"
"nil?"
"auto"
" :affinity "
""
"
"))
"build-bundle-analysis"
(code :arity 6
:bytecode (52 0 0 0 17 6 51 2 0 1 2 1 1 1 6 16 0 52 1 0 2 5 1 3 0 16 3 1 4 0 16 6 1 5 0 16 5 1 6 0 16 4 1 7 0 16 2 65 5 0 50)
:constants (
"list"
"for-each"
(code :arity 1 :upvalue-count 3
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 1 52 2 0 1 17 2 18 0 1 4 0 52 3 0 2 33 22 0 16 2 18 0 52 7 0 2 1 8 0 52 6 0 2 52 5 0 1 32 3 0 1 4 0 17 3 1 8 0 16 3 52 9 0 2 17 4 1 4 0 17 5 1 4 0 17 6 52 10 0 0 17 7 52 10 0 0 17 8 51 12 0 0 1 1 5 1 6 1 7 1 8 16 1 52 11 0 2 5 20 13 0 18 2 1 14 0 16 5 1 15 0 16 7 52 2 0 1 1 16 0 16 0 1 16 0 52 0 0 2 1 17 0 16 2 1 18 0 16 6 1 19 0 16 8 1 20 0 16 4 1 21 0 16 3 1 22 0 16 0 1 22 0 52 0 0 2 1 23 0 16 0 1 23 0 52 0 0 2 65 10 0 49 2 50)
:constants (
"get"
"needed-names"
"len"
">"
0
"round"
"*"
"/"
100
"-"
"list"
"for-each"
(code :arity 1 :upvalue-count 5
:bytecode (18 0 16 0 52 0 0 2 17 1 16 1 52 2 0 1 52 1 0 1 33 174 0 16 1 1 3 0 52 0 0 2 33 14 0 18 1 1 5 0 52 4 0 2 19 1 32 39 0 18 2 1 5 0 52 4 0 2 19 2 5 51 7 0 0 3 16 1 1 8 0 52 0 0 2 6 34 5 0 5 52 9 0 0 52 6 0 2 5 20 10 0 18 4 1 8 0 16 1 1 8 0 52 0 0 2 6 34 5 0 5 52 9 0 0 1 11 0 16 1 1 11 0 52 0 0 2 1 12 0 16 1 1 12 0 52 0 0 2 6 34 5 0 5 52 9 0 0 1 13 0 16 1 1 13 0 52 0 0 2 1 14 0 16 0 1 3 0 16 1 1 3 0 52 0 0 2 1 15 0 16 1 1 15 0 52 0 0 2 65 7 0 49 2 32 1 0 2 50)
:constants (
"get"
"not"
"nil?"
"is-pure"
"+"
1
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (51 2 0 1 0 18 0 52 1 0 2 52 0 0 1 33 12 0 20 3 0 18 0 16 0 49 2 32 1 0 2 50)
:constants (
"not"
"some"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 18 0 52 0 0 2 50)
:constants (
"="))
"append!"))
"io-refs"
"list"
"append!"
"render-target"
"deps"
"source"
"name"
"affinity"))
"append!"
"pure-in-page"
"io-refs"
"direct"
"needed"
"io-in-page"
"components"
"savings"
"pct"
"path"
"name"))
"total-macros"
"pages"
"io-count"
"pure-count"
"total-components"))
"build-routing-analysis"
(code :arity 1
:bytecode (52 0 0 0 17 1 1 1 0 17 2 1 1 0 17 3 51 3 0 1 3 1 2 1 1 16 0 52 2 0 2 5 1 4 0 16 1 1 5 0 16 2 16 3 52 6 0 2 1 7 0 16 3 1 8 0 16 2 65 4 0 50)
:constants (
"list"
0
"for-each"
(code :arity 1 :upvalue-count 3
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 6 34 4 0 5 1 3 0 17 2 2 17 3 1 3 0 17 4 16 1 33 26 0 1 4 0 17 3 5 1 5 0 17 4 5 18 0 1 7 0 52 6 0 2 19 0 32 52 0 16 2 52 8 0 1 33 26 0 1 4 0 17 3 5 1 9 0 17 4 5 18 0 1 7 0 52 6 0 2 19 0 32 17 0 1 10 0 17 3 5 18 1 1 7 0 52 6 0 2 19 1 5 20 11 0 18 2 1 12 0 16 4 1 13 0 16 3 1 14 0 16 2 52 16 0 1 1 17 0 52 15 0 2 33 22 0 16 2 1 20 0 1 17 0 52 19 0 3 1 21 0 52 18 0 2 32 2 0 16 2 1 1 0 16 1 1 22 0 16 0 1 22 0 52 0 0 2 1 23 0 16 0 1 23 0 52 0 0 2 65 6 0 49 2 50)
:constants (
"get"
"has-data"
"content-src"
""
"server"
"Has :data expression — needs server IO"
"+"
1
"empty?"
"No content expression"
"client"
"append!"
"reason"
"mode"
"content-expr"
">"
"len"
80
"str"
"slice"
0
"..."
"path"
"name"))
"pages"
"total-pages"
"+"
"server-count"
"client-count"))
"build-affinity-analysis"
(code :arity 2
:bytecode (1 0 0 16 0 1 1 0 16 1 65 2 0 50)
:constants (
"components"
"page-plans")))))

View File

@@ -0,0 +1,365 @@
(sxbc 1 "96c150ad4f0a6342"
(code
:bytecode (1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 1 7 0 1 8 0 1 9 0 1 10 0 1 11 0 1 12 0 1 13 0 1 14 0 1 15 0 1 16 0 1 17 0 1 18 0 1 19 0 1 20 0 1 21 0 1 22 0 1 23 0 1 24 0 1 25 0 1 26 0 1 27 0 1 28 0 1 29 0 1 30 0 1 31 0 1 32 0 1 33 0 1 34 0 1 35 0 1 36 0 1 37 0 1 38 0 1 39 0 1 40 0 1 41 0 1 42 0 1 43 0 1 44 0 1 45 0 1 46 0 1 47 0 1 48 0 1 49 0 1 50 0 1 51 0 1 52 0 1 53 0 1 54 0 1 55 0 1 56 0 1 57 0 1 58 0 1 59 0 1 60 0 1 61 0 1 62 0 1 63 0 1 64 0 1 65 0 1 66 0 1 67 0 1 68 0 1 69 0 1 70 0 1 71 0 1 72 0 1 73 0 1 74 0 1 75 0 1 76 0 1 77 0 1 78 0 1 79 0 1 80 0 1 81 0 1 82 0 1 83 0 1 84 0 1 85 0 1 86 0 1 87 0 1 88 0 1 89 0 1 90 0 1 91 0 1 92 0 1 93 0 1 94 0 1 95 0 1 96 0 1 97 0 1 98 0 1 99 0 1 100 0 1 101 0 1 102 0 1 103 0 1 104 0 1 105 0 1 106 0 1 107 0 1 108 0 1 109 0 1 110 0 1 111 0 1 112 0 1 113 0 1 114 0 1 115 0 1 116 0 1 117 0 1 118 0 1 119 0 1 120 0 1 121 0 1 122 0 1 123 0 1 124 0 1 125 0 1 126 0 1 127 0 1 128 0 1 129 0 1 130 0 1 131 0 1 132 0 1 133 0 1 134 0 1 135 0 1 136 0 1 137 0 1 138 0 1 139 0 1 140 0 52 1 0 139 128 0 0 5 1 142 0 1 143 0 1 53 0 1 71 0 1 144 0 1 55 0 1 84 0 1 73 0 1 7 0 1 6 0 1 145 0 1 87 0 1 146 0 1 54 0 52 1 0 14 128 141 0 5 1 148 0 1 149 0 1 150 0 1 151 0 1 152 0 1 153 0 1 154 0 1 155 0 1 156 0 1 157 0 1 158 0 1 159 0 1 160 0 1 161 0 1 162 0 1 163 0 1 164 0 1 165 0 1 166 0 1 167 0 1 168 0 1 169 0 1 170 0 52 1 0 23 128 147 0 5 52 1 0 0 128 171 0 5 51 173 0 128 172 0 5 51 175 0 128 174 0 5 51 177 0 128 176 0 5 51 179 0 128 178 0 5 51 181 0 128 180 0 5 51 183 0 128 182 0 5 51 185 0 128 184 0 5 51 187 0 128 186 0 5 51 189 0 128 188 0 5 51 191 0 128 190 0 5 51 193 0 128 192 0 50)
:constants (
"HTML_TAGS"
"list"
"html"
"head"
"body"
"title"
"meta"
"link"
"script"
"style"
"noscript"
"header"
"nav"
"main"
"section"
"article"
"aside"
"footer"
"h1"
"h2"
"h3"
"h4"
"h5"
"h6"
"hgroup"
"div"
"p"
"blockquote"
"pre"
"figure"
"figcaption"
"address"
"details"
"summary"
"a"
"span"
"em"
"strong"
"small"
"b"
"i"
"u"
"s"
"mark"
"sub"
"sup"
"abbr"
"cite"
"code"
"kbd"
"samp"
"var"
"time"
"br"
"wbr"
"hr"
"ul"
"ol"
"li"
"dl"
"dt"
"dd"
"table"
"thead"
"tbody"
"tfoot"
"tr"
"th"
"td"
"caption"
"colgroup"
"col"
"form"
"input"
"textarea"
"select"
"option"
"optgroup"
"button"
"label"
"fieldset"
"legend"
"output"
"datalist"
"img"
"video"
"audio"
"source"
"picture"
"canvas"
"iframe"
"svg"
"math"
"path"
"circle"
"ellipse"
"rect"
"line"
"polyline"
"polygon"
"text"
"tspan"
"g"
"defs"
"use"
"clipPath"
"mask"
"pattern"
"linearGradient"
"radialGradient"
"stop"
"filter"
"feGaussianBlur"
"feOffset"
"feBlend"
"feColorMatrix"
"feComposite"
"feMerge"
"feMergeNode"
"feTurbulence"
"feComponentTransfer"
"feFuncR"
"feFuncG"
"feFuncB"
"feFuncA"
"feDisplacementMap"
"feFlood"
"feImage"
"feMorphology"
"feSpecularLighting"
"feDiffuseLighting"
"fePointLight"
"feSpotLight"
"feDistantLight"
"animate"
"animateTransform"
"foreignObject"
"template"
"slot"
"dialog"
"menu"
"VOID_ELEMENTS"
"area"
"base"
"embed"
"param"
"track"
"BOOLEAN_ATTRS"
"async"
"autofocus"
"autoplay"
"checked"
"controls"
"default"
"defer"
"disabled"
"formnovalidate"
"hidden"
"inert"
"ismap"
"loop"
"multiple"
"muted"
"nomodule"
"novalidate"
"open"
"playsinline"
"readonly"
"required"
"reversed"
"selected"
"*definition-form-extensions*"
"definition-form?"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 34 94 0 5 16 0 1 2 0 52 0 0 2 6 34 80 0 5 16 0 1 3 0 52 0 0 2 6 34 66 0 5 16 0 1 4 0 52 0 0 2 6 34 52 0 5 16 0 1 5 0 52 0 0 2 6 34 38 0 5 16 0 1 6 0 52 0 0 2 6 34 24 0 5 16 0 1 7 0 52 0 0 2 6 34 10 0 5 20 9 0 16 0 52 8 0 2 50)
:constants (
"="
"define"
"defcomp"
"defisland"
"defmacro"
"defstyle"
"deftype"
"defeffect"
"contains?"
"*definition-form-extensions*"))
"parse-element-args"
(code :arity 2
:bytecode (52 0 0 0 17 2 52 1 0 0 17 3 51 3 0 1 0 1 1 1 2 1 3 1 4 0 1 5 0 1 6 0 4 52 0 0 4 16 0 52 2 0 3 5 16 2 16 3 52 1 0 2 50)
:constants (
"dict"
"list"
"reduce"
(code :arity 2 :upvalue-count 4
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 2 33 29 0 16 0 1 1 0 4 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 154 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 33 24 0 5 16 0 1 3 0 52 0 0 2 52 4 0 1 18 0 52 9 0 1 52 8 0 2 33 78 0 20 10 0 20 11 0 18 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 12 0 2 18 1 48 2 48 1 17 3 18 2 20 14 0 16 1 48 1 16 3 52 13 0 3 5 16 0 1 1 0 3 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 5 32 32 0 20 15 0 18 3 16 1 48 2 5 16 0 1 3 0 16 0 1 3 0 52 0 0 2 52 4 0 1 52 2 0 3 50)
:constants (
"get"
"skip"
"assoc"
"i"
"inc"
"="
"type-of"
"keyword"
"<"
"len"
"trampoline"
"eval-expr"
"nth"
"dict-set!"
"keyword-name"
"append!"))
"i"
0
"skip"))
"render-attrs"
(code :arity 1
:bytecode (1 1 0 51 3 0 1 0 16 0 52 4 0 1 52 2 0 2 52 0 0 2 50)
:constants (
"join"
""
"map"
(code :arity 1 :upvalue-count 1
:bytecode (18 0 16 0 52 0 0 2 17 1 20 2 0 16 0 52 1 0 2 6 33 3 0 5 16 1 33 12 0 1 4 0 16 0 52 3 0 2 32 70 0 20 2 0 16 0 52 1 0 2 6 33 7 0 5 16 1 52 5 0 1 33 6 0 1 6 0 32 41 0 16 1 52 7 0 1 33 6 0 1 6 0 32 26 0 1 4 0 16 0 1 8 0 20 9 0 16 1 52 3 0 1 48 1 1 10 0 52 3 0 5 50)
:constants (
"dict-get"
"contains?"
"BOOLEAN_ATTRS"
"str"
" "
"not"
""
"nil?"
"=\""
"escape-attr"
"\""))
"keys"))
"eval-cond"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 12 0 20 1 0 16 0 16 1 49 2 32 9 0 20 2 0 16 0 16 1 49 2 50)
:constants (
"cond-scheme?"
"eval-cond-scheme"
"eval-cond-clojure"))
"eval-cond-scheme"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 4 0 2 32 76 0 16 0 52 1 0 1 17 2 16 2 52 1 0 1 17 3 16 2 1 3 0 52 2 0 2 17 4 16 3 52 4 0 1 33 5 0 16 4 32 35 0 20 5 0 20 6 0 16 3 16 1 48 2 48 1 33 5 0 16 4 32 13 0 20 7 0 16 0 52 8 0 1 16 1 49 2 50)
:constants (
"empty?"
"first"
"nth"
1
"is-else-clause?"
"trampoline"
"eval-expr"
"eval-cond-scheme"
"rest"))
"eval-cond-clojure"
(code :arity 2
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 4 0 2 32 71 0 16 0 52 3 0 1 17 2 16 0 1 5 0 52 4 0 2 17 3 16 2 52 6 0 1 33 5 0 16 3 32 38 0 20 7 0 20 8 0 16 2 16 1 48 2 48 1 33 5 0 16 3 32 16 0 20 9 0 16 0 1 2 0 52 10 0 2 16 1 49 2 50)
:constants (
"<"
"len"
2
"first"
"nth"
1
"is-else-clause?"
"trampoline"
"eval-expr"
"eval-cond-clojure"
"slice"))
"process-bindings"
(code :arity 2
:bytecode (20 0 0 16 1 48 1 17 2 51 2 0 1 2 16 0 52 1 0 2 5 16 2 50)
:constants (
"env-extend"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 14 0 5 16 0 52 4 0 1 1 5 0 52 3 0 2 33 79 0 16 0 52 6 0 1 52 1 0 1 1 7 0 52 0 0 2 33 14 0 20 8 0 16 0 52 6 0 1 48 1 32 10 0 16 0 52 6 0 1 52 9 0 1 17 1 20 10 0 18 0 16 1 20 11 0 20 12 0 16 0 1 14 0 52 13 0 2 18 0 48 2 48 1 49 3 32 1 0 2 50)
:constants (
"="
"type-of"
"list"
">="
"len"
2
"first"
"symbol"
"symbol-name"
"str"
"env-bind!"
"trampoline"
"eval-expr"
"nth"
1))))
"is-render-expr?"
(code :arity 1
:bytecode (16 0 52 2 0 1 1 3 0 52 1 0 2 52 0 0 1 6 34 7 0 5 16 0 52 4 0 1 33 4 0 4 32 170 0 16 0 52 5 0 1 17 1 16 1 52 2 0 1 1 6 0 52 1 0 2 52 0 0 1 33 4 0 4 32 138 0 20 7 0 16 1 48 1 17 2 16 2 1 8 0 52 1 0 2 6 34 116 0 5 16 2 1 9 0 52 1 0 2 6 34 102 0 5 16 2 1 11 0 52 10 0 2 6 34 88 0 5 16 2 1 12 0 52 10 0 2 6 34 74 0 5 20 14 0 16 2 52 13 0 2 6 34 60 0 5 16 2 1 17 0 52 16 0 2 1 18 0 52 15 0 2 6 33 39 0 5 16 0 52 19 0 1 1 20 0 52 15 0 2 6 33 21 0 5 16 0 1 20 0 52 21 0 2 52 2 0 1 1 22 0 52 1 0 2 50)
:constants (
"not"
"="
"type-of"
"list"
"empty?"
"first"
"symbol"
"symbol-name"
"<>"
"raw!"
"starts-with?"
"~"
"html:"
"contains?"
"HTML_TAGS"
">"
"index-of"
"-"
0
"len"
1
"nth"
"keyword"))
"merge-spread-attrs"
(code :arity 2
:bytecode (51 1 0 1 1 1 0 16 1 52 2 0 1 52 0 0 2 50)
:constants (
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 16 0 52 0 0 2 17 1 16 0 1 2 0 52 1 0 2 33 62 0 18 1 1 2 0 52 0 0 2 17 2 18 1 1 2 0 16 2 6 33 14 0 5 16 2 1 5 0 52 1 0 2 52 4 0 1 33 14 0 16 2 1 7 0 16 1 52 6 0 3 32 2 0 16 1 52 3 0 3 32 84 0 16 0 1 8 0 52 1 0 2 33 62 0 18 1 1 8 0 52 0 0 2 17 2 18 1 1 8 0 16 2 6 33 14 0 5 16 2 1 5 0 52 1 0 2 52 4 0 1 33 14 0 16 2 1 9 0 16 1 52 6 0 3 32 2 0 16 1 52 3 0 3 32 10 0 18 1 16 0 16 1 52 3 0 3 50)
:constants (
"dict-get"
"="
"class"
"dict-set!"
"not"
""
"str"
" "
"style"
";"))
"keys"))
"escape-html"
(code :arity 1
:bytecode (16 0 52 0 0 1 17 1 16 1 1 2 0 1 3 0 52 1 0 3 17 1 5 16 1 1 4 0 1 5 0 52 1 0 3 17 1 5 16 1 1 6 0 1 7 0 52 1 0 3 17 1 5 16 1 1 8 0 1 9 0 52 1 0 3 17 1 5 16 1 50)
:constants (
"str"
"replace"
"&"
"&amp;"
"<"
"&lt;"
">"
"&gt;"
"\""
"&quot;"))
"escape-attr"
(code :arity 1
:bytecode (20 0 0 16 0 49 1 50)
:constants (
"escape-html")))))

View File

@@ -0,0 +1,523 @@
(sxbc 1 "10d418bcee7e13ff"
(code
: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 50)
:constants (
"split-path-segments"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 12 0 16 0 1 3 0 52 2 0 2 32 2 0 16 0 17 1 16 1 52 5 0 1 52 4 0 1 6 33 10 0 5 16 1 1 1 0 52 6 0 2 33 25 0 16 1 1 7 0 16 1 52 9 0 1 1 3 0 52 8 0 2 52 2 0 3 32 2 0 16 1 17 2 16 2 52 5 0 1 33 7 0 52 10 0 0 32 9 0 16 2 1 1 0 52 11 0 2 50)
:constants (
"starts-with?"
"/"
"slice"
1
"not"
"empty?"
"ends-with?"
0
"-"
"len"
"list"
"split"))
"make-route-segment"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 0 1 3 0 52 2 0 2 33 59 0 16 0 1 5 0 16 0 52 7 0 1 1 5 0 52 6 0 2 52 4 0 3 17 1 65 0 0 17 2 16 2 1 9 0 1 10 0 52 8 0 3 5 16 2 1 11 0 16 1 52 8 0 3 5 16 2 32 32 0 65 0 0 17 1 16 1 1 9 0 1 12 0 52 8 0 3 5 16 1 1 11 0 16 0 52 8 0 3 5 16 1 50)
:constants (
"starts-with?"
"<"
"ends-with?"
">"
"slice"
1
"-"
"len"
"dict-set!"
"type"
"param"
"value"
"literal"))
"parse-route-pattern"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 20 2 0 16 1 52 1 0 2 50)
:constants (
"split-path-segments"
"map"
"make-route-segment"))
"match-route-segments"
(code :arity 2
:bytecode (16 0 52 2 0 1 16 1 52 2 0 1 52 1 0 2 52 0 0 1 33 4 0 2 32 35 0 65 0 0 17 2 3 17 3 51 4 0 1 3 1 0 1 2 16 1 52 3 0 2 5 16 3 33 5 0 16 2 32 1 0 2 50)
:constants (
"not"
"="
"len"
"for-each-indexed"
(code :arity 2 :upvalue-count 3
:bytecode (18 0 33 103 0 18 1 16 0 52 0 0 2 17 2 16 1 1 2 0 52 1 0 2 17 3 16 3 1 4 0 52 3 0 2 33 32 0 16 2 16 1 1 6 0 52 1 0 2 52 3 0 2 52 5 0 1 33 6 0 4 19 0 32 1 0 2 32 35 0 16 3 1 7 0 52 3 0 2 33 20 0 18 2 16 1 1 6 0 52 1 0 2 16 2 52 8 0 3 32 3 0 4 19 0 32 1 0 2 50)
:constants (
"nth"
"get"
"type"
"="
"literal"
"not"
"value"
"param"
"dict-set!"))))
"match-route"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 1 48 1 17 3 20 2 0 16 2 16 3 49 2 50)
:constants (
"split-path-segments"
"parse-route-pattern"
"match-route-segments"))
"find-matching-route"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 33 17 0 20 2 0 16 0 48 1 6 34 3 0 5 16 0 32 2 0 16 0 17 2 20 3 0 16 2 48 1 17 3 2 17 4 51 5 0 1 4 1 3 16 1 52 4 0 2 5 16 4 50)
:constants (
"starts-with?"
"/("
"sx-url-to-path"
"split-path-segments"
"for-each"
(code :arity 1 :upvalue-count 2
:bytecode (18 0 52 0 0 1 33 65 0 20 1 0 18 1 16 0 1 3 0 52 2 0 2 48 2 17 1 16 1 52 0 0 1 52 4 0 1 33 30 0 16 0 65 0 0 52 5 0 2 17 2 16 2 1 7 0 16 1 52 6 0 3 5 16 2 19 0 32 1 0 2 32 1 0 2 50)
:constants (
"nil?"
"match-route-segments"
"get"
"parsed"
"not"
"merge"
"dict-set!"
"params"))))
"_fn-to-segment"
(code :arity 1
:bytecode (16 0 6 1 0 0 52 1 0 2 33 7 0 5 1 2 0 32 147 0 6 1 3 0 52 1 0 2 33 7 0 5 1 4 0 32 129 0 6 1 5 0 52 1 0 2 33 7 0 5 1 6 0 32 111 0 6 1 7 0 52 1 0 2 33 7 0 5 1 8 0 32 93 0 6 1 9 0 52 1 0 2 33 7 0 5 1 10 0 32 75 0 6 1 11 0 52 1 0 2 33 7 0 5 1 12 0 32 57 0 6 1 13 0 52 1 0 2 33 7 0 5 1 14 0 32 39 0 6 1 15 0 52 1 0 2 33 7 0 5 1 16 0 32 21 0 6 1 17 0 52 1 0 2 33 7 0 5 1 18 0 32 3 0 5 16 0 50)
:constants (
"doc"
"="
"docs"
"spec"
"specs"
"bootstrapper"
"bootstrappers"
"test"
"testing"
"example"
"examples"
"protocol"
"protocols"
"essay"
"essays"
"plan"
"plans"
"reference-detail"
"reference"))
"sx-url-to-path"
(code :arity 1
:bytecode (16 0 1 2 0 52 1 0 2 6 33 10 0 5 16 0 1 4 0 52 3 0 2 52 0 0 1 33 4 0 2 32 99 0 16 0 1 6 0 16 0 52 8 0 1 1 9 0 52 7 0 2 52 5 0 3 17 1 16 1 1 11 0 1 12 0 52 10 0 3 1 13 0 1 14 0 52 10 0 3 1 4 0 1 14 0 52 10 0 3 17 2 51 16 0 16 2 1 12 0 52 17 0 2 52 15 0 2 17 3 1 12 0 1 12 0 20 21 0 16 3 52 20 0 2 52 19 0 2 52 18 0 2 50)
:constants (
"not"
"starts-with?"
"/("
"ends-with?"
")"
"slice"
2
"-"
"len"
1
"replace"
"."
"/"
"("
""
"filter"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 50)
:constants (
"not"
"empty?"))
"split"
"str"
"join"
"map"
"_fn-to-segment"))
"_count-leading-dots"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 39 0 16 0 1 3 0 52 2 0 2 33 24 0 1 5 0 20 6 0 16 0 1 5 0 52 7 0 2 48 1 52 4 0 2 32 3 0 1 1 0 50)
:constants (
"empty?"
0
"starts-with?"
"."
"+"
1
"_count-leading-dots"
"slice"))
"_strip-trailing-close"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 30 0 20 2 0 16 0 1 4 0 16 0 52 6 0 1 1 7 0 52 5 0 2 52 3 0 3 49 1 32 2 0 16 0 50)
:constants (
"ends-with?"
")"
"_strip-trailing-close"
"slice"
0
"-"
"len"
1))
"_index-of-safe"
(code :arity 2
:bytecode (16 0 16 1 52 0 0 2 17 2 16 2 52 1 0 1 6 34 10 0 5 16 2 1 3 0 52 2 0 2 33 4 0 2 32 2 0 16 2 50)
:constants (
"index-of"
"nil?"
"<"
0))
"_last-index-of"
(code :arity 2
:bytecode (20 0 0 16 0 16 1 48 2 17 2 16 2 52 1 0 1 33 4 0 2 32 53 0 20 2 0 16 0 16 2 1 5 0 52 4 0 2 52 3 0 2 16 1 48 2 17 3 16 3 52 1 0 1 33 5 0 16 2 32 15 0 16 2 1 5 0 52 4 0 2 16 3 52 4 0 2 50)
:constants (
"_index-of-safe"
"nil?"
"_last-index-of"
"slice"
"+"
1))
"_pop-sx-url-level"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 0 52 2 0 1 20 0 0 16 0 48 1 52 2 0 1 52 1 0 2 17 2 16 2 1 4 0 52 3 0 2 33 6 0 1 5 0 32 67 0 20 6 0 16 1 1 7 0 48 2 17 3 16 3 52 8 0 1 33 6 0 1 5 0 32 40 0 16 1 1 11 0 16 3 52 10 0 3 16 0 16 0 52 2 0 1 16 2 1 4 0 52 1 0 2 52 1 0 2 52 10 0 2 52 9 0 2 50)
:constants (
"_strip-trailing-close"
"-"
"len"
"<="
1
"/"
"_last-index-of"
".("
"nil?"
"str"
"slice"
0))
"_pop-sx-url-levels"
(code :arity 2
:bytecode (16 1 1 1 0 52 0 0 2 33 5 0 16 0 32 21 0 20 2 0 20 3 0 16 0 48 1 16 1 1 5 0 52 4 0 2 49 2 50)
:constants (
"<="
0
"_pop-sx-url-levels"
"_pop-sx-url-level"
"-"
1))
"_split-pos-kw"
(code :arity 4
:bytecode (16 1 16 0 52 1 0 1 52 0 0 2 33 23 0 1 2 0 1 4 0 16 2 52 3 0 2 1 5 0 16 3 65 2 0 32 136 0 16 0 16 1 52 6 0 2 17 4 16 4 1 8 0 52 7 0 2 33 84 0 16 1 1 11 0 52 10 0 2 16 0 52 1 0 1 52 9 0 2 33 18 0 16 0 16 1 1 11 0 52 10 0 2 52 6 0 2 32 3 0 1 12 0 17 5 20 13 0 16 0 16 1 1 14 0 52 10 0 2 16 2 16 3 16 4 16 5 52 16 0 2 52 16 0 1 52 15 0 2 49 4 32 30 0 20 13 0 16 0 16 1 1 11 0 52 10 0 2 16 2 16 4 52 16 0 1 52 15 0 2 16 3 49 4 50)
:constants (
">="
"len"
"positional"
"join"
"."
"keywords"
"nth"
"starts-with?"
":"
"<"
"+"
1
""
"_split-pos-kw"
2
"append"
"list"))
"_parse-relative-body"
(code :arity 1
:bytecode (16 0 52 0 0 1 33 19 0 1 1 0 1 2 0 1 3 0 52 4 0 0 65 2 0 32 25 0 20 5 0 16 0 1 7 0 52 6 0 2 1 8 0 52 4 0 0 52 4 0 0 49 4 50)
:constants (
"empty?"
"positional"
""
"keywords"
"list"
"_split-pos-kw"
"split"
"."
0))
"_extract-innermost"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 0 20 0 0 16 0 48 1 52 2 0 1 52 1 0 2 17 2 20 3 0 16 1 1 4 0 48 2 17 3 16 3 52 5 0 1 33 29 0 1 6 0 1 7 0 1 8 0 16 1 1 9 0 52 1 0 2 1 10 0 16 2 65 3 0 32 47 0 1 6 0 16 1 1 11 0 16 3 1 9 0 52 12 0 2 52 1 0 3 1 8 0 16 1 16 3 1 9 0 52 12 0 2 52 1 0 2 1 10 0 16 2 65 3 0 50)
:constants (
"_strip-trailing-close"
"slice"
"len"
"_last-index-of"
".("
"nil?"
"before"
"/("
"content"
2
"suffix"
0
"+"))
"_find-kw-in-tokens"
(code :arity 3
:bytecode (16 1 16 0 52 1 0 1 52 0 0 2 33 4 0 2 32 77 0 16 0 16 1 52 3 0 2 16 2 52 2 0 2 6 33 20 0 5 16 1 1 6 0 52 5 0 2 16 0 52 1 0 1 52 4 0 2 33 18 0 16 0 16 1 1 6 0 52 5 0 2 52 3 0 2 32 18 0 20 7 0 16 0 16 1 1 6 0 52 5 0 2 16 2 49 3 50)
:constants (
">="
"len"
"="
"nth"
"<"
"+"
1
"_find-kw-in-tokens"))
"_find-keyword-value"
(code :arity 2
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 1 3 0 16 1 49 3 50)
:constants (
"_find-kw-in-tokens"
"split"
"."
0))
"_replace-kw-in-tokens"
(code :arity 4
:bytecode (16 1 16 0 52 1 0 1 52 0 0 2 33 7 0 52 2 0 0 32 108 0 16 0 16 1 52 4 0 2 16 2 52 3 0 2 6 33 20 0 5 16 1 1 7 0 52 6 0 2 16 0 52 1 0 1 52 5 0 2 33 35 0 16 2 16 3 52 2 0 2 20 9 0 16 0 16 1 1 10 0 52 6 0 2 16 2 16 3 48 4 52 8 0 2 32 32 0 16 0 16 1 52 4 0 2 20 9 0 16 0 16 1 1 7 0 52 6 0 2 16 2 16 3 48 4 52 11 0 2 50)
:constants (
">="
"len"
"list"
"="
"nth"
"<"
"+"
1
"append"
"_replace-kw-in-tokens"
2
"cons"))
"_set-keyword-in-content"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 48 2 17 3 16 3 52 1 0 1 33 19 0 16 0 1 3 0 16 1 1 3 0 16 2 52 2 0 5 32 28 0 1 3 0 20 5 0 16 0 1 3 0 52 6 0 2 1 7 0 16 1 16 2 48 4 52 4 0 2 50)
:constants (
"_find-keyword-value"
"nil?"
"str"
"."
"join"
"_replace-kw-in-tokens"
"split"
0))
"_is-delta-value?"
(code :arity 1
:bytecode (16 0 52 1 0 1 52 0 0 1 6 33 42 0 5 16 0 52 3 0 1 1 4 0 52 2 0 2 6 33 24 0 5 16 0 1 6 0 52 5 0 2 6 34 10 0 5 16 0 1 7 0 52 5 0 2 50)
:constants (
"not"
"empty?"
">"
"len"
1
"starts-with?"
"+"
"-"))
"_apply-delta"
(code :arity 2
:bytecode (16 0 2 52 0 0 2 17 2 16 1 2 52 0 0 2 17 3 16 2 52 1 0 1 6 34 7 0 5 16 3 52 1 0 1 33 5 0 16 1 32 12 0 16 2 16 3 52 3 0 2 52 2 0 1 50)
:constants (
"parse-int"
"nil?"
"str"
"+"))
"_apply-kw-pairs"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 5 0 16 0 32 100 0 16 1 52 1 0 1 17 2 16 2 52 1 0 1 17 3 16 2 1 3 0 52 2 0 2 17 4 20 4 0 16 4 48 1 33 37 0 20 5 0 16 0 16 3 48 2 17 6 16 6 52 6 0 1 33 5 0 16 4 32 9 0 20 7 0 16 6 16 4 48 2 32 2 0 16 4 17 5 20 8 0 20 9 0 16 0 16 3 16 5 48 3 16 1 52 10 0 1 49 2 50)
:constants (
"empty?"
"first"
"nth"
1
"_is-delta-value?"
"_find-keyword-value"
"nil?"
"_apply-delta"
"_apply-kw-pairs"
"_set-keyword-in-content"
"rest"))
"_apply-keywords-to-url"
(code :arity 2
:bytecode (16 1 52 0 0 1 33 5 0 16 0 32 51 0 20 1 0 16 0 48 1 17 2 20 2 0 16 2 1 4 0 52 3 0 2 16 1 48 2 17 3 16 2 1 6 0 52 3 0 2 16 3 16 2 1 7 0 52 3 0 2 52 5 0 3 50)
:constants (
"empty?"
"_extract-innermost"
"_apply-kw-pairs"
"get"
"content"
"str"
"before"
"suffix"))
"_normalize-relative"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 12 0 1 1 0 16 0 1 3 0 52 2 0 3 50)
:constants (
"starts-with?"
"("
"str"
")"))
"resolve-relative-url"
(code :arity 2
:bytecode (20 0 0 16 1 48 1 17 2 16 2 1 2 0 16 2 52 4 0 1 1 2 0 52 3 0 2 52 1 0 3 17 3 20 5 0 16 3 48 1 17 4 16 3 20 5 0 16 3 48 1 52 1 0 2 17 5 16 4 1 7 0 52 6 0 2 33 5 0 16 0 32 215 0 20 8 0 16 5 48 1 17 6 16 6 1 10 0 52 9 0 2 17 7 16 6 1 11 0 52 9 0 2 17 8 16 4 1 2 0 52 6 0 2 33 58 0 16 7 52 12 0 1 33 5 0 16 0 32 41 0 20 13 0 16 0 48 1 17 10 16 0 20 13 0 16 0 48 1 52 4 0 1 52 1 0 2 17 11 16 10 1 15 0 16 7 16 11 52 14 0 4 32 103 0 20 16 0 16 0 16 4 1 2 0 52 3 0 2 48 2 17 10 16 7 52 12 0 1 33 5 0 16 10 32 71 0 16 10 1 17 0 52 6 0 2 33 15 0 1 18 0 16 7 1 19 0 52 14 0 3 32 44 0 20 13 0 16 10 48 1 17 11 16 10 20 13 0 16 10 48 1 52 4 0 1 52 1 0 2 17 12 16 11 1 20 0 16 7 1 19 0 16 12 52 14 0 5 17 9 20 21 0 16 9 16 8 49 2 50)
:constants (
"_normalize-relative"
"slice"
1
"-"
"len"
"_count-leading-dots"
"="
0
"_parse-relative-body"
"get"
"positional"
"keywords"
"empty?"
"_strip-trailing-close"
"str"
"."
"_pop-sx-url-levels"
"/"
"/("
")"
".("
"_apply-keywords-to-url"))
"relative-sx-url?"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 33 14 0 5 16 0 1 3 0 52 0 0 2 52 2 0 1 6 34 10 0 5 16 0 1 4 0 52 0 0 2 50)
:constants (
"starts-with?"
"("
"not"
"/("
"."))
"_url-special-forms"
(code
:bytecode (1 1 0 1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 52 0 0 6 50)
:constants (
"list"
"!source"
"!inspect"
"!diff"
"!search"
"!raw"
"!json"))
"url-special-form?"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 33 12 0 5 20 3 0 48 0 16 0 52 2 0 2 50)
:constants (
"starts-with?"
"!"
"contains?"
"_url-special-forms"))
"parse-sx-url"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 33 17 0 1 2 0 16 0 1 3 0 1 4 0 65 2 0 32 119 1 20 5 0 16 0 48 1 33 17 0 1 2 0 16 0 1 3 0 1 6 0 65 2 0 32 92 1 16 0 1 8 0 52 7 0 2 6 33 10 0 5 16 0 1 10 0 52 9 0 2 33 193 0 16 0 1 12 0 16 0 52 14 0 1 1 15 0 52 13 0 2 52 11 0 3 17 1 20 16 0 16 1 1 17 0 48 2 17 2 20 16 0 16 1 1 18 0 48 2 17 3 16 2 52 19 0 1 6 33 7 0 5 16 3 52 19 0 1 33 9 0 16 1 52 14 0 1 32 36 0 16 2 52 19 0 1 33 5 0 16 3 32 22 0 16 3 52 19 0 1 33 5 0 16 2 32 8 0 16 2 16 3 52 20 0 2 17 4 16 1 1 21 0 16 4 52 11 0 3 17 5 16 1 16 4 52 11 0 2 17 6 16 6 1 17 0 52 7 0 2 33 12 0 16 6 1 15 0 52 11 0 2 32 2 0 16 6 17 7 1 2 0 16 0 1 3 0 1 22 0 1 23 0 16 7 1 24 0 16 5 65 4 0 32 129 0 16 0 1 25 0 52 7 0 2 6 33 10 0 5 16 0 1 10 0 52 9 0 2 33 46 0 16 0 1 12 0 16 0 52 14 0 1 1 15 0 52 13 0 2 52 11 0 3 17 1 1 2 0 16 0 1 3 0 1 26 0 1 27 0 16 1 65 3 0 32 57 0 16 0 1 28 0 52 7 0 2 6 33 10 0 5 16 0 1 10 0 52 9 0 2 33 17 0 1 2 0 16 0 1 3 0 1 29 0 65 2 0 32 14 0 1 2 0 16 0 1 3 0 1 30 0 65 2 0 50)
:constants (
"="
"/"
"raw"
"type"
"home"
"relative-sx-url?"
"relative"
"starts-with?"
"/(!"
"ends-with?"
")"
"slice"
2
"-"
"len"
1
"_index-of-safe"
"."
"("
"nil?"
"min"
0
"special-form"
"inner"
"form"
"/(~"
"direct-component"
"name"
"/("
"absolute"
"path"))
"url-special-form-name"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 1 1 3 0 52 2 0 2 1 4 0 52 1 0 2 33 12 0 16 1 1 5 0 52 2 0 2 32 1 0 2 50)
:constants (
"parse-sx-url"
"="
"get"
"type"
"special-form"
"form"))
"url-special-form-inner"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 1 1 3 0 52 2 0 2 1 4 0 52 1 0 2 33 12 0 16 1 1 5 0 52 2 0 2 32 1 0 2 50)
:constants (
"parse-sx-url"
"="
"get"
"type"
"special-form"
"inner"))
"url-to-expr"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 6 34 7 0 5 16 0 52 2 0 1 33 7 0 52 3 0 0 32 73 0 16 0 1 1 0 52 4 0 2 33 12 0 16 0 1 6 0 52 5 0 2 32 2 0 16 0 17 1 16 1 1 8 0 1 9 0 52 7 0 3 17 2 20 10 0 16 2 48 1 17 3 16 3 52 2 0 1 33 7 0 52 3 0 0 32 6 0 16 3 52 11 0 1 50)
:constants (
"="
"/"
"empty?"
"list"
"starts-with?"
"slice"
1
"replace"
"."
" "
"sx-parse"
"first"))
"auto-quote-unknowns"
(code :arity 2
:bytecode (16 0 52 1 0 1 52 0 0 1 33 5 0 16 0 32 39 0 16 0 52 2 0 1 33 5 0 16 0 32 25 0 16 0 52 4 0 1 51 6 0 1 1 16 0 52 7 0 1 52 5 0 2 52 3 0 2 50)
:constants (
"not"
"list?"
"empty?"
"cons"
"first"
"map"
(code :arity 1 :upvalue-count 1
:bytecode (16 0 52 0 0 1 33 12 0 20 1 0 16 0 18 0 49 2 32 91 0 16 0 52 3 0 1 1 4 0 52 2 0 2 33 73 0 20 5 0 16 0 48 1 17 1 20 6 0 18 0 16 1 48 2 6 34 38 0 5 16 1 1 8 0 52 7 0 2 6 34 24 0 5 16 1 1 9 0 52 7 0 2 6 34 10 0 5 16 1 1 10 0 52 7 0 2 33 5 0 16 0 32 2 0 16 1 32 2 0 16 0 50)
:constants (
"list?"
"auto-quote-unknowns"
"="
"type-of"
"symbol"
"symbol-name"
"env-has?"
"starts-with?"
":"
"~"
"!"))
"rest"))
"prepare-url-expr"
(code :arity 2
:bytecode (20 0 0 16 0 48 1 17 2 16 2 52 1 0 1 33 5 0 16 2 32 9 0 20 2 0 16 2 16 1 49 2 50)
:constants (
"url-to-expr"
"empty?"
"auto-quote-unknowns")))))

View File

@@ -0,0 +1,110 @@
(sxbc 1 "1e908c466d2b8c22"
(code
:bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 5 52 5 0 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 50)
:constants (
"with-marsh-scope"
(code :arity 2
:bytecode (52 0 0 0 17 2 20 1 0 51 2 0 1 2 16 1 48 2 5 20 3 0 16 0 1 4 0 16 2 49 3 50)
:constants (
"list"
"with-island-scope"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"append!"))
"dom-set-data"
"sx-marsh-disposers"))
"dispose-marsh-scope"
(code :arity 1
:bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 24 0 51 3 0 16 1 52 2 0 2 5 20 4 0 16 0 1 1 0 2 49 3 32 1 0 2 50)
:constants (
"dom-get-data"
"sx-marsh-disposers"
"for-each"
(code :arity 1
:bytecode (20 0 0 16 0 2 49 2 50)
:constants (
"cek-call"))
"dom-set-data"))
"*store-registry*"
"dict"
"def-store"
(code :arity 2
:bytecode (20 0 0 17 2 16 2 16 0 52 2 0 2 52 1 0 1 33 22 0 16 2 16 0 20 4 0 16 1 2 48 2 52 3 0 3 21 0 0 32 1 0 2 5 20 0 0 16 0 52 5 0 2 50)
:constants (
"*store-registry*"
"not"
"has-key?"
"assoc"
"cek-call"
"get"))
"use-store"
(code :arity 1
:bytecode (20 1 0 16 0 52 0 0 2 33 12 0 20 1 0 16 0 52 2 0 2 32 16 0 1 5 0 16 0 1 6 0 52 4 0 3 52 3 0 1 50)
:constants (
"has-key?"
"*store-registry*"
"get"
"error"
"str"
"Store not found: "
". Call (def-store ...) before (use-store ...)."))
"clear-stores"
(code
:bytecode (52 0 0 0 21 1 0 50)
:constants (
"dict"
"*store-registry*"))
"emit-event"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 16 2 49 3 50)
:constants (
"dom-dispatch"))
"on-event"
(code :arity 3
:bytecode (20 0 0 16 0 16 1 16 2 49 3 50)
:constants (
"dom-on"))
"bridge-event"
(code :arity 4
:bytecode (20 0 0 51 1 0 1 0 1 1 1 3 1 2 49 1 50)
:constants (
"effect"
(code :upvalue-count 4
:bytecode (20 0 0 18 0 18 1 51 1 0 0 2 0 3 48 3 17 0 16 0 50)
:constants (
"dom-on"
(code :arity 1 :upvalue-count 2
:bytecode (20 0 0 16 0 48 1 17 1 18 0 33 16 0 20 1 0 18 0 16 1 52 2 0 1 48 2 32 2 0 16 1 17 2 20 3 0 18 1 16 2 49 2 50)
:constants (
"event-detail"
"cek-call"
"list"
"reset!"))))))
"resource"
(code :arity 1
:bytecode (20 0 0 1 2 0 3 1 3 0 2 1 4 0 2 52 1 0 6 48 1 17 1 20 5 0 20 6 0 16 0 2 48 2 51 7 0 1 1 51 8 0 1 1 48 3 5 16 1 50)
:constants (
"signal"
"dict"
"loading"
"data"
"error"
"promise-then"
"cek-call"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 1 2 0 4 1 3 0 16 0 1 4 0 2 52 1 0 6 49 2 50)
:constants (
"reset!"
"dict"
"loading"
"data"
"error"))
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 1 2 0 4 1 3 0 2 1 4 0 16 0 52 1 0 6 49 2 50)
:constants (
"reset!"
"dict"
"loading"
"data"
"error")))))))

View File

@@ -0,0 +1,483 @@
(sxbc 1 "3a8a55b66b6597f5"
(code
: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 50)
:constants (
"make-upvalue-cell"
(code :arity 1
:bytecode (1 0 0 16 0 65 1 0 50)
:constants (
"uv-value"))
"uv-get"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 50)
:constants (
"get"
"uv-value"))
"uv-set!"
(code :arity 2
:bytecode (16 0 1 1 0 16 1 52 0 0 3 50)
:constants (
"dict-set!"
"uv-value"))
"make-vm-code"
(code :arity 4
:bytecode (1 0 0 16 2 1 1 0 16 1 1 2 0 16 0 1 3 0 16 3 65 4 0 50)
:constants (
"vc-bytecode"
"vc-locals"
"vc-arity"
"vc-constants"))
"make-vm-closure"
(code :arity 5
:bytecode (1 0 0 16 3 1 1 0 16 1 1 2 0 16 2 1 3 0 16 0 1 4 0 16 4 65 5 0 50)
:constants (
"vm-globals"
"vm-upvalues"
"vm-name"
"vm-code"
"vm-closure-env"))
"make-vm-frame"
(code :arity 2
:bytecode (1 0 0 1 1 0 1 2 0 16 0 1 3 0 16 1 1 4 0 65 0 0 65 4 0 50)
:constants (
"ip"
0
"closure"
"base"
"local-cells"))
"make-vm"
(code :arity 1
:bytecode (1 0 0 1 1 0 1 2 0 52 3 0 0 1 4 0 1 6 0 52 5 0 1 1 7 0 16 0 65 4 0 50)
:constants (
"sp"
0
"frames"
"list"
"stack"
"make-vm-stack"
4096
"globals"))
"vm-push"
(code :arity 2
:bytecode (16 0 1 1 0 52 0 0 2 17 2 16 0 1 2 0 52 0 0 2 17 3 16 2 16 3 52 4 0 1 52 3 0 2 33 45 0 16 2 1 7 0 52 6 0 2 52 5 0 1 17 4 16 3 16 4 16 2 52 8 0 3 5 16 0 1 2 0 16 4 52 9 0 3 5 16 4 17 3 32 1 0 2 5 16 3 16 2 16 1 52 10 0 3 5 16 0 1 1 0 16 2 1 12 0 52 11 0 2 52 9 0 3 50)
:constants (
"get"
"sp"
"stack"
">="
"vm-stack-length"
"make-vm-stack"
"*"
2
"vm-stack-copy!"
"dict-set!"
"vm-stack-set!"
"+"
1))
"vm-pop"
(code :arity 1
:bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 17 1 16 0 1 2 0 16 1 52 4 0 3 5 16 0 1 6 0 52 1 0 2 16 1 52 5 0 2 50)
:constants (
"-"
"get"
"sp"
1
"dict-set!"
"vm-stack-get"
"stack"))
"vm-peek"
(code :arity 1
:bytecode (16 0 1 2 0 52 1 0 2 16 0 1 4 0 52 1 0 2 1 5 0 52 3 0 2 52 0 0 2 50)
:constants (
"vm-stack-get"
"get"
"stack"
"-"
"sp"
1))
"frame-read-u8"
(code :arity 1
:bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 1 3 0 52 0 0 2 1 4 0 52 0 0 2 17 2 16 2 16 1 52 5 0 2 17 3 16 0 1 1 0 16 1 1 8 0 52 7 0 2 52 6 0 3 5 16 3 50)
:constants (
"get"
"ip"
"closure"
"vm-code"
"vc-bytecode"
"nth"
"dict-set!"
"+"
1))
"frame-read-u16"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 20 0 0 16 0 48 1 17 2 16 1 16 2 1 3 0 52 2 0 2 52 1 0 2 50)
:constants (
"frame-read-u8"
"+"
"*"
256))
"frame-read-i16"
(code :arity 1
:bytecode (20 0 0 16 0 48 1 17 1 16 1 1 2 0 52 1 0 2 33 12 0 16 1 1 4 0 52 3 0 2 32 2 0 16 1 50)
:constants (
"frame-read-u16"
">="
32768
"-"
65536))
"vm-push-frame"
(code :arity 3
:bytecode (20 0 0 16 1 16 0 1 2 0 52 1 0 2 48 2 17 3 51 4 0 1 0 16 2 52 3 0 2 5 16 2 52 5 0 1 17 4 16 1 1 6 0 52 1 0 2 1 7 0 52 1 0 2 17 5 16 5 16 4 52 8 0 2 17 6 16 6 1 10 0 52 9 0 2 33 26 0 1 10 0 17 7 51 11 0 1 7 1 6 1 0 1 8 17 8 5 16 8 48 0 32 1 0 2 5 16 0 1 13 0 16 3 16 0 1 13 0 52 1 0 2 52 14 0 2 52 12 0 3 50)
:constants (
"make-vm-frame"
"get"
"sp"
"for-each"
(code :arity 1 :upvalue-count 1
:bytecode (20 0 0 18 0 16 0 49 2 50)
:constants (
"vm-push"))
"len"
"vm-code"
"vc-locals"
"-"
">"
0
(code :upvalue-count 4
:bytecode (18 0 18 1 52 0 0 2 33 28 0 20 1 0 18 2 2 48 2 5 18 0 1 3 0 52 2 0 2 19 0 5 18 3 49 0 32 1 0 2 50)
:constants (
"<"
"vm-push"
"+"
1))
"dict-set!"
"frames"
"cons"))
"code-from-value"
(code :arity 1
:bytecode (1 0 0 5 16 0 52 2 0 1 52 1 0 1 33 22 0 20 3 0 1 4 0 1 5 0 52 6 0 0 52 6 0 0 49 4 32 112 0 16 0 1 8 0 52 7 0 2 17 1 16 1 52 9 0 1 33 7 0 52 6 0 0 32 2 0 16 1 17 2 16 0 1 10 0 52 7 0 2 17 3 16 3 52 9 0 1 33 7 0 52 6 0 0 32 2 0 16 3 17 4 16 0 1 11 0 52 7 0 2 17 5 16 5 52 9 0 1 33 6 0 1 4 0 32 2 0 16 5 17 6 20 3 0 16 6 16 6 1 5 0 52 12 0 2 16 2 16 4 49 4 50)
:constants (
"Convert a compiler output dict to a vm-code object."
"not"
"dict?"
"make-vm-code"
0
16
"list"
"get"
"bytecode"
"nil?"
"constants"
"arity"
"+"))
"vm-closure?"
(code :arity 1
:bytecode (16 0 52 0 0 1 6 33 10 0 5 16 0 1 2 0 52 1 0 2 50)
:constants (
"dict?"
"has-key?"
"vm-code"))
"vm-call"
(code :arity 3
:bytecode (20 0 0 16 1 48 1 33 14 0 20 1 0 16 0 16 1 16 2 49 3 32 116 0 20 2 0 16 1 48 1 33 18 0 20 3 0 16 0 16 1 16 2 52 4 0 2 49 2 32 88 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 34 32 0 5 16 1 52 6 0 1 1 8 0 52 5 0 2 6 34 14 0 5 16 1 52 6 0 1 1 9 0 52 5 0 2 33 19 0 20 3 0 16 0 20 10 0 16 1 16 2 48 2 49 2 32 17 0 1 13 0 16 1 52 6 0 1 52 12 0 2 52 11 0 1 50)
:constants (
"vm-closure?"
"vm-push-frame"
"callable?"
"vm-push"
"apply"
"="
"type-of"
"lambda"
"component"
"island"
"cek-call"
"error"
"str"
"VM: not callable: "))
"frame-local-get"
(code :arity 3
:bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 3 16 2 52 3 0 1 17 4 16 3 16 4 52 4 0 2 33 16 0 20 5 0 16 3 16 4 52 1 0 2 49 1 32 28 0 16 0 1 7 0 52 1 0 2 16 1 1 9 0 52 1 0 2 16 2 52 8 0 2 52 6 0 2 50)
:constants (
"Read a local variable — check shared cells first, then stack."
"get"
"local-cells"
"str"
"has-key?"
"uv-get"
"vm-stack-get"
"stack"
"+"
"base"))
"frame-local-set"
(code :arity 4
:bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 4 16 2 52 3 0 1 17 5 16 4 16 5 52 4 0 2 33 18 0 20 5 0 16 4 16 5 52 1 0 2 16 3 49 2 32 30 0 16 0 1 7 0 52 1 0 2 16 1 1 9 0 52 1 0 2 16 2 52 8 0 2 16 3 52 6 0 3 50)
:constants (
"Write a local variable — to shared cell if captured, else to stack."
"get"
"local-cells"
"str"
"has-key?"
"uv-set!"
"vm-stack-set!"
"stack"
"+"
"base"))
"frame-upvalue-get"
(code :arity 2
:bytecode (20 0 0 16 0 1 3 0 52 2 0 2 1 4 0 52 2 0 2 16 1 52 1 0 2 49 1 50)
:constants (
"uv-get"
"nth"
"get"
"closure"
"vm-upvalues"))
"frame-upvalue-set"
(code :arity 3
:bytecode (20 0 0 16 0 1 3 0 52 2 0 2 1 4 0 52 2 0 2 16 1 52 1 0 2 16 2 49 2 50)
:constants (
"uv-set!"
"nth"
"get"
"closure"
"vm-upvalues"))
"vm-global-get"
(code :arity 3
:bytecode (1 0 0 5 16 0 1 2 0 52 1 0 2 17 3 16 3 16 2 52 3 0 2 33 11 0 16 3 16 2 52 1 0 2 32 67 0 16 1 1 4 0 52 1 0 2 1 5 0 52 1 0 2 17 4 16 4 52 6 0 1 33 9 0 16 2 52 7 0 1 32 31 0 20 8 0 16 4 16 2 48 2 17 5 16 5 52 6 0 1 33 9 0 16 2 52 7 0 1 32 2 0 16 5 50)
:constants (
"Look up a global: globals table → closure env chain → primitives."
"get"
"globals"
"has-key?"
"closure"
"vm-closure-env"
"nil?"
"get-primitive"
"env-walk"))
"vm-global-set"
(code :arity 4
:bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 1 3 0 52 1 0 2 17 4 4 17 5 16 4 52 5 0 1 52 4 0 1 33 16 0 20 6 0 16 4 16 2 16 3 48 3 17 5 32 1 0 2 5 16 5 52 4 0 1 33 20 0 16 0 1 8 0 52 1 0 2 16 2 16 3 52 7 0 3 32 1 0 2 50)
:constants (
"Set a global: write to closure env if name exists there, else globals."
"get"
"closure"
"vm-closure-env"
"not"
"nil?"
"env-walk-set!"
"dict-set!"
"globals"))
"env-walk"
(code :arity 2
:bytecode (16 0 52 0 0 1 33 4 0 2 32 55 0 20 1 0 16 0 16 1 48 2 33 12 0 20 2 0 16 0 16 1 49 2 32 31 0 20 3 0 16 0 48 1 17 2 16 2 52 0 0 1 33 4 0 2 32 9 0 20 4 0 16 2 16 1 49 2 50)
:constants (
"nil?"
"env-has?"
"env-get"
"env-parent"
"env-walk"))
"env-walk-set!"
(code :arity 3
:bytecode (16 0 52 0 0 1 33 4 0 4 32 61 0 20 1 0 16 0 16 1 48 2 33 16 0 20 2 0 16 0 16 1 16 2 48 3 5 3 32 33 0 20 3 0 16 0 48 1 17 3 16 3 52 0 0 1 33 4 0 4 32 11 0 20 4 0 16 3 16 1 16 2 49 3 50)
:constants (
"nil?"
"env-has?"
"env-set!"
"env-parent"
"env-walk-set!"))
"vm-create-closure"
(code :arity 3
:bytecode (1 0 0 5 20 1 0 16 2 48 1 17 3 16 2 52 2 0 1 33 31 0 16 2 1 4 0 52 3 0 2 17 5 16 5 52 5 0 1 33 6 0 1 6 0 32 2 0 16 5 32 3 0 1 6 0 17 4 52 7 0 0 17 6 1 6 0 17 7 51 8 0 1 7 1 4 1 1 1 0 1 6 1 8 17 8 5 16 8 48 0 5 16 6 17 5 20 9 0 16 3 16 5 2 16 0 1 10 0 52 3 0 2 2 49 5 50)
:constants (
"Create a closure from a code constant. Reads upvalue descriptors
from the bytecode stream and captures values from the enclosing frame."
"code-from-value"
"dict?"
"get"
"upvalue-count"
"nil?"
0
"list"
(code :upvalue-count 6
:bytecode (18 0 18 1 52 0 0 2 33 175 0 20 1 0 18 2 48 1 17 0 20 1 0 18 2 48 1 17 1 16 0 1 3 0 52 2 0 2 33 92 0 18 2 1 5 0 52 4 0 2 17 3 16 1 52 6 0 1 17 4 16 3 16 4 52 7 0 2 33 11 0 16 3 16 4 52 4 0 2 32 48 0 20 8 0 18 3 1 10 0 52 4 0 2 18 2 1 12 0 52 4 0 2 16 1 52 11 0 2 52 9 0 2 48 1 17 5 16 3 16 4 16 5 52 13 0 3 5 16 5 32 22 0 18 2 1 15 0 52 4 0 2 1 16 0 52 4 0 2 16 1 52 14 0 2 17 2 20 17 0 18 4 16 2 48 2 5 18 0 1 3 0 52 11 0 2 19 0 5 18 5 49 0 32 1 0 2 50)
:constants (
"<"
"frame-read-u8"
"="
1
"get"
"local-cells"
"str"
"has-key?"
"make-upvalue-cell"
"vm-stack-get"
"stack"
"+"
"base"
"dict-set!"
"nth"
"closure"
"vm-upvalues"
"append!"))
"make-vm-closure"
"globals"))
"vm-run"
(code :arity 2
:bytecode (1 0 0 5 51 1 0 1 0 1 1 17 1 5 16 1 49 0 50)
:constants (
"Execute bytecode until all frames are exhausted.
VmClosure calls push new frames; the loop picks them up.
OP_TAIL_CALL + VmClosure = true TCO: drop frame, push new, loop."
(code :upvalue-count 2
:bytecode (18 0 1 3 0 52 2 0 2 52 1 0 1 52 0 0 1 33 141 0 18 0 1 3 0 52 2 0 2 52 4 0 1 17 0 18 0 1 3 0 52 2 0 2 52 5 0 1 17 1 16 0 1 6 0 52 2 0 2 1 7 0 52 2 0 2 1 8 0 52 2 0 2 17 2 16 0 1 6 0 52 2 0 2 1 7 0 52 2 0 2 1 9 0 52 2 0 2 17 3 16 0 1 11 0 52 2 0 2 16 2 52 12 0 1 52 10 0 2 33 16 0 18 0 1 3 0 52 14 0 0 52 13 0 3 32 20 0 20 15 0 18 0 16 0 16 1 16 2 16 3 48 5 5 18 1 49 0 32 1 0 2 50)
:constants (
"not"
"empty?"
"get"
"frames"
"first"
"rest"
"closure"
"vm-code"
"vc-bytecode"
"vc-constants"
">="
"ip"
"len"
"dict-set!"
"list"
"vm-step"))))
"vm-step"
(code :arity 5
:bytecode (20 0 0 16 1 48 1 17 5 16 5 1 2 0 52 1 0 2 33 27 0 20 3 0 16 1 48 1 17 6 20 4 0 16 0 16 4 16 6 52 5 0 2 49 2 32 109 7 16 5 1 6 0 52 1 0 2 33 11 0 20 4 0 16 0 2 49 2 32 86 7 16 5 1 7 0 52 1 0 2 33 11 0 20 4 0 16 0 3 49 2 32 63 7 16 5 1 8 0 52 1 0 2 33 11 0 20 4 0 16 0 4 49 2 32 40 7 16 5 1 9 0 52 1 0 2 33 10 0 20 10 0 16 0 49 1 32 18 7 16 5 1 11 0 52 1 0 2 33 17 0 20 4 0 16 0 20 12 0 16 0 48 1 49 2 32 245 6 16 5 1 13 0 52 1 0 2 33 30 0 20 0 0 16 1 48 1 17 6 20 4 0 16 0 20 14 0 16 0 16 1 16 6 48 3 49 2 32 203 6 16 5 1 15 0 52 1 0 2 33 30 0 20 0 0 16 1 48 1 17 6 20 16 0 16 0 16 1 16 6 20 12 0 16 0 48 1 49 4 32 161 6 16 5 1 17 0 52 1 0 2 33 28 0 20 0 0 16 1 48 1 17 6 20 4 0 16 0 20 18 0 16 1 16 6 48 2 49 2 32 121 6 16 5 1 19 0 52 1 0 2 33 28 0 20 0 0 16 1 48 1 17 6 20 20 0 16 1 16 6 20 12 0 16 0 48 1 49 3 32 81 6 16 5 1 21 0 52 1 0 2 33 40 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 4 0 16 0 20 22 0 16 0 16 1 16 7 48 3 49 2 32 29 6 16 5 1 23 0 52 1 0 2 33 40 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 24 0 16 0 16 1 16 7 20 12 0 16 0 48 1 49 4 32 233 5 16 5 1 25 0 52 1 0 2 33 36 0 20 26 0 16 1 48 1 17 6 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 185 5 16 5 1 31 0 52 1 0 2 33 58 0 20 26 0 16 1 48 1 17 6 20 10 0 16 0 48 1 17 7 16 7 52 32 0 1 33 27 0 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 1 0 2 32 115 5 16 5 1 33 0 52 1 0 2 33 54 0 20 26 0 16 1 48 1 17 6 20 10 0 16 0 48 1 17 7 16 7 33 27 0 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 1 0 2 32 49 5 16 5 1 34 0 52 1 0 2 33 64 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 10 0 16 0 48 1 17 10 20 38 0 16 0 16 10 16 7 49 3 32 229 4 16 5 1 39 0 52 1 0 2 33 95 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 10 0 16 0 48 1 17 10 16 0 1 40 0 16 2 52 27 0 3 5 16 0 1 41 0 16 1 1 42 0 52 30 0 2 52 27 0 3 5 20 38 0 16 0 16 10 16 7 49 3 32 122 4 16 5 1 43 0 52 1 0 2 33 52 0 20 10 0 16 0 48 1 17 6 16 0 1 40 0 16 2 52 27 0 3 5 16 0 1 41 0 16 1 1 42 0 52 30 0 2 52 27 0 3 5 20 4 0 16 0 16 6 49 2 32 58 4 16 5 1 44 0 52 1 0 2 33 44 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 45 0 16 0 16 1 16 7 48 3 17 8 20 4 0 16 0 16 8 49 2 32 2 4 16 5 1 46 0 52 1 0 2 33 78 0 20 3 0 16 1 48 1 17 6 20 0 0 16 1 48 1 17 7 16 4 16 6 52 5 0 2 17 8 52 35 0 0 17 9 1 36 0 17 10 51 37 0 1 10 1 7 1 9 1 0 1 11 17 11 5 16 11 48 0 5 20 4 0 16 0 16 8 16 9 52 47 0 2 49 2 32 168 3 16 5 1 48 0 52 1 0 2 33 53 0 20 3 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 16 7 49 2 32 103 3 16 5 1 49 0 52 1 0 2 33 52 0 20 3 0 16 1 48 1 17 6 65 0 0 17 7 1 36 0 17 8 51 50 0 1 8 1 6 1 0 1 7 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 16 7 49 2 32 39 3 16 5 1 51 0 52 1 0 2 33 60 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 20 53 0 16 7 52 52 0 2 49 2 32 223 2 16 5 1 54 0 52 1 0 2 33 44 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 16 0 1 55 0 52 30 0 2 16 7 20 12 0 16 0 48 1 52 27 0 3 32 167 2 16 5 1 56 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 29 0 2 49 2 32 119 2 16 5 1 57 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 58 0 2 49 2 32 71 2 16 5 1 59 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 60 0 2 49 2 32 23 2 16 5 1 61 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 62 0 2 49 2 32 231 1 16 5 1 63 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 1 0 2 49 2 32 183 1 16 5 1 64 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 65 0 2 49 2 32 135 1 16 5 1 66 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 67 0 2 49 2 32 87 1 16 5 1 68 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 32 0 1 49 2 32 54 1 16 5 1 69 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 70 0 1 49 2 32 21 1 16 5 1 71 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 72 0 1 49 2 32 244 0 16 5 1 73 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 74 0 1 49 2 32 211 0 16 5 1 75 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 5 0 2 49 2 32 163 0 16 5 1 76 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 77 0 2 49 2 32 115 0 16 5 1 78 0 52 1 0 2 33 24 0 20 4 0 16 0 1 36 0 20 10 0 16 0 48 1 52 58 0 2 49 2 32 79 0 16 5 1 79 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 80 0 1 49 2 32 46 0 16 5 1 81 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 82 0 1 49 2 32 13 0 1 84 0 16 5 52 53 0 2 52 83 0 1 50)
:constants (
"frame-read-u8"
"="
1
"frame-read-u16"
"vm-push"
"nth"
2
3
4
5
"vm-pop"
6
"vm-peek"
16
"frame-local-get"
17
"frame-local-set"
18
"frame-upvalue-get"
19
"frame-upvalue-set"
20
"vm-global-get"
21
"vm-global-set"
32
"frame-read-i16"
"dict-set!"
"ip"
"+"
"get"
33
"not"
34
48
"list"
0
(code :upvalue-count 5
:bytecode (18 0 18 1 52 0 0 2 33 35 0 20 2 0 18 3 48 1 18 2 52 1 0 2 19 2 5 18 0 1 4 0 52 3 0 2 19 0 5 18 4 49 0 32 1 0 2 50)
:constants (
"<"
"cons"
"vm-pop"
"+"
1))
"vm-call"
49
"frames"
"sp"
"base"
50
51
"vm-create-closure"
52
"call-primitive"
64
65
(code :upvalue-count 5
:bytecode (18 0 18 1 52 0 0 2 33 48 0 20 1 0 18 2 48 1 17 0 20 1 0 18 2 48 1 17 1 18 3 16 1 16 0 52 2 0 3 5 18 0 1 4 0 52 3 0 2 19 0 5 18 4 49 0 32 1 0 2 50)
:constants (
"<"
"vm-pop"
"dict-set!"
"+"
1))
144
"apply"
"str"
128
"globals"
160
161
"-"
162
"*"
163
"/"
164
165
"<"
166
">"
167
168
"len"
169
"first"
170
"rest"
171
172
"cons"
173
174
"inc"
175
"dec"
"error"
"VM: unknown opcode "))
"vm-call-closure"
(code :arity 3
:bytecode (20 0 0 16 2 48 1 17 3 20 1 0 16 3 16 0 16 1 48 3 5 20 2 0 16 3 48 1 5 20 3 0 16 3 49 1 50)
:constants (
"make-vm"
"vm-push-frame"
"vm-run"
"vm-pop"))
"vm-execute-module"
(code :arity 2
:bytecode (20 0 0 16 0 52 1 0 0 1 2 0 16 1 2 48 5 17 2 20 3 0 16 1 48 1 17 3 20 4 0 16 2 1 5 0 48 2 17 4 1 5 0 17 5 16 0 1 7 0 52 6 0 2 17 6 51 8 0 1 5 1 6 1 3 1 7 17 7 5 16 7 48 0 5 16 3 1 10 0 16 4 52 1 0 1 52 9 0 3 5 20 11 0 16 3 48 1 5 20 12 0 16 3 49 1 50)
:constants (
"make-vm-closure"
"list"
"module"
"make-vm"
"make-vm-frame"
0
"get"
"vc-locals"
(code :upvalue-count 4
:bytecode (18 0 18 1 52 0 0 2 33 28 0 20 1 0 18 2 2 48 2 5 18 0 1 3 0 52 2 0 2 19 0 5 18 3 49 0 32 1 0 2 50)
:constants (
"<"
"vm-push"
"+"
1))
"dict-set!"
"frames"
"vm-run"
"vm-pop")))))

File diff suppressed because one or more lines are too long