Harden run-safe sandbox and refresh MCP docs

ober

9a60dc32e04736f55df4a901ad54417b28d4dbd9

diff --git a/data/api-signatures.sexp b/data/api-signatures.sexp
index ebd4aee..786df2a 100644
--- 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)")
diff --git a/data/changelog.sexp b/data/changelog.sexp
index 80ea595..c87a1d7 100644
--- 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")
diff --git a/data/security-rules.sexp b/data/security-rules.sexp
index 5431d21..301638e 100644
--- 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"
      .
diff --git a/docs/api-index.md b/docs/api-index.md
index 19322cb..e246618 100644
--- 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)` |