Harden run-safe sandbox and refresh MCP docs
ober
9a60dc32e04736f55df4a901ad54417b28d4dbd9
--- a/data/api-signatures.sexp +++ b/data/api-signatures.sexp @@ -361,9 +361,10 @@ ("exports" "&jerboa" "&sandbox-error" "*default-timeout*" "*fasl-allow-procedures*" "*fasl-max-byte-size*" "*fasl-max-object-count*" "*method-tables*" "*safe-mode*" - "*sandbox-landlock*" "*sandbox-max-memory-size*" - "*sandbox-seccomp*" "*sandbox-timeout*" "*struct-types*" - "1+" "1-" "ContractViolation" "Error" "aget" "agetq" "agetv" + "*sandbox-landlock*" "*sandbox-max-children*" + "*sandbox-max-memory-size*" "*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" @@ -5809,8 +5810,9 @@ ("tier" . "stable")) ("(std security sandbox)" ("exports" "&sandbox-error" "*sandbox-capsicum*" - "*sandbox-landlock*" "*sandbox-max-memory-size*" - "*sandbox-seatbelt*" "*sandbox-seccomp*" "*sandbox-timeout*" + "*sandbox-landlock*" "*sandbox-max-children*" + "*sandbox-max-memory-size*" "*sandbox-seatbelt*" + "*sandbox-seccomp*" "*sandbox-timeout*" "make-sandbox-config" "make-sandbox-error" "run-safe" "run-safe-eval" "sandbox-config-capabilities" "sandbox-config-capsicum" "sandbox-config-landlock" @@ -6955,13 +6957,13 @@ ("file" . "lib/std/zipper.ss") ("tier" . "stable"))) ("source_root" . "/Users/user/mine/jerboa") - ("stats" ("modules" . 710) ("parse_errors" . 0) ("symbols" . 10285) + ("stats" ("modules" . 710) ("parse_errors" . 0) ("symbols" . 10286) ("tiers" ("compat" . 47) ("core" . 34) ("stable" . 551) ("unstable" . 78)) - ("total_exports" . 13500)) + ("total_exports" . 13502)) ("symbol_index" ("%chan-enqueue-raw!" "(std csp)") ("&actor-dead" "(std error conditions)") ("&actor-timeout" "(std error conditions)") @@ -7106,6 +7108,9 @@ ("*sandbox-landlock*" "(jerboa prelude safe)" "(std security sandbox)") + ("*sandbox-max-children*" + "(jerboa prelude safe)" + "(std security sandbox)") ("*sandbox-max-memory-size*" "(jerboa prelude safe)" "(std security sandbox)") --- a/data/changelog.sexp +++ b/data/changelog.sexp @@ -2,7 +2,19 @@ . "Machine-readable changelog of Jerboa API drift. Consumers (LLM tooling, lints, jerboa_verify) use this to invalidate stale recommendations and to suggest migrations when a symbol is renamed or relocated.") ("entries" - (("added") + (("added" ("*sandbox-max-children*")) + ("date" . "2026-06-25") + ("modules_added") + ("moved") + ("notes" + . + "(std security sandbox) now enforces a parent-side limit for concurrent run-safe children. The default *sandbox-max-children* value is 64; run-safe reserves a slot before fork, tracks the child PID, and releases it after waitpid. The result pipe read/write/wait FFI calls are declared __collect_safe, and capsicum #t now resolves to the compute-only fd-rights preset instead of bare cap_enter. (jerboa prelude safe) now imports core/runtime with the same split as the main prelude so MCP export introspection is clean. MCP security scanning now applies context-aware suppressions for trusted Chez imports, guarded load-shared-object calls, fork sites with active child tracking, and declaration-only symbol mentions. data/api-signatures.sexp and LSP completions were regenerated from source; the obsolete mcp/plan.md port plan was removed and API docs now point at the in-repo data catalog.") + ("removed") + ("renamed") + ("tier_changes") + ("tools_added") + ("version" . "v0.2.3")) + (("added") ("date" . "2026-06-25") ("modules_added") ("moved") --- a/data/security-rules.sexp +++ b/data/security-rules.sexp @@ -276,7 +276,7 @@ ("message" . "Closing a SQLite database without first finalizing all prepared statements can cause memory leaks or undefined behavior. The raw sqlite3_close returns SQLITE_BUSY if statements are still active.") - ("pattern" . "sqlite-close(?!.*sqlite-finalize)") + ("pattern" . "\\(sqlite-close(?!.*sqlite-finalize)") ("remediation" . "Always finalize all prepared statements before closing the database. Use dynamic-wind or guard to ensure cleanup: (dynamic-wind void (lambda () (use stmt)) (lambda () (sqlite-finalize stmt))). The Rust sqlite module auto-finalizes on close as a safety net, but explicit finalization is preferred.") @@ -403,7 +403,7 @@ "\\(c-fork\\)|\\(fork\\s|foreign-procedure.*\"fork\"") ("remediation" . - "Use make-privsep from (std security privsep) which enforces *max-privsep-children* (default 64) and tracks PIDs for proper reaping via waitpid.") + "Use make-privsep from (std security privsep), which enforces *max-privsep-children* (default 64), or follow the (std security sandbox) run-safe pattern: reserve against *sandbox-max-children* before fork, track the child PID, and release it after waitpid.") ("scope" . "scheme") ("severity" . "medium") ("title" . "Fork without child process limit")) (("id" . "realpath-missing-canonicalize") @@ -743,7 +743,7 @@ ("message" . "run-safe-eval uses fork() internally. Calling fork() from within a fiber (e.g., an HTTP handler, transducer lambda, or channel callback) silently corrupts the fiber runtime scheduler — workers stop processing events with no error message. This is safe ONLY from top-level OS threads (e.g., actors spawned with spawn-actor, or fork-thread workers).") - ("pattern" . "run-safe-eval") + ("pattern" . "\\(run-safe-eval\\s") ("related_recipe" . "restricted-eval-fiber-safe-timeout") ("remediation" . --- a/docs/api-index.md +++ b/docs/api-index.md @@ -1,13343 +1,45 @@ -# Jerboa API Index +# Jerboa API Catalog -_Auto-generated from `jerboa-mcp/api-signatures.json` (2026-04-22). 626 modules, 12393 unique symbols, 18925 total exports._ +Current API metadata is generated from this repository into +`data/api-signatures.sexp`. That file is the machine-readable source used by +`jmcp`, `jlsp`, completion tables, and API lookup tools. -> **Authoritative.** If a symbol does not appear in the index below, it is not exported by any Jerboa library and any reference is a hallucination. This index is parsed directly from `.sls` source files on every regeneration. +Snapshot generated on 2026-06-25: -## Contents +| Metric | Count | +|---|---:| +| Modules | 710 | +| Unique symbols | 10,286 | +| Total exports | 13,502 | +| Parse errors | 0 | -- [1. Prelude exports](#1-prelude-exports) -- [2. Where is X? (symbol → modules)](#2-where-is-x-symbol--modules) -- [3. Module catalog](#3-module-catalog) +## Source Of Truth -## 1. Prelude exports +- `data/api-signatures.sexp` — MCP and LSP API catalog +- `lsp/analysis/completion-tables.ss` — generated completion tables +- `data/changelog.sexp` — API drift history and migration notes -Importing `(jerboa prelude)` gives you 438 bindings. Everything listed here is available with no further import. +Regenerate after public API changes: -<details><summary>Full list</summary> - -``` -*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 ~ +```bash +make api-signatures +make lsp-gen ``` -</details> - -## 2. Where is X? (symbol → modules) - -Every exported symbol, mapped to the modules that export it. If a symbol has multiple providers, any of them will give you that binding. - -| [1](#idx-1) | [a](#idx-a) | [b](#idx-b) | [c](#idx-c) | [d](#idx-d) | [e](#idx-e) | [f](#idx-f) | [g](#idx-g) | [h](#idx-h) | [i](#idx-i) | [j](#idx-j) | [k](#idx-k) | [l](#idx-l) | [m](#idx-m) | [n](#idx-n) | [o](#idx-o) | [p](#idx-p) | [q](#idx-q) | [r](#idx-r) | [s](#idx-s) | [sym](#idx-sym) | [t](#idx-t) | [u](#idx-u) | [v](#idx-v) | [w](#idx-w) | [x](#idx-x) | [y](#idx-y) | [z](#idx-z) | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | - -### <a name="idx-1"></a>1 - -| Symbol | Modules | -| --- | --- | -| `1+` | `(jerboa clojure)`, `(jerboa core)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+3) | -| `1-` | `(jerboa clojure)`, `(jerboa core)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+3) | - -### <a name="idx-a"></a>a - -| Symbol | Modules | -| --- | --- | -| `AF_SP` | `(std ffi nanomsg)`, `(thunderchez nanomsg)` | -| `AF_SP_RAW` | `(std ffi nanomsg)`, `(thunderchez nanomsg)` | -| `ALL` | `(std specter)` | -| `Applicative` | `(std typed hkt)` | -| `Async` | `(std async)` | -| `Async::descriptor` | `(std async)` | -| `abi-name` | `(jerboa cross)` | -| `abort` | `(std control delimited)` | -| `abort-to-prompt` | `(std misc delimited)` | -| `absento` | `(jerboa clojure)`, `(std logic)` | -| `acons` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `acquire` | `(std effect resource)` | -| `acquire-port` | `(std effect resource)` | -| `activate-cloj-reader!` | `(jerboa cloj)`, `(jerboa clojure)` | -| `active-pattern-proc` | `(std match2)` | -| `active-pattern?` | `(std match2)` | -| `actor-alive?` | `(std actor core)`, `(std actor)` | -| `actor-dead?` | `(std error conditions)` | -| `actor-error-actor-id` | `(std error conditions)` | -| `actor-error?` | `(std error conditions)` | -| `actor-id` | `(std actor core)`, `(std actor)` | -| `actor-kill!` | `(std actor core)`, `(std actor)` | -| `actor-ref-id` | `(std actor core)`, `(std actor)` | -| `actor-ref-links` | `(std actor core)`, `(std actor)` | -| `actor-ref-links-set!` | `(std actor core)`, `(std actor)` | -| `actor-ref-mailbox` | `(std actor core)` | -| `actor-ref-monitors` | `(std actor core)`, `(std actor)` | -| `actor-ref-monitors-set!` | `(std actor core)`, `(std actor)` | -| `actor-ref-name` | `(std actor core)`, `(std actor)` | -| `actor-ref-node` | `(std actor core)`, `(std actor)` | -| `actor-ref?` | `(std actor core)`, `(std actor)` | -| `actor-timeout-seconds` | `(std error conditions)` | -| `actor-timeout?` | `(std error conditions)` | -| `actor-wait!` | `(std actor core)`, `(std actor)` | -| `add-command!` | `(std cli multicall)` | -| `add-duration` | `(std srfi srfi-19)` | -| `add-method!` | `(std clos)` | -| `add-rule!` | `(std lint)` | -| `add-signal-handler!` | `(std os signal)` | -| `add-sink!` | `(std log)` | -| `add-watch!` | `(jerboa clojure)`, `(jerboa prelude)`, `(std clojure)`, `(std misc atom)` | -| `address->string` | `(std net address)` | -| `address-host` | `(std net address)` | -| `address-port` | `(std net address)` | -| `address?` | `(std net address)` | -| `admix` | `(std csp clj)` | -| `admix!` | `(std csp mix)`, `(std csp ops)` | -| `advise-after` | `(std misc advice)` | -| `advise-around` | `(std misc advice)` | -| `advise-before` | `(std misc advice)` | -| `advise-error` | `(std error-advice)` | -| `advised?` | `(std misc advice)` | -| `aead-decrypt` | `(std crypto aead)` | -| `aead-encrypt` | `(std crypto aead)` | -| `aead-key-generate` | `(std crypto aead)` | -| `affine-consumed?` | `(std typed affine)` | -| `affine-drop!` | `(std typed affine)` | -| `affine-peek` | `(std typed affine)` | -| `affine-use` | `(std typed affine)` | -| `affine?` | `(std typed affine)` | -| `after` | `(std select)` | -| `agent` | `(std agent)` | -| `agent-error` | `(std agent)` | -| `agent-value` | `(std agent)` | -| `agent?` | `(std agent)` | -| `aget` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `agetq` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `agetv` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `agg-collect` | `(std table)` | -| `agg-count` | `(std table)` | -| `agg-max` | `(std table)` | -| `agg-mean` | `(std table)` | -| `agg-min` | `(std table)` | -| `agg-sum` | `(std table)` | -| `aif` | `(jerboa clojure)`, `(jerboa prelude)`, `(std gambit-compat)`, `(std prelude)`, ... (+1) | -| `alias` | `(std srfi srfi-212)` | -| `alist` | `(jerboa clojure)`, `(jerboa prelude)`, `(std prelude)`, `(std sugar)` | -| `alist->btree` | `(std mmap-btree)` | -| `alist->hamt` | `(std misc persistent)` | -| `alist->hash` | `(std misc alist-more)` | -| `alist->hash-table` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+3) | -| `alist->headers` | `(std net request)` | -| `alist->mapping` | `(std srfi srfi-146)` | -| `alist->plist` | `(std misc plist)` | -| `alist->plist*` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `alist->pmap` | `(std data pmap)` | -| `alist->protobuf` | `(std protobuf)` | -| `alist->query-string` | `(std net uri)` | -| `alist->record` | `(std debug record-inspect)` | -| `alist->sorted-map` | `(std ds sorted-map)` | -| `alist-copy` | `(std srfi srfi-1)` | -| `alist-delete` | `(std srfi srfi-1)` | -| `alist-delete!` | `(std srfi srfi-1)` | -| `alist-filter` | `(std misc alist-more)` | -| `alist-keys` | `(std misc alist-more)` | -| `alist-list->relation` | `(std misc relation)` | -| `alist-map` | `(std misc alist-more)` | -| `alist-merge` | `(std misc alist-more)` | -| `alist-ref/default` | `(std misc alist-more)` | -| `alist-update` | `(std misc alist-more)` | -| `alist-values` | `(std misc alist-more)` | -| `alist?` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `alists->csv` | `(jerboa clojure)`, `(jerboa prelude)`, `(std csv)`, `(std prelude)` | -| `all-sealed-methods` | `(std dev devirt)` | -| `all-solutions` | `(std effect multishot)` | -| `alloc-profile-start!` | `(std dev profile)` | -| `alloc-profile-stop!` | `(std dev profile)` | -| `alloc-results` | `(std dev profile)` | -| `allocate-instance` | `(std clos)` | -| `allocation-count` | `(std profile)` | -| `alt!` | `(std csp clj)`, `(std csp select)` | -| `alt!!` | `(std csp clj)`, `(std csp select)` | -| `alter` | `(std stm)` | -| `alts!` | `(std csp clj)`, `(std csp select)` | -| `alts!!` | `(std csp clj)`, `(std csp select)` | -| `always-event` | `(std misc event)` | -| `always-evt` | `(std event)` | -| `amb` | `(std amb)`, `(std effect multishot)`, `(std misc amb)` | -| `amb-all` | `(std effect multishot)` | -| `amb-assert` | `(std amb)`, `(std misc amb)` | -| `amb-collect` | `(std amb)`, `(std misc amb)` | -| `amb-fail` | `(std amb)`, `(std misc amb)` | -| `amb-find` | `(std amb)` | -| `analyze-document` | `(std lsp)` | -| `and-then` | `(jerboa clojure)`, `(jerboa prelude)`, `(std prelude)`, `(std result)` | -| `annotate-code` | `(std quasiquote-types)` | -| `annotated-datum` | `(jerboa reader)` | -| `annotated-datum-source` | `(jerboa reader)` | -| `annotated-datum-value` | `(jerboa reader)` | -| `annotated-datum?` | `(jerboa reader)` | -| `antidebug-breakpoint?` | `(std os antidebug)` | -| `antidebug-check-all` | `(std os antidebug)` | -| `antidebug-error-reason` | `(std os antidebug)` | -| `antidebug-error?` | `(std os antidebug)` | -| `antidebug-ld-preload?` | `(std os antidebug)` | -| `antidebug-ptrace!` | `(std os antidebug)` | -| `antidebug-timing-anomaly?` | `(std os antidebug)` | -| `antidebug-traced?` | `(std os antidebug)` | -| `any` | `(jerboa clojure)`, `(jerboa core)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, ... (+5) | -| `any-bit-set?` | `(std srfi srfi-151)` | -| `any?-ec` | `(std srfi srfi-42)` | -| `api-key-register!` | `(std security auth)` | -| `api-key-revoke!` | `(std security auth)` | -| `api-key-store?` | `(std security auth)` | -| `api-key-validate` | `(std security auth)` | -| `app-arguments` | `(std app)` | -| `app-init-proc` | `(std app)` | -| `app-main-proc` | `(std app)` | -| `app-name` | `(std app)` | -| `app-run!` | `(std app)` | -| `app?` | `(std app)` | -| `append-map` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc list)`, `(std srfi srfi-1)` | -| `append-map!` | `(std srfi srfi-1)` | -| `append-reverse` | `(std srfi srfi-1)` | -| `append-reverse!` | `(std srfi srfi-1)` | -| `append1` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc list)` | -| `appendo` | `(jerboa clojure)`, `(std logic)` | -| `apply-dynamic-bindings` | `(jerboa clojure)`, `(std clojure)` | -| `apply-generic` | `(std clos)` | -| `apply-input-transformers` | `(std repl middleware)` | -| `apply-method` | `(std clos)` | -| `apply-methods` | `(std clos)` | -| `apply-optimization-passes` | `(std compiler passes)` | -| `apply-security-headers` | `(std net security-headers)` | -| `apply-xf` | `(std transducer)` | -| `arbitrary-boolean` | `(std test framework)` | -| `arbitrary-integer` | `(std test framework)` | -| `arbitrary-list` | `(std test framework)` | -| `arbitrary-string` | `(std test framework)` | -| `arem` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `arem!` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `aremq` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `aremq!` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `aremv` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `aremv!` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `arena-alloc` | `(std arena)` | -| `arena-alloc-bytes` | `(std arena)` | -| `arena-alloc-string` | `(std arena)` | -| `arena-capacity` | `(std arena)` | -| `arena-checkpoint` | `(std arena)` | -| `arena-destroy!` | `(std arena)` | -| `arena-intern!` | `(std arena)` | -| `arena-intern-lookup` | `(std arena)` | -| `arena-remaining` | `(std arena)` | -| `arena-reset!` | `(std arena)` | -| `arena-rollback!` | `(std arena)` | -| `arena-stats` | `(std arena)` | -| `arena-used` | `(std arena)` | -| `arena?` | `(std arena)` | -| `argon2id-available?` | `(std crypto password)` | -| `argument` | `(std cli getopt)` | -| `arithmetic-seq` | `(std compiler partial-eval)` | -| `arithmetic-shift` | `(jerboa core)`, `(std gambit-compat)`, `(std srfi srfi-151)` | -| `arity-error` | `(std errors)` | -| `arity-error-definition` | `(std errors)` | -| `arity-error-expected` | `(std errors)` | -| `arity-error-got` | `(std errors)` | -| `arity-error-who` | `(std errors)` | -| `arity-error?` | `(std errors)` | -| `artifact-store-get` | `(std build reproducible)` | -| `artifact-store-has?` | `(std build reproducible)` | -| `artifact-store-path` | `(std build reproducible)` | -| `artifact-store-put!` | `(std build reproducible)` | -| `artifact-store?` | `(std build reproducible)` | -| `as->` | `(jerboa clojure)`, `(jerboa prelude)`, `(std prelude)`, `(std sugar)` | -| `aset` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `aset!` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `asetq` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `asetq!` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `asetv` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc alist)` | -| `asetv!` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+2) | -| `ask` | `(std actor protocol)`, `(std actor)` | -| `ask-sync` | `(std actor protocol)`, `(std actor)` | -| `assert!` | `(jerboa clojure)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, `(jerboa prelude)`, ... (+5) | -| `assert-contract` | `(std contract)` | -| `assert-equal!` | `(std assert)` | -| `assert-exception` | `(std assert)` | -| `assert-flow` | `(std security flow)` | -| `assert-pred` | `(std assert)` | -| `assert-refined` | `(std typed advanced)`, `(std typed refine)` | -| `assert-type` | `(std macro-types)`, `(std typed)` | -| `assert-untainted` | `(std security taint)` | -| `assoc` | `(jerboa clojure)`, `(std clojure)` | -| `assoc!` | `(jerboa clojure)`, `(std clojure)` | -| `assoc-in` | `(jerboa clojure)`, `(jerboa prelude)`, `(std clojure)`, `(std misc nested)` | -| `assoc-in!` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc nested)` | -| `assume` | `(std srfi srfi-145)` | -| `ast->nfa` | `(std regex-ct-impl)` | -| `async` | `(std concur async-await)` | -| `async-channel-get` | `(std async)` | -| `async-channel-put` | `(std async)` | -| `async-promise-resolve!` | `(std async)` | -| `async-promise-resolved?` | `(std async)` | -| `async-promise-value` | `(std async)` | -| `async-promise?` | `(std async)` | -| `async-reduce` | `(std csp clj)` | -| `async-sleep` | `(std async)` | -| `async-stream->list` | `(std stream async)` | -| `async-stream-empty?` | `(std stream async)` | -| `async-stream-filter` | `(std stream async)` | -| `async-stream-fold` | `(std stream async)` | -| `async-stream-for-each` | `(std stream async)` | -| `async-stream-map` | `(std stream async)` | -| `async-stream-next!` | `(std stream async)` | -| `async-stream-take` | `(std stream async)` | -| `async-task` | `(std async)` | -| `async-task?` | `(std async)` | -| `at-compile-time` | `(std staging)` | -| `atom` | `(jerboa clojure)`, `(jerboa prelude)`, `(std clojure)`, `(std misc atom)` | -| `atom-deref` | `(jerboa prelude)`, `(std misc atom)` | -| `atom-reset!` | `(jerboa prelude)`, `(std misc atom)` | -| `atom-swap!` | `(jerboa prelude)`, `(std misc atom)` | -| `atom-update!` | `(jerboa prelude)`, `(std misc atom)` | -| `atom?` | `(jerboa clojure)`, `(jerboa prelude)`, `(std clojure)`, `(std misc atom)` | -| `atomically` | `(std concur stm)`, `(std stm)` | -| `attenuate-capability` | `(std security capability)` | -| `attenuate-eval` | `(std capability)` | -| `attenuate-fs` | `(std capability)` | -| `attenuate-net` | `(std capability)` | -| `audit-event-types` | `(std security audit)` | -| `audit-imports-directory` | `(std security import-audit)` | -| `audit-imports-file` | `(std security import-audit)` | -| `audit-log!` | `(std security audit)` | -| `audit-logger-close!` | `(std security audit)` | -| `audit-logger?` | `(std security audit)` | -| `auth-result-authenticated?` | `(std security auth)` | -| `auth-result-identity` | `(std security auth)` | -| `auth-result-roles` | `(std security auth)` | -| `auth-result?` | `(std security auth)` | -| `authenticated-message-hmac` | `(std actor cluster-security)` | -| `authenticated-message-payload` | `(std actor cluster-security)` | -| `authenticated-message-sender` | `(std actor cluster-security)` | -| `authenticated-message-sequence` | `(std actor cluster-security)` | -| `authenticated-message-timestamp` | `(std actor cluster-security)` | -| `authenticated-message?` | `(std actor cluster-security)` | -| `auto-clone` | `(std derive2)` | -| `auto-compare` | `(std derive2)` | -| `auto-display` | `(std derive2)` | -| `auto-equal` | `(std derive2)` | -| `auto-hash` | `(std derive2)` | -| `auto-json` | `(std derive2)` | -| `auto-serialize` | `(std derive2)` | -| `auto-specialization-enabled?` | `(std compiler partial-eval)` | -| `await` | `(std agent)`, `(std concur async-await)` | -| `await-all` | `(std concur async-await)` | -| `await-any` | `(std concur async-await)` | -| `awhen` | `(jerboa clojure)`, `(jerboa prelude)`, `(std gambit-compat)`, `(std prelude)`, ... (+1) | -| `aws-sigv4-sign` | `(std net s3)` | - -### <a name="idx-b"></a>b - -| Symbol | Modules | -| --- | --- | -| `BYTEVECTOR-HEADER-PAYLOAD` | `(jerboa wasm values)` | -| `Bounded` | `(std typed refine)` | -| `bag` | `(std srfi srfi-113)` | -| `bag->list` | `(std srfi srfi-113)` | -| `bag-adjoin` | `(std srfi srfi-113)` | -| `bag-count` | `(std srfi srfi-113)` | -| `bag-delete` | `(std srfi srfi-113)` | -| `bag?` | `(std srfi srfi-113)` | -| `balanced-quotient` | `(std srfi srfi-141)` | -| `balanced-remainder` | `(std srfi srfi-141)` | -| `balanced/` | `(std srfi srfi-141)` | -| `barrier-parties` | `(std misc barrier)` | -| `barrier-reset!` | `(std concur util)`, `(std misc barrier)` | -| `barrier-wait!` | `(std concur util)`, `(std misc barrier)` | -| `barrier-waiting` | `(std misc barrier)` | -| `barrier?` | `(std concur util)`, `(std misc barrier)` | -| `base58-decode` | `(std text base58)` | -| `base58-encode` | `(std text base58)` | -| `base58check-decode` | `(std text base58)` | -| `base58check-encode` | `(std text base58)` | -| `base64-decode` | `(std text base64)` | -| `base64-encode` | `(std text base64)` | -| `base64-string->u8vector` | `(std text base64)` | -| `batch-call` | `(std net json-rpc)` | -| `begin-ffi` | `(jerboa clojure)`, `(jerboa ffi)`, `(jerboa prelude clean)`, `(jerboa prelude)`, ... (+1) | -| `benchmark->alist` | `(std dev benchmark)` | -| `benchmark-compare` | `(std dev benchmark)` | -| `benchmark-faster?` | `(std dev benchmark)` | -| `benchmark-name` | `(std dev benchmark)` | -| `benchmark-report` | `(std dev benchmark)` | -| `benchmark-result-max-ns` | `(std dev benchmark)` | -| `benchmark-result-mean-ns` | `(std dev benchmark)` | -| `benchmark-result-median-ns` | `(std dev benchmark)` | -| `benchmark-result-min-ns` | `(std dev benchmark)` | -| `benchmark-result-name` | `(std dev benchmark)` | -| `benchmark-result-samples` | `(std dev benchmark)` | -| `benchmark-result-stddev-ns` | `(std dev benchmark)` | -| `benchmark-result?` | `(std dev benchmark)` | -| `benchmark-run` | `(std dev benchmark)` | -| `benchmark-setup` | `(std dev benchmark)` | -| `benchmark-teardown` | `(std dev benchmark)` | -| `benchmark?` | `(std dev benchmark)` | -| `bg-color` | `(std misc terminal)` | -| `binary-pack` | `(std binary)` | -| `binary-read` | `(std binary)`, `(std misc binary-type)` | -| `binary-struct-fields` | `(std binary)` | -| `binary-struct-name` | `(std binary)` | -| `binary-struct-size` | `(std binary)` | -| `binary-struct?` | `(std binary)` | -| `binary-unpack` | `(std binary)` | -| `binary-write` | `(std misc binary-type)` | -| `binary-write!` | `(std binary)` | -| `bind-method!` | `(jerboa clojure)`, `(jerboa core)`, `(jerboa prelude clean)`, `(jerboa prelude safe)`, ... (+4) | -| `binding` | `(jerboa clojure)`, `(std clojure)` | -| `bio-close` | `(std net bio)` | -| `bio-flush` | `(std net bio)` | -| `bio-peek-byte` | `(std net bio)` | -| `bio-read-byte` | `(std net bio)` | -| `bio-read-bytes` | `(std net bio)` | -| `bio-read-line` | `(std net bio)` | -| `bio-unread-byte` | `(std net bio)` | -| `bio-write-byte` | `(std net bio)` | -| `bio-write-bytes` | `(std net bio)` | -| `bio-write-string` | `(std net bio)` | -| `bit-count` | `(std srfi srfi-151)` | -| `bit-field` | `(std srfi srfi-151)` | -| `bit-field-any?` | `(std srfi srfi-151)` | -| `bit-field-clear` | `(std srfi srfi-151)` | -| `bit-field-every?` | `(std srfi srfi-151)` | -| `bit-field-replace` | `(std srfi srfi-151)` | -| `bit-field-rotate` | `(std srfi srfi-151)` | -| `bit-field-set` | `(std srfi srfi-151)` | -| `bit-set?` | `(std srfi srfi-151)` | -| `bit-swap` | `(std srfi srfi-151)` | -| `bitwise-and` | `(std srfi srfi-151)` | -| `bitwise-if` | `(std srfi srfi-151)` | -| `bitwise-ior` | `(std srfi srfi-151)` | -| `bitwise-not` | `(std srfi srfi-151)` | -| `bitwise-xor` | `(std srfi srfi-151)` | -| `black` | `(std cli style)` | -| `blank?` | `(std clojure string)` | -| `blink` | `(std misc terminal)` | -| `blue` | `(std cli style)` | -| `bn*` | `(std crypto bn)` | -| `bn+` | `(std crypto bn)` | -| `bn-` | `(std crypto bn)` | -| `bn->bytevector` | `(std crypto bn)` | -| `bn->hex` | `(std crypto bn)` | -| `bn-bit-length` | `(std crypto bn)` | -| `bn-compare` | `(std crypto bn)` | -| `bn-expt-mod` | `(std crypto bn)` | -| `bn-gcd` | `(std crypto bn)` | -| `bn-mod` | `(std crypto bn)` | -| `bn-modinv` | `(std crypto bn)` | -| `bn-negative?` | `(std crypto bn)` | -| `bn-zero?` | `(std crypto bn)` | -| `bn/` | `(std crypto bn)` | -| `bold` | `(std cli style)`, `(std misc terminal)` | -| `boolean-comparator` | `(std srfi srfi-128)` | -| `borrow` | `(std borrow)` | -| `borrow-count` | `(std borrow)` | -| `borrow-mut` | `(std borrow)` | -| `bound-fn` | `(jerboa clojure)`, `(std clojure)` | -| `bounded-deque-capacity` | `(std misc deque)` | -| `bounded-deque?` | `(std misc deque)` | -| `bounded-send` | `(std actor bounded)` | -| `box` | `(std gambit-compat)` | -| `box?` | `(std gambit-compat)` | -| `break-never!` | `(std dev debug)` | -| `break-when!` | `(std dev debug)` | -| `btree->alist` | `(std mmap-btree)` | -| `btree-commit!` | `(std mmap-btree)` | -| `btree-delete!` | `(std mmap-btree)` | -| `btree-fold` | `(std mmap-btree)` | -| `btree-get` | `(std mmap-btree)` | -| `btree-has?` | `(std mmap-btree)` | -| `btree-keys` | `(std mmap-btree)` | -| `btree-order` | `(std mmap-btree)` | -| `btree-path` | `(std mmap-btree)` | -| `btree-put!` | `(std mmap-btree)` | -| `btree-range` | `(std mmap-btree)` | -| `btree-rollback!` | `(std mmap-btree)` | -| `btree-size` | `(std mmap-btree)` | -| `btree-values` | `(std mmap-btree)` | -| `btree?` | `(std mmap-btree)` | -| `buffer-pool-stats` | `(std net zero-copy)` | -| `buffer-pool?` | `(std net zero-copy)` | -| `buffer-slice?` | `(std net zero-copy)` | -| `buffer-spec?` | `(std csp clj)` | -| `buffered-close` | `(std io bio)` | -| `buffered-flush` | `(std io bio)` | -| `buffered-input?` | `(std io bio)` | -| `buffered-output?` | `(std io bio)` | -| `buffered-peek-byte` | `(std io bio)` | -| `buffered-peek-char` | `(std io bio)` | -| `buffered-read-byte` | `(std io bio)` | -| `buffered-read-bytes` | `(std io bio)` | -| `buffered-read-char` | `(std io bio)` | -| `buffered-read-line` | `(std io bio)` | -| `buffered-unread-byte` | `(std io bio)` | -| `buffered-write-byte` | `(std io bio)` | -| `buffered-write-bytes` | `(std io bio)` | -| `buffered-write-line` | `(std io bio)` | -| `buffered-write-string` | `(std io bio)` | -| `build-app` | `(std match-syntax)` | -| `build-begin` | `(std match-syntax)` | -| `build-binary` | `(jerboa build)` | -| `build-boot-file` | `(jerboa build)` | -| `build-cache-load` | `(std build)` | -| `build-cache-lookup` | `(std build reproducible)` | -| `build-cache-save` | `(std build)` | -| `build-cache-stats` | `(std build reproducible)` | -| `build-cache-store!` | `(std build reproducible)` | -| `build-cache?` | `(std build reproducible)` | -| `build-dag` | `(std build)` | -| `build-dep-graph-from-dir` | `(std build watch)` | -| `build-if` | `(std match-syntax)` | -| `build-instance-dict` | `(std misc typeclass)` | -| `build-lambda` | `(std match-syntax)` | -| `build-let` | `(std match-syntax)` | -| `build-matrix-results` | `(std build cross)` | -| `build-musl-binary` | `(jerboa build musl)` | -| `build-nfa` | `(std text regex-compile)` | -| `build-project` | `(jerboa build)`, `(std build)` | -| `build-query-string` | `(std net request)` | -| `build-record-deps-hash` | `(std build reproducible)` | -| `build-record-hash` | `(std build reproducible)` | -| `build-record-source-hash` | `(std build reproducible)` | -| `build-record-timestamp` | `(std build reproducible)` | -| `build-record?` | `(std build reproducible)` | -| `build-release` | `(jerboa build)` | -| `build-static-binary` | `(jerboa build)` | -| `build-system-add-rule!` | `(std build watch)` | -| `build-system-build!` | `(std build watch)` | -| `build-system-build-all!` | `(std build watch)` | -| `build-system-clean!` | `(std build watch)` | -| `build-system?` | `(std build watch)` | -| `butlast` | `(jerboa clojure)`, `(jerboa prelude)`, `(std misc list-more)`, `(std misc list)` | -| `bv-f32-ref` | `(std binary)` | -| `bv-f32-set!` | `(std binary)` | -| `bv-f64-ref` | `(std binary)` | -| `bv-f64-set!` | `(std binary)` | -| `bv-s16-ref` | `(std binary)` | -| `bv-s16-set!` | `(std binary)` | -| `bv-s32-ref` | `(std binary)` | -| `bv-s32-set!` | `(std binary)` | -| `bv-s64-ref` | `(std binary)` | -| `bv-s64-set!` | `(std binary)` | -| `bv-s8-ref` | `(std binary)` | -| `bv-s8-set!` | `(std binary)` | -| `bv-u16-ref` | `(std binary)` | -| `bv-u16-set!` | `(std binary)` | -| `bv-u32-ref` | `(std binary)` | -| `bv-u32-set!` | `(std binary)` | -| `bv-u64-ref` | `(std binary)` | -| `bv-u64-set!` | `(std binary)` | -| `bv-u8-ref` | `(std binary)` | -| `bv-u8-set!` | `(std binary)` | -| `bwp-object?` | `(std ephemeron)` | -| `bytes->message` | `(std actor transport)` | -| `bytes->string` | `(jerboa core)`, `(std gambit-compat)` | -| `bytevector->bn` | `(std crypto bn)` | -| `bytevector->fasl` | `(std fasl)` | -| `bytevector->generator` | `(std srfi srfi-158)` | -| `bytevector->integer` | `(std misc numeric)` | -| `bytevector-builder-append-bv!` | `(jerboa wasm format)` | -| `bytevector-builder-append-u8!` | `(jerboa wasm format)` | -| `bytevector-builder-build` | `(jerboa wasm format)` | -| `bytevector-builder-length` | `(jerboa wasm format)` | -| `bytevector-concat` | `(std io raw)` | -| `bytevector-copy*` | `(thunderchez thunder-utils)` | - -### <a name="idx-c"></a>c - -| Symbol | Modules | -| --- | --- | -| `CLOSURE-HEADER-PAYLOAD` | `(jerboa wasm values)` | -| `CONNECTION_BAD` | `(std db postgresql)` | -| `CONNECTION_OK` | `(std db postgresql)` | -| `CURLFTP_CREATE_DIR` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLFTP_CREATE_DIR_NONE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLFTP_CREATE_DIR_RETRY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_ACCEPTTIMEOUT_MS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_ACCEPT_ENCODING` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_ADDRESS_SCOPE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_APPEND` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_AUTOREFERER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_BUFFERSIZE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CAINFO` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CAPATH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CERTINFO` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CHUNK_BGN_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CHUNK_DATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CHUNK_END_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CLOSESOCKETDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CLOSESOCKETFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONNECTTIMEOUT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONNECTTIMEOUT_MS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONNECT_ONLY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONNECT_TO` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONV_FROM_NETWORK_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONV_FROM_UTF8_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CONV_TO_NETWORK_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COOKIE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COOKIEFILE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COOKIEJAR` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COOKIELIST` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COOKIESESSION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_COPYPOSTFIELDS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CRLF` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CRLFILE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_CUSTOMREQUEST` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DEBUGDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DEBUGFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DEFAULT_PROTOCOL` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DIRLISTONLY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_CACHE_TIMEOUT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_INTERFACE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_LOCAL_IP4` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_LOCAL_IP6` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_SERVERS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_DNS_USE_GLOBAL_CACHE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_EGDSOCKET` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_ERRORBUFFER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_EXPECT_100_TIMEOUT_MS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FAILONERROR` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FILETIME` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FNMATCH_DATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FNMATCH_FUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FOLLOWLOCATION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FORBID_REUSE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FRESH_CONNECT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTPPORT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTPSSLAUTH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_ACCOUNT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_ALTERNATIVE_TO_USER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_CREATE_MISSING_DIRS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_FILEMETHOD` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_RESPONSE_TIMEOUT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_SKIP_PASV_IP` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_SSL_CCC` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_USE_EPRT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_USE_EPSV` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_FTP_USE_PRET` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_GSSAPI_DELEGATION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HEADER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HEADERDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HEADERFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HEADEROPT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTP200ALIASES` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTPAUTH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTPGET` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTPHEADER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTPPOST` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTPPROXYTUNNEL` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTP_CONTENT_DECODING` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTP_TRANSFER_DECODING` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_HTTP_VERSION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_IGNORE_CONTENT_LENGTH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_INFILESIZE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_INFILESIZE_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_INTERFACE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_INTERLEAVEDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_INTERLEAVEFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_IOCTLDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_IOCTLFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_IPRESOLVE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_ISSUERCERT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_KEYPASSWD` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_KRBLEVEL` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_LOCALPORT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_LOCALPORTRANGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_LOGIN_OPTIONS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_LOW_SPEED_LIMIT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_LOW_SPEED_TIME` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAIL_AUTH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAIL_FROM` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAIL_RCPT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAXCONNECTS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAXFILESIZE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAXFILESIZE_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAXREDIRS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAX_RECV_SPEED_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_MAX_SEND_SPEED_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NETRC` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NETRC_FILE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NEW_DIRECTORY_PERMS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NEW_FILE_PERMS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NOBODY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NOPROGRESS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NOPROXY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_NOSIGNAL` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_OBSOLETE40` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_OBSOLETE72` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_OPENSOCKETDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_OPENSOCKETFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PASSWORD` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PATH_AS_IS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PINNEDPUBLICKEY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PIPEWAIT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PORT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POST` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POSTFIELDS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POSTFIELDSIZE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POSTFIELDSIZE_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POSTQUOTE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_POSTREDIR` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PREQUOTE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PRIVATE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROGRESSDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROGRESSFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROTOCOLS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXY` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYAUTH` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYHEADER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYPASSWORD` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYPORT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYTYPE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYUSERNAME` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXYUSERPWD` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXY_SERVICE_NAME` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PROXY_TRANSFER_MODE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_PUT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_QUOTE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RANDOM_FILE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RANGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_READDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_READFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_REDIR_PROTOCOLS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_REFERER` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RESOLVE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RESUME_FROM` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RESUME_FROM_LARGE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_CLIENT_CSEQ` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_REQUEST` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_SERVER_CSEQ` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_SESSION_ID` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_STREAM_URI` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_RTSP_TRANSPORT` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SASL_IR` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SEEKDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SEEKFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SERVICE_NAME` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SHARE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SOCKOPTDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SOCKOPTFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SOCKS5_GSSAPI_NEC` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SOCKS5_GSSAPI_SERVICE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_AUTH_TYPES` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_HOST_PUBLIC_KEY_MD5` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_KEYDATA` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_KEYFUNCTION` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_KNOWNHOSTS` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_PRIVATE_KEYFILE` | `(std ffi curl)`, `(thunderchez curl)` | -| `CURLOPT_SSH_PUBLIC_KEYFILE` | `(std ffi curl)`, `(thunderchez curl)` |