Merge jerb-mcp into jerboa: build MCP server + jmcp binary from make
ober
5dc568260471f8f585b747fda46e91270bec9332
--- a/.gitignore +++ b/.gitignore @@ -41,6 +41,11 @@ /jerbuild.wp.so /jerbuild-* +# `make jmcp` / `make jmcp-portable` outputs (self-contained MCP binary). +# Build artifact rebuilt from mcp/ + data/; intermediates land in build/jmcp/. +/jmcp +/jmcp-* + # `make native-cross` outputs (per-target Rust dylibs) /lib-cross/ --- a/Makefile +++ b/Makefile @@ -59,6 +59,14 @@ help: @echo " audit-native Run cargo audit on Rust native library" @echo " pure-audit Scan jerboa-* repos for non-pure runtime surfaces" @echo "" + @echo "MCP server (jerboa-mcp + jmcp binary):" + @echo " mcp Compile-check the MCP server (mcp/server.ss)" + @echo " mcp-run Run the MCP server from source over stdio" + @echo " mcp-test Run the MCP protocol test suite from source" + @echo " jmcp Build self-contained ./jmcp (embeds data/*.sexp)" + @echo " jmcp-portable Build jmcp for {macOS,Linux,FreeBSD} x {amd64,arm64}" + @echo " mcp-test-binary Run protocol tests against the built ./jmcp" + @echo "" @echo "Test (core):" @echo " test Run core test suite (reader, stdlib, ffi, regex)" @echo " test-reader Reader tests" @@ -361,6 +369,115 @@ binary-cross: chez build chez-cross CC="$(CROSS_CC)" \ support/build-binary.sh $(BINARY_ENTRY) $(BINARY_OUTPUT)-$(CHEZ_TARGET_MACHINE) +# ── MCP server (jerboa-mcp) + jmcp self-contained binary ───────────────────── +# mcp/server.ss is the pure-Jerboa MCP server; data/*.sexp (cookbooks, +# features, api-signatures, security rules, …) is its knowledge base. `make +# jmcp` embeds the current data/ into a self-contained ./jmcp, so the binary is +# always rebuilt from this repo — there is no separate MCP repo to update. +# Re-run `make jmcp` after data/ changes (e.g. new howto/feature entries) to +# ship the updated knowledge base. +MCP_ENTRY = mcp/server.ss +MCP_TEST = mcp/test/protocol-test.ss +.PHONY: mcp mcp-run mcp-test mcp-test-binary mcp-check jmcp jmcp-portable \ + jmcp-macos-amd64 jmcp-linux-amd64 jmcp-linux-arm64 \ + jmcp-freebsd-amd64 jmcp-freebsd-arm64 + +# Source hygiene scoped to the MCP tree. Jerboa proper legitimately uses .sls +# and (chezscheme); only mcp/*.ss must stay pure Jerboa and data/ stays .sexp. +mcp-check: + @test "$$(find mcp -name '*.sls' | wc -l | tr -d ' ')" = "0" \ + || { echo "ERROR: .sls under mcp/ — server must stay pure Jerboa" >&2; exit 1; } + @test "$$(find data -name '*.json' | wc -l | tr -d ' ')" = "0" \ + || { echo "ERROR: .json in data/ — knowledge base must stay .sexp" >&2; exit 1; } + @! grep -l "(chezscheme)" mcp/*.ss >/dev/null 2>&1 \ + || { echo "ERROR: (chezscheme) imported in mcp/ source" >&2; exit 1; } + +mcp: chez mcp-check + @JERBOA_HOME=$(JERBOA_HOME) JERBOA_MCP_SCHEME_PATH=$(SCHEME) \ + $(SCHEME) --libdirs $(LIBDIRS) --script $(MCP_ENTRY) < /dev/null + @echo "mcp: server compile-check OK" + +mcp-run: + @JERBOA_HOME=$(JERBOA_HOME) JERBOA_MCP_SCHEME_PATH=$(SCHEME) \ + $(SCHEME) --libdirs $(LIBDIRS) --script $(MCP_ENTRY) + +mcp-test: chez mcp-check + @JERBOA_MCP_MODE=full JERBOA_HOME=$(JERBOA_HOME) JERBOA_MCP_SCHEME_PATH=$(SCHEME) \ + $(SCHEME) --libdirs $(LIBDIRS) --script $(MCP_TEST) + +mcp-test-binary: jmcp mcp-check + @JERBOA_MCP_MODE=full JERBOA_MCP_SERVER=$(JERBOA_HOME)/jmcp \ + JERBOA_MCP_REPO=/tmp/jerboa-mcp-no-data \ + JERBOA_HOME=$(JERBOA_HOME) JERBOA_MCP_SCHEME_PATH=$(SCHEME) \ + $(SCHEME) --libdirs $(LIBDIRS) --script $(MCP_TEST) + +# Native self-contained binary for the host (./jmcp). Embeds data/*.sexp. +jmcp: chez build mcp-check + @echo "=== Building native ./jmcp (host) ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) JMCP_OUTPUT=jmcp mcp/build-jmcp.sh + +# Cross-built binaries reuse jerboa's own cross prefixes (.chez-cross-<m>) and +# xpatch (build/chez/xc-<m>/s/xpatch). The native host build (make jmcp) covers +# macOS arm64; the targets below cover the other five. +jmcp-macos-amd64: chez build mcp-check + @test -d "$(JERBOA_HOME)/.chez-cross-ta6osx" || { echo "ERROR: .chez-cross-ta6osx not found (make chez-cross CHEZ_TARGET_MACHINE=ta6osx CROSS_CC='cc -arch x86_64')" >&2; exit 1; } + @test -f "$(CHEZ_BUILD_DIR)/xc-ta6osx/s/xpatch" || { echo "ERROR: ta6osx xpatch not found" >&2; exit 1; } + @echo "=== Cross-building jmcp-macos-amd64 ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) CC="cc -arch x86_64" \ + JMCP_OUTPUT=jmcp-macos-amd64 JMCP_MACHINE=ta6osx JMCP_TARGET_OS=macos \ + JMCP_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-ta6osx \ + JMCP_XPATCH=$(CHEZ_BUILD_DIR)/xc-ta6osx/s/xpatch \ + mcp/build-jmcp.sh + +jmcp-linux-amd64: chez build mcp-check + @command -v x86_64-linux-musl-gcc >/dev/null 2>&1 || { echo "ERROR: x86_64-linux-musl-gcc not on PATH" >&2; exit 1; } + @test -d "$(JERBOA_HOME)/.chez-cross-ta6le" || { echo "ERROR: .chez-cross-ta6le not found (make chez-cross CHEZ_TARGET_MACHINE=ta6le CROSS_CC=x86_64-linux-musl-gcc)" >&2; exit 1; } + @test -f "$(CHEZ_BUILD_DIR)/xc-ta6le/s/xpatch" || { echo "ERROR: ta6le xpatch not found" >&2; exit 1; } + @echo "=== Cross-building jmcp-linux-amd64 ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) CC=x86_64-linux-musl-gcc \ + JMCP_OUTPUT=jmcp-linux-amd64 JMCP_MACHINE=ta6le JMCP_TARGET_OS=linux \ + JMCP_STATIC=1 JMCP_DLOPEN_STUBS=1 \ + JMCP_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-ta6le \ + JMCP_XPATCH=$(CHEZ_BUILD_DIR)/xc-ta6le/s/xpatch \ + mcp/build-jmcp.sh + +jmcp-linux-arm64: chez build mcp-check + @command -v aarch64-linux-musl-gcc >/dev/null 2>&1 || { echo "ERROR: aarch64-linux-musl-gcc not on PATH" >&2; exit 1; } + @test -d "$(JERBOA_HOME)/.chez-cross-tarm64le" || { echo "ERROR: .chez-cross-tarm64le not found (make chez-cross CHEZ_TARGET_MACHINE=tarm64le CROSS_CC=aarch64-linux-musl-gcc)" >&2; exit 1; } + @test -f "$(CHEZ_BUILD_DIR)/xc-tarm64le/s/xpatch" || { echo "ERROR: tarm64le xpatch not found" >&2; exit 1; } + @echo "=== Cross-building jmcp-linux-arm64 ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) CC=aarch64-linux-musl-gcc \ + JMCP_OUTPUT=jmcp-linux-arm64 JMCP_MACHINE=tarm64le JMCP_TARGET_OS=linux \ + JMCP_STATIC=1 JMCP_DLOPEN_STUBS=1 \ + JMCP_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-tarm64le \ + JMCP_XPATCH=$(CHEZ_BUILD_DIR)/xc-tarm64le/s/xpatch \ + mcp/build-jmcp.sh + +jmcp-freebsd-amd64: chez build mcp-check + @test -x "$(JERBOA_HOME)/support/cross-cc-freebsd-amd64" || { echo "ERROR: support/cross-cc-freebsd-amd64 not found/executable" >&2; exit 1; } + @test -d "$(JERBOA_HOME)/.chez-cross-ta6fb" || { echo "ERROR: .chez-cross-ta6fb not found (make chez-cross CHEZ_TARGET_MACHINE=ta6fb CROSS_CC=...)" >&2; exit 1; } + @test -f "$(CHEZ_BUILD_DIR)/xc-ta6fb/s/xpatch" || { echo "ERROR: ta6fb xpatch not found" >&2; exit 1; } + @echo "=== Cross-building jmcp-freebsd-amd64 ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) CC="$(JERBOA_HOME)/support/cross-cc-freebsd-amd64" \ + JMCP_OUTPUT=jmcp-freebsd-amd64 JMCP_MACHINE=ta6fb JMCP_TARGET_OS=freebsd \ + JMCP_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-ta6fb \ + JMCP_XPATCH=$(CHEZ_BUILD_DIR)/xc-ta6fb/s/xpatch \ + mcp/build-jmcp.sh + +jmcp-freebsd-arm64: chez build mcp-check + @test -x "$(JERBOA_HOME)/support/cross-cc-freebsd-arm64" || { echo "ERROR: support/cross-cc-freebsd-arm64 not found/executable" >&2; exit 1; } + @test -d "$(JERBOA_HOME)/.chez-cross-tarm64fb" || { echo "ERROR: .chez-cross-tarm64fb not found (make chez-cross CHEZ_TARGET_MACHINE=tarm64fb CROSS_CC=...)" >&2; exit 1; } + @test -f "$(CHEZ_BUILD_DIR)/xc-tarm64fb/s/xpatch" || { echo "ERROR: tarm64fb xpatch not found" >&2; exit 1; } + @echo "=== Cross-building jmcp-freebsd-arm64 ===" + @JERBOA_HOME=$(JERBOA_HOME) SCHEME=$(SCHEME) CC="$(JERBOA_HOME)/support/cross-cc-freebsd-arm64" \ + JMCP_OUTPUT=jmcp-freebsd-arm64 JMCP_MACHINE=tarm64fb JMCP_TARGET_OS=freebsd \ + JMCP_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-tarm64fb \ + JMCP_XPATCH=$(CHEZ_BUILD_DIR)/xc-tarm64fb/s/xpatch \ + mcp/build-jmcp.sh + +# All six: host (macOS arm64) + the five cross targets. +jmcp-portable: jmcp jmcp-macos-amd64 jmcp-linux-amd64 jmcp-linux-arm64 jmcp-freebsd-amd64 jmcp-freebsd-arm64 + test: test-reader test-core test-runtime test-stdlib test-ffi test-modules test-expanded test-regex-all test-contract test-ergo test-limits-primitives test-typed-parser test-typed-checker test-pure-audit typecheck: new file mode 100644 --- /dev/null +++ b/data/api-signatures.sexp @@ -0,0 +1,26243 @@ +(("errors") ("generated" . "2026-04-22") + ("modules" + ("(jerboa build musl)" + ("exports" "build-musl-binary" "make-musl-cross-target" + "musl-available?" "musl-boot-files" "musl-chez-lib-dir" + "musl-chez-prefix" "musl-chez-prefix-set!" + "musl-cross-available?" "musl-crt-objects" "musl-gcc-path" + "musl-libkernel-path" "musl-link-command" "musl-sysroot" + "validate-musl-setup") + ("file" . "lib/jerboa/build/musl.sls") + ("tier" . "core")) + ("(jerboa build)" + ("exports" "build-binary" "build-boot-file" "build-project" + "build-release" "build-static-binary" "compile-for-target" + "compile-modules-parallel" "compute-file-hash" + "cross-target-ar" "cross-target-arch" "cross-target-cc" + "cross-target-os" "cross-target?" "file->c-array" + "generate-main-c" "link-static-archives" "make-cross-target" + "module-changed?" "musl-link-flags" "static-link-flags" + "target-linux-aarch64" "target-linux-x64" + "target-macos-aarch64" "target-macos-x64" "trace-imports" + "tree-shake-imports" "wpo-compile") + ("file" . "lib/jerboa/build.sls") + ("tier" . "core")) + ("(jerboa cache)" + ("exports" "cache-clear!" "cache-directory" "cache-key" "cache-lookup" + "cache-stats" "cache-store!" "with-compilation-cache") + ("file" . "lib/jerboa/cache.sls") + ("tier" . "core")) + ("(jerboa cloj)" + ("exports" + "activate-cloj-reader!" + "fn-literal" + "reader-cloj-mode") + ("file" . "lib/jerboa/cloj.sls") + ("tier" . "core")) + ("(jerboa clojure)" + ("exports" "*method-tables*" "*struct-types*" "->" "->>" + "->>?" "->?" "1+" "1-" ":" "<...>" "<>" "==" "=?" + "ContractViolation" "Datafiable" "Error" "Navigable" + "absento" "acons" "activate-cloj-reader!" "add-watch!" + "aget" "agetq" "agetv" "aif" "alist" "alist->hash-table" + "alist->plist*" "alist?" "alists->csv" "and-then" "any" + "append-map" "append1" "appendo" "apply-dynamic-bindings" + "arem" "arem!" "aremq" "aremq!" "aremv" "aremv!" "as->" + "aset" "aset!" "asetq" "asetq!" "asetv" "asetv!" "assert!" + "assoc" "assoc!" "assoc-in" "assoc-in!" "atom" "atom?" + "awhen" "begin-ffi" "bind-method!" "binding" "bound-fn" + "butlast" "c-declare" "c-lambda" "call-method" + "call-with-list-builder" "capture" + "capture-dynamic-bindings" "caro" "catch" "cdro" "chain" + "chain-and" "clj-delay" "clj-force" "clj-future" + "clj-promise" "comp" "compare-and-set!" "complement" + "compose" "compose1" "cond->" "cond->>" "conda" "conde" + "condu" "conj" "conj!" "conjoin" "cons*" "conso" + "constantly" "contains?" "count" "csv->alists" + "csv-port->rows" "curry" "curryn" "cut" "cute" "cycle" + "datafy" "date->string" "datetime->alist" "datetime->epoch" + "datetime->iso8601" "datetime->julian" "datetime->string" + "datetime-add" "datetime-clamp" "datetime-day" + "datetime-diff" "datetime-floor-day" "datetime-floor-hour" + "datetime-floor-month" "datetime-hour" "datetime-max" + "datetime-min" "datetime-minute" "datetime-month" + "datetime-nanosecond" "datetime-now" "datetime-offset" + "datetime-second" "datetime-subtract" "datetime-truncate" + "datetime-utc-now" "datetime-year" "datetime<=?" + "datetime<?" "datetime=?" "datetime>=?" "datetime>?" + "datetime?" "day-of-week" "day-of-year" "days-in-month" + "dec" "def" "def*" "def-dynamic" "defclass" + "define-active-pattern" "define-c-lambda" "define-enum" + "define-match-type" "define-rx" "define-sealed-hierarchy" + "define-values" "defmethod" "defn" "defrecord" "defrule" + "defrules" "defstruct" "delay?" "delete-duplicates/hash" + "deliver" "deref" "dfn" "difference" "directory-exists?" + "disj" "disjoin" "displayln" "dissoc" "dissoc!" "distinct" + "dlet" "doall" "dorun" "dotimes" "doto" "drop" "drop-last" + "drop-until" "drop-while" "duplicates" "duration" + "duration-nanoseconds" "duration-seconds" "duration?" + "empty?" "epoch->datetime" "eprintf" "eql?" "err" + "err->list" "err?" "error-irritants" "error-message" + "error-trace" "every" "every-consecutive?" "every-pred" + "ex-cause" "ex-data" "ex-info" "ex-info?" "ex-message" + "fail" "false?" "filter-err" "filter-map" "filter-ok" + "finally" "first" "first-and-only" "flatten" + "flatten-result" "flatten1" "flip" "fn-literal" "fnil" "for" + "for-each!" "for/and" "for/collect" "for/fold" "for/or" + "force-output" "format" "fprintf" "frequencies" "fresh" + "future-cancel" "future-cancelled?" "future-done?" "future?" + "get" "get-in" "group-by" "group-consecutive" + "group-n-consecutive" "group-same" "hash" "hash->list" + "hash->plist" "hash-clear!" "hash-copy" "hash-eq-literal" + "hash-find" "hash-fold" "hash-for-each" "hash-get" + "hash-has-key?" "hash-key?" "hash-keys" "hash-length" + "hash-literal" "hash-map" "hash-merge" "hash-merge!" + "hash-put!" "hash-ref" "hash-remove!" "hash-set" + "hash-table-set!" "hash-table?" "hash-update!" "hash-values" + "identity" "if-let" "imap" "imap-has?" "imap-hash" + "imap-ref" "imap-set" "imap=?" "imap?" "in-bytes" "in-chars" + "in-hash-keys" "in-hash-pairs" "in-hash-values" "in-imap" + "in-imap-keys" "in-imap-pairs" "in-imap-values" "in-indexed" + "in-lines" "in-list" "in-naturals" "in-port" "in-producer" + "in-pset" "in-range" "in-string" "in-vector" "inc" + "interleave" "interpose" "intersection" "into" "iota" + "iterate" "iterate-n" "ivec" "ivec-length" "ivec-ref" + "ivec-set" "json-object->string" "julian->datetime" "juxt" + "keep" "keys" "keyword->string" "keyword?" "last" + "last-pair" "lazy->list" "lazy-all?" "lazy-any?" + "lazy-append" "lazy-chunk" "lazy-concat" "lazy-cons" + "lazy-count" "lazy-cycle" "lazy-drop" "lazy-drop-while" + "lazy-filter" "lazy-first" "lazy-flatten" "lazy-fold" + "lazy-for-each" "lazy-force" "lazy-interleave" + "lazy-interpose" "lazy-iterate" "lazy-map" "lazy-mapcat" + "lazy-nil" "lazy-nil?" "lazy-nth" "lazy-partition" + "lazy-range" "lazy-realize" "lazy-realized?" "lazy-repeat" + "lazy-rest" "lazy-seq?" "lazy-take" "lazy-take-while" + "lazy-zip" "leap-year?" "length<=?" "length<=n?" "length<?" + "length<n?" "length=?" "length=n?" "length>=?" "length>=n?" + "length>?" "length>n?" "let-alist" "let-hash" "list*" + "list->hash-table" "list->lazy" "list->pqueue" "list-of?" + "loop" "lvar" "lvar?" "make-date" "make-datetime" + "make-duration" "make-hash-set" "make-hash-table" + "make-hash-table-eq" "make-keyword" "make-shared" + "make-time" "map-err" "map-invert" "map-ok" "map-results" + "map/car" "mapcat" "match" "match/strict" "max-key" "maybe" + "membero" "memo-proc" "memoize" "merge" "merge-with" "meta" + "meta-wrapped?" "min-key" "nav" "negate" "nested-empty-like" + "nested-get" "next" "nil?" "nullo" "ok" "ok->list" "ok?" + "or-else" "pairo" "parse-date" "parse-datetime" "parse-time" + "partial" "partition" "partition-all" "partition-by" + "path-absolute?" "path-directory" "path-expand" + "path-extension" "path-join" "path-normalize" + "path-strip-directory" "path-strip-extension" "peek" + "persistent!" "persistent-map?" "persistent-queue" + "persistent-set" "persistent-set->list" + "persistent-set-contains?" "persistent-set-hash" + "persistent-set?" "pget" "pgetq" "pgetv" "plist->alist*" + "plist->hash-table" "pop" "pop!" "pp" "pp-to-string" "ppd" + "ppd-to-string" "pprint" "pqueue->list" "pqueue-conj" + "pqueue-count" "pqueue-empty" "pqueue-empty?" "pqueue-peek" + "pqueue-pop" "pqueue?" "pr" "pr-str" "prem" "prem!" "premq" + "premq!" "premv" "premv!" "printf" "println" "prn" "prn-str" + "promise?" "pset" "pset!" "psetq" "psetq!" "psetv" "psetv!" + "push!" "r-drop" "r-filter" "r-flatten" "r-fold" "r-foldcat" + "r-map" "r-mapcat" "r-reduce" "r-remove" "r-take" + "r-take-while" "random-integer" "range" "rassoc" "re" + "re-find-all" "re-fold" "re-groups" "re-match-end" + "re-match-full" "re-match-group" "re-match-groups" + "re-match-named" "re-match-start" "re-match?" "re-replace" + "re-replace-all" "re-search" "re-split" "re?" + "read-all-as-lines" "read-all-as-string" "read-csv" + "read-csv-file" "read-file-lines" "read-file-string" + "read-json" "read-line" "reader-cloj-mode" "realized?" + "recur" "reduce" "reduce-kv" "reductions" "regex-match" + "regex-replace" "regex-replace-all" "regex-search" + "register-struct-type!" "reify" "remove-watch!" "repeat" + "repeatedly" "require" "reset!" "rest" "result->option" + "result->values" "result?" "results-partition" + "rows->csv-string" "run" "run*" "rx" "s-and" "s-assert" + "s-cat" "s-check-fn" "s-coll-of" "s-conform" "s-def" + "s-double-in" "s-enum" "s-exercise" "s-explain" + "s-explain-str" "s-fdef" "s-get-spec" "s-int-in" "s-keys" + "s-keys-opt" "s-map-of" "s-nilable" "s-or" "s-pred" + "s-tuple" "s-valid?" "select-keys" "seq" "seq->list" + "seq-butlast" "seq-concat" "seq-count" "seq-distinct" + "seq-drop" "seq-drop-while" "seq-empty?" "seq-every?" + "seq-filter" "seq-first" "seq-flatten" "seq-frequencies" + "seq-group-by" "seq-interleave" "seq-interpose" "seq-into" + "seq-keep" "seq-last" "seq-map" "seq-map-indexed" + "seq-mapcat" "seq-nth" "seq-partition" "seq-partition-all" + "seq-partition-by" "seq-reduce" "seq-remove" "seq-rest" + "seq-reverse" "seq-second" "seq-some" "seq-sort" + "seq-sort-by" "seq-take" "seq-take-while" "seq-zip" + "seq-zipmap" "seqable?" "sequence-results" "set" "set-index" + "set-join" "set-project" "set-rename" "set-select" "set?" + "shared-cas!" "shared-ref" "shared-set!" "shared-swap!" + "shared-update!" "shared?" "slice" "snoc" "some" "some->" + "some->>" "some-fn" "some?" "sort" "sort!" "sorted-set" + "sorted-set->list" "sorted-set-add" "sorted-set-by" + "sorted-set-contains?" "sorted-set-empty" "sorted-set-fold" + "sorted-set-max" "sorted-set-min" "sorted-set-range" + "sorted-set-remove" "sorted-set-size" "sorted-set?" "split" + "split-at" "split-with" "stable-sort" "stable-sort!" "str" + "str/blank?" "str/capitalize" "str/clj-index-of" + "str/ends-with?" "str/escape" "str/includes?" "str/join" + "str/lower-case" "str/re-quote-replacement" "str/replace" + "str/replace-first" "str/reverse" "str/split" + "str/split-lines" "str/starts-with?" "str/trim" + "str/trim-newline" "str/triml" "str/trimr" "str/upper-case" + "string->json-object" "string->keyword" "string->transit" + "string-contains" "string-empty?" "string-find" + "string-find-all" "string-index" "string-join" "string-map" + "string-match?" "string-prefix?" "string-split" + "string-suffix?" "string-trim" "strip-meta" + "struct-field-ref" "struct-field-set!" "struct-predicate" + "struct-type-info" "subset?" "succeed" "superset?" "swap!" + "take" "take-last" "take-until" "take-while" "time->string" + "transient" "transient?" "transit->string" "transit-decode" + "transit-encode" "transit-instant" "transit-instant?" + "transit-keyword" "transit-keyword?" "transit-read" + "transit-symbol" "transit-symbol?" "transit-uri" + "transit-uri?" "transit-uuid" "transit-uuid?" + "transit-write" "true?" "try" "try-result" "try-result*" + "union" "unique" "until" "unwind-protect" "unwrap" + "unwrap-err" "unwrap-or" "unwrap-or-else" "update" + "update-in" "update-in!" "using" "vals" "vary-meta" "vderef" + "vec" "vector*" "volatile!" "volatile?" "vreset!" "vswap!" + "when-let" "when/list" "while" "with-catch" "with-id" + "with-input-from-string" "with-list-builder" "with-lock" + "with-meta" "with-output-to-string" "with-resource" + "write-csv" "write-csv-file" "write-file-string" + "write-json" "zip" "zipmap" "~") + ("file" . "lib/jerboa/clojure.sls") + ("tier" . "compat")) + ("(jerboa core)" + ("exports" "*method-tables*" "*struct-types*" "1+" "1-" "any" + "arithmetic-shift" "bind-method!" "bytes->string" + "call-method" "call-with-input-string" + "call-with-output-string" "catch" + "condition-variable-broadcast!" "condition-variable-signal!" + "condition-variable-specific" + "condition-variable-specific-set!" "condition-variable?" + "copy-file" "create-directory" "create-directory*" + "current-thread" "def" "def*" "defclass" "defmethod" + "defrule" "defrules" "defstruct" "delete" "directory-files" + "display-continuation-backtrace" "display-exception" + "displayln" "drop" "error-irritants" "error-message" + "error-trace" "every" "f64vector-length" "f64vector-ref" + "f64vector-set!" "file-info" "file-info-device" + "file-info-group" "file-info-inode" + "file-info-last-access-time" + "file-info-last-modification-time" "file-info-mode" + "file-info-owner" "file-info-size" "file-info-type" + "filter-map" "finally" "force-output" "getenv" "getpid" + "hash" "hash->list" "hash->plist" "hash-clear!" "hash-copy" + "hash-eq" "hash-eq-literal" "hash-find" "hash-fold" + "hash-for-each" "hash-get" "hash-key?" "hash-keys" + "hash-length" "hash-literal" "hash-map" "hash-merge" + "hash-merge!" "hash-put!" "hash-ref" "hash-remove!" + "hash-table?" "hash-update!" "hash-values" + "input-port-timeout-set!" "iota" "keyword->string" + "keyword-arg-ref" "keyword?" "last" "last-pair" "let-hash" + "list->hash-table" "list->u8vector" + "make-condition-variable" "make-f64vector" "make-hash-table" + "make-hash-table-eq" "make-keyword" "make-mutex" + "make-mutex-gambit" "make-thread" "match" "mutex-lock!" + "mutex-name" "mutex-specific" "mutex-specific-set!" + "mutex-unlock!" "mutex?" "object->string" + "open-input-process" "open-process" + "output-port-timeout-set!" "path-absolute?" "path-directory" + "path-expand" "path-extension" "path-join" "path-normalize" + "path-strip-directory" "path-strip-extension" + "path-strip-trailing-directory-separator" + "plist->hash-table" "process-status" "random-bytes" + "random-integer" "read-line" "read-string" "read-u8" + "register-struct-type!" "setenv" "spawn" "spawn/group" + "spawn/name" "string->bytes" "string->keyword" + "string-empty?" "string-map" "string-split" "string-subst" + "struct-field-ref" "struct-field-set!" "struct-out" + "struct-predicate" "struct-type-info" "subu8vector" "take" + "thread-done?" "thread-interrupt!" "thread-join!" + "thread-mailbox-next" "thread-name" "thread-receive" + "thread-send" "thread-sleep!" "thread-specific" + "thread-specific-set!" "thread-start!" "thread-terminate!" + "thread-yield!" "thread?" "time->seconds" "try" "u8vector" + "u8vector->list" "u8vector-length" "u8vector-ref" + "u8vector-set!" "until" "user-info" "user-info-home" + "user-name" "while" "with-exception-catcher" "write-u8" "~") + ("file" . "lib/jerboa/core.sls") + ("tier" . "core")) + ("(jerboa cross)" + ("exports" "abi-name" "cc-flags-for-target" "cross-config-cc" + "cross-config-cflags" "cross-config-sysroot" + "cross-config-target-arch" "cross-config-target-os" + "cross-config-valid?" "cross-config?" "detect-host-config" + "endianness-for-target" "make-cross-config" + "normalize-path-sep" "platform-string" + "pointer-size-for-target" "target-arch-aarch64?" + "target-arch-riscv64?" "target-arch-x86-64?" + "target-os-linux?" "target-os-macos?" "target-os-windows?") + ("file" . "lib/jerboa/cross.sls") + ("tier" . "core")) + ("(jerboa embed)" + ("exports" "make-sandbox" "make-sandbox-config" "sandbox-call" + "sandbox-config?" "sandbox-define!" "sandbox-environment" + "sandbox-error-irritants" "sandbox-error-message" + "sandbox-error?" "sandbox-eval" "sandbox-eval-string" + "sandbox-import!" "sandbox-ref" "sandbox-reset!" "sandbox?" + "with-sandbox") + ("file" . "lib/jerboa/embed.sls") + ("tier" . "core")) + ("(jerboa ffi)" + ("exports" "begin-ffi" "c-declare" "c-lambda" + "define-c-lambda" "ffi-type-map" "load-shared-object*") + ("file" . "lib/jerboa/ffi.sls") + ("tier" . "core")) + ("(jerboa hot)" + ("exports" "file-modified?" "file-mtimes" "make-reloader" + "reload-result-error" "reload-result-file" + "reload-result-success?" "reload-result?" "reloader-check!" + "reloader-force-stale!" "reloader-on-error!" + "reloader-on-reload!" "reloader-reload!" "reloader-unwatch!" + "reloader-watch!" "reloader-watched" "reloader?" + "with-reloader") + ("file" . "lib/jerboa/hot.sls") + ("tier" . "core")) + ("(jerboa lock)" + ("exports" "lock-entry-deps" "lock-entry-hash" "lock-entry-name" + "lock-entry-version" "lock-entry?" "lockfile->sexp" + "lockfile-add!" "lockfile-diff" "lockfile-entries" + "lockfile-has?" "lockfile-lookup" "lockfile-merge" + "lockfile-read" "lockfile-remove!" "lockfile-write" + "lockfile?" "make-lock-entry" "make-lockfile" + "sexp->lockfile") + ("file" . "lib/jerboa/lock.sls") + ("tier" . "core")) + ("(jerboa pkg)" + ("exports" "constraint-satisfied?" "dep-name" + "dep-version-constraint" "dep?" "dependency-order" + "make-dep" "make-manifest" "make-package" "manifest-add" + "manifest-lookup" "manifest-packages" "manifest-remove" + "manifest?" "package-author" "package-deps" + "package-description" "package-name" "package-version" + "package?" "resolve-deps" "version->list" "version-compare" + "version<?" "version=?" "version>=?") + ("file" . "lib/jerboa/pkg.sls") + ("tier" . "core")) + ("(jerboa prelude clean)" + ("exports" "*method-tables*" "*struct-types*" + "ContractViolation" "Error" "aget" "agetq" "agetv" + "alist->hash-table" "any" "aset!" "asetq!" "asetv!" + "assert!" "begin-ffi" "bind-method!" "c-declare" "c-lambda" + "call-method" "catch" "chain" "chain-and" "def" "def*" + "defclass" "define-active-pattern" "define-c-lambda" + "define-match-type" "define-sealed-hierarchy" "defmethod" + "defrule" "defrules" "defstruct" "displayln" "drop" + "eprintf" "error-irritants" "error-message" "error-trace" + "every" "filter-map" "finally" "flatten" "group-by" + "hash->list" "hash->plist" "hash-clear!" "hash-copy" + "hash-eq-literal" "hash-find" "hash-fold" "hash-for-each" + "hash-get" "hash-key?" "hash-keys" "hash-length" + "hash-literal" "hash-map" "hash-merge" "hash-merge!" + "hash-put!" "hash-ref" "hash-remove!" "hash-update!" + "hash-values" "json-object->string" "keyword->string" + "keyword?" "last-pair" "let-hash" "list->hash-table" + "make-hash-table-eq" "make-keyword" "match" "match/strict" + "path-directory" "path-expand" "path-join" "path-normalize" + "path-strip-directory" "path-strip-extension" "pget" "pgetq" + "pgetv" "plist->hash-table" "read-all-as-lines" + "read-all-as-string" "read-file-lines" "read-file-string" + "read-json" "register-struct-type!" "snoc" "stable-sort" + "stable-sort!" "string->json-object" "string->keyword" + "string-contains" "string-empty?" "string-index" + "string-join" "string-prefix?" "string-split" + "string-suffix?" "string-trim" "struct-field-ref" + "struct-field-set!" "struct-predicate" "struct-type-info" + "take" "try" "unique" "until" "while" "write-file-string" + "write-json" "zip" "~") + ("file" . "lib/jerboa/prelude/clean.sls") + ("tier" . "core")) + ("(jerboa prelude safe)" + ("exports" "&jerboa" "&sandbox-error" "*default-timeout*" + "*fasl-allow-procedures*" "*fasl-max-byte-size*" + "*fasl-max-object-count*" "*method-tables*" "*safe-mode*" + "*sandbox-landlock*" "*sandbox-seccomp*" "*sandbox-timeout*" + "*struct-types*" "1+" "1-" "ContractViolation" "Error" + "aget" "agetq" "agetv" "alist->hash-table" "any" "aset!" + "asetq!" "asetv!" "assert!" "bind-method!" "call-method" + "call-with-resource" "call-with-safe-input-file" + "call-with-safe-output-file" "catch" "chain" "chain-and" + "connection-refused?" "connection-timeout?" + "db-connection-error?" "db-constraint-violation?" + "db-error?" "db-query-error?" "def" "def*" "defclass" + "defmethod" "defrule" "defrules" "defstruct" "displayln" + "drop" "eprintf" "error-irritants" "error-message" + "error-trace" "every" "filter-map" "finally" "flatten" + "format" "fprintf" "group-by" "hash->list" "hash->plist" + "hash-clear!" "hash-copy" "hash-eq-literal" "hash-find" + "hash-fold" "hash-for-each" "hash-get" "hash-key?" + "hash-keys" "hash-length" "hash-literal" "hash-map" + "hash-merge" "hash-merge!" "hash-put!" "hash-ref" + "hash-remove!" "hash-table?" "hash-update!" "hash-values" + "iota" "jerboa-condition-subsystem" "jerboa-condition?" + "json-object->string" "keyword->string" "keyword?" + "last-pair" "let-hash" "list->hash-table" "make-hash-table" + "make-hash-table-eq" "make-keyword" "make-sandbox-config" + "match" "network-error?" "open-safe-input-file" + "open-safe-output-file" "parallel" "parse-error?" + "path-absolute?" "path-directory" "path-expand" + "path-extension" "path-join" "path-normalize" + "path-strip-directory" "path-strip-extension" "pget" "pgetq" + "pgetv" "plist->hash-table" "printf" "race" + "read-all-as-lines" "read-all-as-string" "read-file-lines" + "read-file-string" "read-json" "register-resource-cleanup!" + "register-safe-record-type!" "register-struct-type!" + "resource-already-closed?" "resource-error?" + "resource-exhausted?" "resource-leak?" "run-safe" + "run-safe-eval" "safe-fasl-read" "safe-fasl-read-bytevector" + "safe-fasl-write" "safe-fasl-write-bytevector" + "sandbox-config-capabilities" "sandbox-config-landlock" + "sandbox-config-seccomp" "sandbox-config-timeout" + "sandbox-config?" "sandbox-error-detail" + "sandbox-error-phase" "sandbox-error?" "scope-spawn" + "scope-spawn-named" "snoc" "sort" "sort!" "sqlite-bind" + "sqlite-close" "sqlite-exec" "sqlite-execute" + "sqlite-finalize" "sqlite-open" "sqlite-prepare" + "sqlite-query" "sqlite-step" "stable-sort" "stable-sort!" + "string->json-object" "string->keyword" "string-contains" + "string-empty?" "string-index" "string-join" + "string-prefix?" "string-split" "string-suffix?" + "string-trim" "struct-field-ref" "struct-field-set!" + "struct-predicate" "struct-type-info" "take" "task-await" + "task-cancel" "task-done?" "task-name" "task-result" "task?" + "tcp-accept" "tcp-close" "tcp-connect" "tcp-listen" + "tcp-read" "tcp-write" "tcp-write-string" "timeout-error?" + "try" "unique" "unregister-safe-record-type!" "until" + "while" "with-input-from-string" "with-output-to-string" + "with-resource" "with-resource1" "with-task-scope" + "with-timeout" "write-file-string" "write-json" "zip" "~") + ("file" . "lib/jerboa/prelude/safe.sls") + ("tier" . "core")) + ("(jerboa prelude)" + ("exports" "*method-tables*" "*struct-types*" "->" "->>" + "->>?" "->?" "1+" "1-" ":" "<...>" "<>" "ContractViolation" + "Error" "acons" "add-watch!" "aget" "agetq" "agetv" "aif" + "alist" "alist->hash-table" "alist->plist*" "alist?" + "alists->csv" "and-then" "any" "append-map" "append1" "arem" + "arem!" "aremq" "aremq!" "aremv" "aremv!" "as->" "aset" + "aset!" "asetq" "asetq!" "asetv" "asetv!" "assert!" + "assoc-in" "assoc-in!" "atom" "atom-deref" "atom-reset!" + "atom-swap!" "atom-update!" "atom?" "awhen" "begin-ffi" + "bind-method!" "butlast" "c-declare" "c-lambda" + "call-method" "call-with-list-builder" "capture" "catch" + "chain" "chain-and" "comp" "compare-and-set!" "complement" + "compose" "compose1" "cond->" "cond->>" "conjoin" + "constantly" "cpu-count" "csv->alists" "csv-port->rows" + "curry" "curryn" "cut" "cute" "date->string" + "datetime->alist" "datetime->epoch" "datetime->iso8601" + "datetime->julian" "datetime->string" "datetime-add" + "datetime-clamp" "datetime-day" "datetime-diff" + "datetime-floor-day" "datetime-floor-hour" + "datetime-floor-month" "datetime-hour" "datetime-max" + "datetime-min" "datetime-minute" "datetime-month" + "datetime-nanosecond" "datetime-now" "datetime-offset" + "datetime-second" "datetime-subtract" "datetime-truncate" + "datetime-utc-now" "datetime-year" "datetime<=?" + "datetime<?" "datetime=?" "datetime>=?" "datetime>?" + "datetime?" "day-of-week" "day-of-year" "days-in-month" + "def" "def*" "defclass" "define-active-pattern" + "define-c-lambda" "define-enum" "define-match-type" + "define-rx" "define-sealed-hierarchy" "define-values" + "defmethod" "defn" "defrecord" "defrule" "defrules" + "defstruct" "delete-duplicates/hash" "deref" + "directory-exists?" "disjoin" "displayln" "distinct" + "dotimes" "drop" "drop-last" "drop-until" "drop-while" + "duplicates" "duration" "duration-nanoseconds" + "duration-seconds" "duration?" "epoch->datetime" "eprintf" + "eql?" "err" "err->list" "err?" "error-irritants" + "error-message" "error-trace" "every" "every-consecutive?" + "every-pred" "filter-err" "filter-map" "filter-ok" "finally" + "first-and-only" "flatten" "flatten-result" "flatten1" + "flip" "fnil" "for" "for-each!" "for/and" "for/collect" + "for/fold" "for/or" "force-output" "format" "fprintf" + "frequencies" "get-in" "group-by" "group-consecutive" + "group-n-consecutive" "group-same" "hash->list" + "hash->plist" "hash-clear!" "hash-copy" "hash-eq-literal" + "hash-find" "hash-fold" "hash-for-each" "hash-get" + "hash-has-key?" "hash-key?" "hash-keys" "hash-length" + "hash-literal" "hash-map" "hash-merge" "hash-merge!" + "hash-put!" "hash-ref" "hash-remove!" "hash-set" + "hash-table-set!" "hash-table?" "hash-update!" "hash-values" + "identity" "if-let" "in-bytes" "in-chars" "in-hash-keys" + "in-hash-pairs" "in-hash-values" "in-indexed" "in-lines" + "in-list" "in-naturals" "in-port" "in-producer" "in-range" + "in-string" "in-vector" "interleave" "interpose" "iota" + "iterate-n" "json-object->string" "julian->datetime" "juxt" + "keep" "keyword->string" "keyword?" "last-pair" "leap-year?" + "length<=?" "length<=n?" "length<?" "length<n?" "length=?" + "length=n?" "length>=?" "length>=n?" "length>?" "length>n?" + "let-alist" "let-hash" "list->hash-table" "list-of?" + "make-date" "make-datetime" "make-duration" + "make-hash-table" "make-hash-table-eq" "make-keyword" + "make-shared" "make-time" "map-err" "map-ok" "map-results" + "map/car" "mapcat" "match" "match/strict" "maybe" + "memo-proc" "meta" "meta-wrapped?" "negate" + "nested-empty-like" "nested-get" "ok" "ok->list" "ok?" + "or-else" "parse-date" "parse-datetime" "parse-time" + "partial" "partition" "partition-all" "partition-by" + "path-absolute?" "path-directory" "path-expand" + "path-extension" "path-join" "path-normalize" + "path-strip-directory" "path-strip-extension" "pget" "pgetq" + "pgetv" "plist->alist*" "plist->hash-table" "pop!" "pp" + "pp-to-string" "ppd" "ppd-to-string" "pprint" "prem" "prem!" + "premq" "premq!" "premv" "premv!" "printf" "processor-count" + "pset" "pset!" "psetq" "psetq!" "psetv" "psetv!" "push!" + "random-integer" "rassoc" "re" "re-find-all" "re-fold" + "re-groups" "re-match-end" "re-match-full" "re-match-group" + "re-match-groups" "re-match-named" "re-match-start" + "re-match?" "re-replace" "re-replace-all" "re-search" + "re-split" "re?" "read-all-as-lines" "read-all-as-string" + "read-csv" "read-csv-file" "read-file-lines" + "read-file-string" "read-json" "read-line" "reductions" + "regex-match" "regex-replace" "regex-replace-all" + "regex-search" "register-struct-type!" "remove-watch!" + "reset!" "result->option" "result->values" "result?" + "results-partition" "rows->csv-string" "rx" + "sequence-results" "shared-cas!" "shared-ref" "shared-set!" + "shared-swap!" "shared-update!" "shared?" "slice" "snoc" + "some" "some->" "some->>" "some-fn" "sort" "sort!" "split" + "split-at" "split-with" "stable-sort" "stable-sort!" "str" + "string->json-object" "string->keyword" "string-contains" + "string-empty?" "string-find" "string-find-all" + "string-index" "string-join" "string-map" "string-match?" + "string-prefix?" "string-split" "string-suffix?" + "string-trim" "strip-meta" "struct-field-ref" + "struct-field-set!" "struct-predicate" "struct-type-info" + "swap!" "take" "take-last" "take-until" "take-while" + "time->string" "try" "try-result" "try-result*" "unique" + "until" "unwind-protect" "unwrap" "unwrap-err" "unwrap-or" + "unwrap-or-else" "update-in" "update-in!" "using" + "vary-meta" "vderef" "volatile!" "volatile?" "vreset!" + "vswap!" "when-let" "when/list" "while" "with-catch" + "with-id" "with-input-from-string" "with-list-builder" + "with-lock" "with-meta" "with-output-to-string" + "with-resource" "write-csv" "write-csv-file" + "write-file-string" "write-json" "zip" "~") + ("file" . "lib/jerboa/prelude.sls") + ("tier" . "core")) + ("(jerboa reader)" + ("exports" "*max-block-comment-depth*" "*max-list-length*" + "*max-read-depth*" "*max-string-length*" + "*max-symbol-length*" "annotated-datum" + "annotated-datum-source" "annotated-datum-value" + "annotated-datum?" "jerboa-read" "jerboa-read-all" + "jerboa-read-file" "jerboa-read-string" + "make-annotated-datum" "make-source-location" + "reader-cloj-mode" "source-location" + "source-location-column" "source-location-line" + "source-location-path" "source-location?") + ("file" . "lib/jerboa/reader.sls") + ("tier" . "core")) + ("(jerboa registry)" + ("exports" "*package-dir*" "*registry-file*" "installed-packages" + "package-install!" "package-installed?" "package-uninstall!" + "package-update!" "registry-lookup" "registry-search") + ("file" . "lib/jerboa/registry.sls") + ("tier" . "core")) + ("(jerboa runtime)" + ("exports" "*method-tables*" "*struct-types*" "1+" "1-" + "bind-method!" "call-method" "cons*" "displayln" + "error-irritants" "error-message" "error-trace" "hash->list" + "hash->plist" "hash-clear!" "hash-copy" "hash-eq" "hash-eq?" + "hash-find" "hash-fold" "hash-for-each" "hash-get" + "hash-key?" "hash-keys" "hash-length" "hash-map" + "hash-merge" "hash-merge!" "hash-put!" "hash-ref" + "hash-remove!" "hash-set" "hash-table?" "hash-update!" + "hash-values" "iota" "keyword->string" "keyword-arg-ref" + "keyword?" "last-pair" "list->hash-table" "make-hash-table" + "make-hash-table-eq" "make-keyword" "make-list" + "plist->hash-table" "raise" "register-struct-type!" + "string->keyword" "struct-field-ref" "struct-field-set!" + "struct-predicate" "struct-type-info" "void" + "with-exception-handler" "~") + ("file" . "lib/jerboa/runtime.sls") + ("tier" . "core")) + ("(jerboa translator)" + ("exports" "default-transforms" "make-translator" + "translate-brackets" "translate-define-values" + "translate-defrules" "translate-defstruct" + "translate-export" "translate-file" "translate-for-loops" + "translate-gerbil-void" "translate-hash-bang" + "translate-hash-operations" "translate-imports" + "translate-keywords" "translate-let-hash" + "translate-match-patterns" "translate-method-dispatch" + "translate-package-to-library" "translate-parameterize" + "translate-spawn-forms" "translate-try-catch" + "translate-using") + ("file" . "lib/jerboa/translator.sls") + ("tier" . "core")) + ("(jerboa wasm closure)" + ("exports" "free-variables" "lambda-lift" "lambda-params") + ("file" . "lib/jerboa/wasm/closure.sls") + ("tier" . "unstable")) + ("(jerboa wasm codegen)" + ("exports" "compile-expr" "compile-program" + "context-add-func!" "context-add-local!" + "context-block-depth" "context-func-index" + "context-local-index" "context-pop-block!" + "context-push-block!" "make-compile-context" + "make-wasm-export" "make-wasm-func" "make-wasm-import" + "make-wasm-module" "make-wasm-type" "scheme->wasm-type" + "wasm-export-func" "wasm-export-global" "wasm-export-index" + "wasm-export-kind" "wasm-export-memory" "wasm-export-name" + "wasm-export-table" "wasm-func-body" "wasm-func-locals" + "wasm-func?" "wasm-import-desc" "wasm-import-module" + "wasm-import-name" "wasm-module-add-data!" + "wasm-module-add-element!" "wasm-module-add-export!" + "wasm-module-add-function!" "wasm-module-add-global!" + "wasm-module-add-import!" "wasm-module-add-memory!" + "wasm-module-add-table!" "wasm-module-add-tag!" + "wasm-module-add-type!" "wasm-module-data-segments" + "wasm-module-elements" "wasm-module-encode" + "wasm-module-exports" "wasm-module-functions" + "wasm-module-globals" "wasm-module-imports" + "wasm-module-memories" "wasm-module-set-start!" + "wasm-module-start" "wasm-module-tables" "wasm-module-tags" + "wasm-module-types" "wasm-module?" "wasm-type-params" + "wasm-type-results") + ("file" . "lib/jerboa/wasm/codegen.sls") + ("tier" . "unstable")) + ("(jerboa wasm format)" + ("exports" "bytevector-builder-append-bv!" + "bytevector-builder-append-u8!" "bytevector-builder-build" + "bytevector-builder-length" "decode-f32" "decode-f64" + "decode-i32-leb128" "decode-i64-leb128" "decode-string" + "decode-u32-leb128" "encode-f32" "encode-f64" + "encode-i32-leb128" "encode-i64-leb128" "encode-string" + "encode-u32-leb128" "make-bytevector-builder" + "wasm-catch-all-kind" "wasm-catch-all-ref-kind" + "wasm-catch-kind" "wasm-catch-ref-kind" + "wasm-composite-array" "wasm-composite-func" + "wasm-composite-struct" "wasm-fb-array-copy" + "wasm-fb-array-fill" "wasm-fb-array-get" + "wasm-fb-array-get-s" "wasm-fb-array-get-u" + "wasm-fb-array-init-data" "wasm-fb-array-init-elem" + "wasm-fb-array-len" "wasm-fb-array-new" + "wasm-fb-array-new-data" "wasm-fb-array-new-default" + "wasm-fb-array-new-elem" "wasm-fb-array-new-fixed" + "wasm-fb-array-set" "wasm-fb-br-on-cast" + "wasm-fb-br-on-cast-fail" "wasm-fb-extern-externalize" + "wasm-fb-extern-internalize" "wasm-fb-i31-get-s" + "wasm-fb-i31-get-u" "wasm-fb-ref-cast" + "wasm-fb-ref-cast-null" "wasm-fb-ref-i31" "wasm-fb-ref-test" + "wasm-fb-ref-test-null" "wasm-fb-struct-get" + "wasm-fb-struct-get-s" "wasm-fb-struct-get-u" + "wasm-fb-struct-new" "wasm-fb-struct-new-default" + "wasm-fb-struct-set" "wasm-fc-data-drop" "wasm-fc-elem-drop" + "wasm-fc-i32-trunc-sat-f32-s" "wasm-fc-i32-trunc-sat-f32-u" + "wasm-fc-i32-trunc-sat-f64-s" "wasm-fc-i32-trunc-sat-f64-u" + "wasm-fc-i64-trunc-sat-f32-s" "wasm-fc-i64-trunc-sat-f32-u" + "wasm-fc-i64-trunc-sat-f64-s" "wasm-fc-i64-trunc-sat-f64-u" + "wasm-fc-memory-copy" "wasm-fc-memory-fill" + "wasm-fc-memory-init" "wasm-fc-table-copy" + "wasm-fc-table-fill" "wasm-fc-table-grow" + "wasm-fc-table-init" "wasm-fc-table-size" "wasm-magic" + "wasm-opcode-block" "wasm-opcode-br" "wasm-opcode-br-if" + "wasm-opcode-br-table" "wasm-opcode-call" + "wasm-opcode-call-indirect" "wasm-opcode-catch" + "wasm-opcode-catch-all" "wasm-opcode-delegate" + "wasm-opcode-drop" "wasm-opcode-else" "wasm-opcode-end" + "wasm-opcode-f32-abs" "wasm-opcode-f32-add" + "wasm-opcode-f32-ceil" "wasm-opcode-f32-const" + "wasm-opcode-f32-convert-i32-s" + "wasm-opcode-f32-convert-i32-u" + "wasm-opcode-f32-convert-i64-s" + "wasm-opcode-f32-convert-i64-u" "wasm-opcode-f32-copysign" + "wasm-opcode-f32-demote-f64" "wasm-opcode-f32-div" + "wasm-opcode-f32-eq" "wasm-opcode-f32-floor" + "wasm-opcode-f32-ge" "wasm-opcode-f32-gt" + "wasm-opcode-f32-le" "wasm-opcode-f32-load" + "wasm-opcode-f32-lt" "wasm-opcode-f32-max" + "wasm-opcode-f32-min" "wasm-opcode-f32-mul" + "wasm-opcode-f32-ne" "wasm-opcode-f32-nearest" + "wasm-opcode-f32-neg" "wasm-opcode-f32-reinterpret-i32" + "wasm-opcode-f32-sqrt" "wasm-opcode-f32-store" + "wasm-opcode-f32-sub" "wasm-opcode-f32-trunc" + "wasm-opcode-f64-abs" "wasm-opcode-f64-add" + "wasm-opcode-f64-ceil" "wasm-opcode-f64-const" + "wasm-opcode-f64-convert-i32-s" + "wasm-opcode-f64-convert-i32-u" + "wasm-opcode-f64-convert-i64-s" + "wasm-opcode-f64-convert-i64-u" "wasm-opcode-f64-copysign" + "wasm-opcode-f64-div" "wasm-opcode-f64-eq" + "wasm-opcode-f64-floor" "wasm-opcode-f64-ge" + "wasm-opcode-f64-gt" "wasm-opcode-f64-le" + "wasm-opcode-f64-load" "wasm-opcode-f64-lt" + "wasm-opcode-f64-max" "wasm-opcode-f64-min" + "wasm-opcode-f64-mul" "wasm-opcode-f64-ne" + "wasm-opcode-f64-nearest" "wasm-opcode-f64-neg" + "wasm-opcode-f64-promote-f32" + "wasm-opcode-f64-reinterpret-i64" "wasm-opcode-f64-sqrt" + "wasm-opcode-f64-store" "wasm-opcode-f64-sub" + "wasm-opcode-f64-trunc" "wasm-opcode-global-get" + "wasm-opcode-global-set" "wasm-opcode-i32-add" + "wasm-opcode-i32-and" "wasm-opcode-i32-clz" + "wasm-opcode-i32-const" "wasm-opcode-i32-ctz" + "wasm-opcode-i32-div-s" "wasm-opcode-i32-div-u" + "wasm-opcode-i32-eq" "wasm-opcode-i32-eqz" + "wasm-opcode-i32-extend16-s" "wasm-opcode-i32-extend8-s" + "wasm-opcode-i32-ge-s" "wasm-opcode-i32-ge-u" + "wasm-opcode-i32-gt-s" "wasm-opcode-i32-gt-u" + "wasm-opcode-i32-le-s" "wasm-opcode-i32-le-u" + "wasm-opcode-i32-load" "wasm-opcode-i32-load16-s" + "wasm-opcode-i32-load16-u" "wasm-opcode-i32-load8-s" + "wasm-opcode-i32-load8-u" "wasm-opcode-i32-lt-s" + "wasm-opcode-i32-lt-u" "wasm-opcode-i32-mul" + "wasm-opcode-i32-ne" "wasm-opcode-i32-or" + "wasm-opcode-i32-popcnt" "wasm-opcode-i32-reinterpret-f32" + "wasm-opcode-i32-rem-s" "wasm-opcode-i32-rem-u" + "wasm-opcode-i32-rotl" "wasm-opcode-i32-rotr" + "wasm-opcode-i32-shl" "wasm-opcode-i32-shr-s" + "wasm-opcode-i32-shr-u" "wasm-opcode-i32-store" + "wasm-opcode-i32-store16" "wasm-opcode-i32-store8" + "wasm-opcode-i32-sub" "wasm-opcode-i32-trunc-f32-s" + "wasm-opcode-i32-trunc-f32-u" "wasm-opcode-i32-trunc-f64-s" + "wasm-opcode-i32-trunc-f64-u" "wasm-opcode-i32-wrap-i64" + "wasm-opcode-i32-xor" "wasm-opcode-i64-add" + "wasm-opcode-i64-and" "wasm-opcode-i64-clz" + "wasm-opcode-i64-const" "wasm-opcode-i64-ctz" + "wasm-opcode-i64-div-s" "wasm-opcode-i64-div-u" + "wasm-opcode-i64-eq" "wasm-opcode-i64-eqz" + "wasm-opcode-i64-extend-i32-s" + "wasm-opcode-i64-extend-i32-u" "wasm-opcode-i64-extend16-s" + "wasm-opcode-i64-extend32-s" "wasm-opcode-i64-extend8-s" + "wasm-opcode-i64-ge-s" "wasm-opcode-i64-ge-u" + "wasm-opcode-i64-gt-s" "wasm-opcode-i64-gt-u" + "wasm-opcode-i64-le-s" "wasm-opcode-i64-le-u" + "wasm-opcode-i64-load" "wasm-opcode-i64-load16-s" + "wasm-opcode-i64-load16-u" "wasm-opcode-i64-load32-s" + "wasm-opcode-i64-load32-u" "wasm-opcode-i64-load8-s" + "wasm-opcode-i64-load8-u" "wasm-opcode-i64-lt-s" + "wasm-opcode-i64-lt-u" "wasm-opcode-i64-mul" + "wasm-opcode-i64-ne" "wasm-opcode-i64-or" + "wasm-opcode-i64-popcnt" "wasm-opcode-i64-reinterpret-f64" + "wasm-opcode-i64-rem-s" "wasm-opcode-i64-rem-u" + "wasm-opcode-i64-rotl" "wasm-opcode-i64-rotr" + "wasm-opcode-i64-shl" "wasm-opcode-i64-shr-s" + "wasm-opcode-i64-shr-u" "wasm-opcode-i64-store" + "wasm-opcode-i64-store16" "wasm-opcode-i64-store32" + "wasm-opcode-i64-store8" "wasm-opcode-i64-sub" + "wasm-opcode-i64-trunc-f32-s" "wasm-opcode-i64-trunc-f32-u" + "wasm-opcode-i64-trunc-f64-s" "wasm-opcode-i64-trunc-f64-u" + "wasm-opcode-i64-xor" "wasm-opcode-if" + "wasm-opcode-local-get" "wasm-opcode-local-set" + "wasm-opcode-local-tee" "wasm-opcode-loop" + "wasm-opcode-memory-grow" "wasm-opcode-memory-size" + "wasm-opcode-nop" "wasm-opcode-ref-func" + "wasm-opcode-ref-is-null" "wasm-opcode-ref-null" + "wasm-opcode-rethrow" "wasm-opcode-return" + "wasm-opcode-return-call" "wasm-opcode-return-call-indirect" + "wasm-opcode-select" "wasm-opcode-select-t" + "wasm-opcode-table-get" "wasm-opcode-table-set" + "wasm-opcode-throw" "wasm-opcode-throw-ref" + "wasm-opcode-try" "wasm-opcode-try-table" + "wasm-opcode-unreachable" "wasm-prefix-fb" "wasm-prefix-fc" + "wasm-section-code" "wasm-section-custom" + "wasm-section-data" "wasm-section-data-count" + "wasm-section-element" "wasm-section-export" + "wasm-section-function" "wasm-section-global" + "wasm-section-import" "wasm-section-memory" + "wasm-section-start" "wasm-section-table" "wasm-section-tag" + "wasm-section-type" "wasm-type-anyref" "wasm-type-arrayref" + "wasm-type-eqref" "wasm-type-externref" "wasm-type-f32" + "wasm-type-f64" "wasm-type-funcref" "wasm-type-i31ref" + "wasm-type-i32" "wasm-type-i64" "wasm-type-noneref" + "wasm-type-nullexternref" "wasm-type-nullfuncref" + "wasm-type-nullref" "wasm-type-rec" "wasm-type-structref" + "wasm-type-sub" "wasm-type-sub-final" "wasm-type-void" + "wasm-version") + ("file" . "lib/jerboa/wasm/format.sls") + ("tier" . "unstable")) + ("(jerboa wasm gc)" + ("exports" + "gc-all-forms" + "gc-allocator-forms" + "gc-memory-grow-forms" + "gc-root-stack-forms") + ("file" . "lib/jerboa/wasm/gc.sls") + ("tier" . "unstable")) + ("(jerboa wasm runtime)" + ("exports" "make-wasm-array" "make-wasm-i31" + "make-wasm-runtime" "make-wasm-store" "make-wasm-struct" + "make-wasm-tag" "make-wasm-trap" "wasm-array-data" + "wasm-array-type-idx" "wasm-array?" "wasm-decode-module" + "wasm-i31-value" "wasm-i31?" "wasm-instance-exports" + "wasm-instance?" "wasm-module-sections" "wasm-run-start" + "wasm-runtime-call" "wasm-runtime-global-ref" + "wasm-runtime-global-set!" "wasm-runtime-load" + "wasm-runtime-memory" "wasm-runtime-memory-ref" + "wasm-runtime-memory-set!" "wasm-runtime-memory-size" + "wasm-runtime-set-fuel!" + "wasm-runtime-set-import-validator!" + "wasm-runtime-set-max-depth!" + "wasm-runtime-set-max-memory-pages!" + "wasm-runtime-set-max-module-size!" + "wasm-runtime-set-max-stack!" "wasm-runtime?" + "wasm-store-instantiate" "wasm-store?" "wasm-struct-fields" + "wasm-struct-type-idx" "wasm-struct?" "wasm-tag-type-idx" + "wasm-tag?" "wasm-trap-message" "wasm-trap?" + "wasm-validate-module") + ("file" . "lib/jerboa/wasm/runtime.sls") + ("tier" . "unstable")) + ("(jerboa wasm scheme-runtime)" + ("exports" "runtime-all-forms" "runtime-arithmetic-forms" + "runtime-bytevector-forms" "runtime-closure-forms" + "runtime-closure-type-forms" "runtime-comparison-forms" + "runtime-conversion-forms" "runtime-display-forms" + "runtime-equality-forms" "runtime-io-forms" + "runtime-list-forms" "runtime-result-forms" + "runtime-string-forms" "runtime-vector-forms") + ("file" . "lib/jerboa/wasm/scheme-runtime.sls") + ("tier" . "unstable")) + ("(jerboa wasm values)" + ("exports" "BYTEVECTOR-HEADER-PAYLOAD" + "CLOSURE-HEADER-PAYLOAD" "FIXNUM-MASK" "FIXNUM-MAX" + "FIXNUM-MIN" "FIXNUM-TAG" "FLONUM-PAYLOAD-SIZE" + "GLOBAL-ARENA-BASE" "GLOBAL-HEAP-END" "GLOBAL-HEAP-PTR" + "GLOBAL-ROOT-SP" "GLOBAL-SYMBOL-TABLE" + "HASHTABLE-HEADER-PAYLOAD" "HEADER-GC-BIT" + "HEADER-SIZE-MASK" "HEADER-TYPE-MASK" "HEADER-TYPE-SHIFT" + "HEAP-ALIGN" "HEAP-BASE" "IMM-EOF" "IMM-FALSE" "IMM-NIL" + "IMM-TRUE" "IMM-VOID" "MEM-HEAP-START" "MEM-IO-BASE" + "MEM-IO-SIZE" "MEM-ROOT-STACK-BASE" "MEM-ROOT-STACK-SIZE" + "MEM-STATIC-BASE" "MEM-STATIC-SIZE" "PAIR-PAYLOAD-SIZE" + "STRING-HEADER-PAYLOAD" "SYMBOL-HEADER-PAYLOAD" + "TYPE-BYTEVECTOR" "TYPE-CLOSURE" "TYPE-FLONUM" + "TYPE-HASHTABLE" "TYPE-PAIR" "TYPE-RECORD" "TYPE-STRING" + "TYPE-SYMBOL" "TYPE-VECTOR" "VECTOR-HEADER-PAYLOAD" + "make-fixnum-const" "make-imm-const" "tagged-fixnum" + "value-accessor-forms" "value-constructor-forms" + "value-global-forms" "value-memory-forms" + "value-predicate-forms" "value-tag-forms") + ("file" . "lib/jerboa/wasm/values.sls") + ("tier" . "unstable")) + ("(std actor bounded)" + ("exports" "&mailbox-full" "bounded-send" "default-mailbox-config" + "mailbox-config-capacity" "mailbox-config-strategy" + "mailbox-config?" "mailbox-full-actor-id" + "mailbox-full-condition?" "mailbox-full?" "mailbox-size" + "make-mailbox-config" "make-mailbox-full" + "spawn-bounded-actor" "spawn-bounded-actor/linked") + ("file" . "lib/std/actor/bounded.sls") + ("tier" . "stable")) + ("(std actor checkpoint)" + ("exports" "checkpoint-actor-mailbox" "checkpoint-age" + "checkpoint-manager-path" "checkpoint-manager-register!" + "checkpoint-manager-restore" "checkpoint-manager-start!" + "checkpoint-manager-stop!" "checkpoint-manager?" + "checkpoint-serializable?" "checkpoint-value" + "delete-old-checkpoints" "deserialize-value" + "list-checkpoints" "make-checkpoint-manager" + "restore-actor-mailbox" "restore-value" "serialize-value") + ("file" . "lib/std/actor/checkpoint.sls") + ("tier" . "stable")) + ("(std actor cluster)" + ("exports" "cluster-join!" "cluster-leave!" + "cluster-node-by-name" "cluster-nodes" "current-node" + "distributed-supervisor?" "dsupervisor-handle-node-failure!" + "dsupervisor-start-child!" "dsupervisor-stop-child!" + "dsupervisor-which-children" "make-distributed-supervisor" + "node-alive?" "node-id" "node-name" "node?" "on-node-join" + "on-node-leave" "remote-register!" "remote-unregister!" + "remote-whereis" "start-node!" "stop-node!"