os runner (Linux only): --rlimit-cpu=seconds / --rlimit-mem=bytes apply setrlimit/prlimit (RLIMIT_CPU / RLIMIT_AS) to the CGI process right after it starts. Ignored (with a warning) on non-Linux platforms.
docker runner: --docker-memory=bytes / --docker-cpus=cpus map to the container's native Memory / NanoCPUs resource limits.
wasm runners (wasmtime/wazero/wasmer) are not covered yet; tracked separately in #147.
known limitations
WASI stdin (request body / POST data)
supported by the wasmtime and wazero runners
not supported by the wasmer runner: the wasmer-go binding currently in use (v1.0.4) has no API to feed an io.Reader as WASI stdin (only InheritStdin(), which inherits the host process's own stdin). The request body is silently discarded for this runner. (#9)
orphaned child processes
the os runner reaps the CGI process it starts directly, but it does not reap grandchild processes that a CGI script spawns and backgrounds (e.g. some-daemon &)
if httpcgi runs as PID 1 (common in a minimal container), such orphans are reparented to it and can accumulate as zombies since nothing ever calls wait() for them
recommendation: run httpcgi under an init process that reaps orphans (e.g. docker run --init, tini, or dumb-init), or avoid backgrounding processes from CGI scripts (#84)