Same as --strict-native: a function that can’t be compiled natively is an error, not a warning and a fallback
SSPUR_CACHE
Root of every cache, instead of ~/.cache/sspur: native objects (native/), check results (check), unchanged programs for sspur run (run/), packages (pkgs/) and deploy builds (deploy/)
SSPUR_LOG=json
Print each log line as a JSON object with the time, the level and the message
SSPUR_LOG_LEVEL
debug, info, warn or error: drop log lines below that level (a line without a level prefix is info)
SSL_CERT_FILE
A PEM file of certificates the HTTP client trusts instead of the system’s roots
HTTPS_PROXY, HTTP_PROXY, ALL_PROXY, NO_PROXY
Proxies for the HTTP client (lowercase forms too)
SSPUR_INDEX
The package index to read instead of sspur-packages on raw.githubusercontent.com: an HTTPS base URL, a git URL, or a directory with packages/
SSPUR_OFFLINE=1
Never download: use the cached index and packages only
SSPUR_REGISTRY_REPO
The GitHub repository sspur publish and sspur yank open requests in (default sspurlang/sspur-packages)
SSPUR_GH, SSPUR_NO_GH=1
The GitHub CLI sspur publish uses, or don’t use it and print the request link
SSPUR_REGISTRY_CHECKS
A registry.ssp to run instead of the copy built into sspur publish
SSPUR_LIBCURL
Path of libcurl, if the HTTP client doesn’t find it (macOS and Linux)
SSPUR_OPENSSL
Directory of OpenSSL 3’s libraries, if http.serve with TLS doesn’t find them
SSPUR_NO_CHECK_CACHE
Set to any value to skip the shared check cache, like check --no-cache
SSPUR_JOBS
Parallel C compiler jobs for native objects (default one per core, fewer when memory is short)
SSPUR_OPT=0
Turn off the proven-rewrite optimizer
SSPUR_SMT=off
Don’t use Z3 to remove runtime checks during native builds
SSPUR_SMT_TIMEOUT
Z3 time limit per query in milliseconds (default 500)
SSPUR_FILL_MS
Time hole filling may spend per hole in milliseconds, for check, fill and the MCP tools; --fill-ms still wins (defaults 400 for check, 600 in editors, 1000 for fill)
SSPUR_LTO
Default for --lto: off, thin or full
CC
The C compiler for native code and export-c (default clang)
SSPUR_DEBUG=1
Same as --debug: native code with debug info mapped to the .ssp lines, at -O0 (Debugging). Part of the cache key
SSPUR_CFLAGS
Extra C compiler flags for native builds, part of the cache key. -fsanitize=address,undefined builds native code under the sanitizers; on macOS run with DYLD_INSERT_LIBRARIES set to clang’s libclang_rt.asan_osx_dynamic.dylib
SSPUR_PROFDATA
The llvm-profdata to use for --pgo
SSPUR_LLVM_CC
The clang for --backend llvm
SSPUR_Z3
The z3 that sspur verify and native builds use (default z3 on PATH); off or 0 means none
Set by sspur run, sspur test and sspur debug to the path of the running sspur for the program and the processes it starts, unless it is already set, so a program can run the same compiler with env_var("SSPUR").or("sspur") instead of whichever is first on PATH. Set it yourself to choose another one
SSPUR_STACK
Stack the interpreter may use for nested calls, instead of stopping at 20,000 calls; past it a call traps with stack overflow in f. A number of bytes with K, M or G, at least 1M: 256M fits about 130,000 calls of a simple recursive function on macOS and Linux, fewer on Windows, whose frames are larger. An invalid value is a warning and the 20,000-call limit
SSPUR_THREADS
Threads for automatic data parallelism in pure pipelines (default: the number of cores). 1 makes them sequential
SSPUR_GPU=0
Run GPU kernels on the CPU even when Metal is available
SSPUR_GPU_TRACE=1
Print a line per GPU kernel launch
SSPUR_GC_STATS=1
Print memory statistics to stderr: each collection, and when a native program exits, how many blocks were freed at their last use and how many were left for the collector
SSPUR_MEM
gc turns off freeing at last use (no drops compiled, nothing freed early; the 0.8.1 behavior). check poisons freed blocks instead of reusing them and stops on a double free, for finding memory bugs (ADR 0033)
SSPUR_GC_MIN_MB, SSPUR_GC_FACTOR
Collect after max(MIN MB, FACTOR x live) of allocation (defaults 256 and 4). Lower values trade speed for memory
SSPUR_GC_STRESS
Collect every N bytes, for testing the collector
SSPUR_DB_POOL
Connections per SQLite database, 1 to 64 (default 8; always 1 for a memory database)
sspur deploy plan writes these into each function’s configuration, and sspur deploy local sets them for the processes it starts; the generated bootstrap reads them.
Variable
Effect
SSPUR_HANDLER
The handler this function runs
SSPUR_BACKFILL
The store a backfill function migrates, instead of a handler
SSPUR_TABLE_<Store>
The DynamoDB table of the store Store, for each store the handler’s effect row grants