0.8.2
Patch release for correct HEAD responses, drain-aware health checks, built-in endpoint parity, reliable threaded reloads, and high-value CLI flags
Highlights
- Correct HEAD responses and access logs — HTTP/1.1, HTTP/2, HTTP/3, and sync bridges now preserve response headers while dropping app body bytes for HEAD requests. Access-log timestamps are real UTC values, and expected long-lived SSE/chunked responses are no longer marked slow solely because of their duration.
- Drain-aware readiness — the built-in health endpoint returns HTTP 503 with
{"status":"draining"}while a worker drains, so load balancers can stop routing new traffic during deploys. - Built-in endpoint parity — health, introspection, and configured compression-dictionary endpoints now share dispatch behavior across HTTP/1.1, HTTP/2, and HTTP/3; HTTP/3 health responses also report the real worker ID.
- Reliable threaded reloads — thread workers receive duplicated listener handles, preventing the next generation from seeing
EBADFwhen old workers close independently boundSO_REUSEPORTlisteners. - More useful CLI controls —
serveandchecknow expose--debug,--trusted-hosts, and--metrics, while branded help and the README point to the TOML configuration template for less common settings.
Added
serveandcheckaccept--debug,--trusted-hosts, and--metrics. Usepounce config schema --output-format toml-templateto discover configuration available through TOML. (#158)
Fixed
- HEAD responses now send zero body octets across HTTP/1.1, HTTP/2, HTTP/3, and sync bridges without losing the app-provided representation headers. Logging now converts monotonic lifecycle timestamps to wall-clock UTC, and long-lived SSE/chunked responses are excluded from the duration-only slow-request heuristic. (#217, #218, #219)
- The built-in health endpoint returns HTTP 503 with
{"status":"draining"}during worker drain across async HTTP/1.1, sync, HTTP/2, and HTTP/3 paths. (#107) - Health, introspection, and configured compression-dictionary endpoints now use shared dispatch behavior across HTTP/1.1, HTTP/2, and HTTP/3, including real worker IDs in HTTP/3 health responses. (#161)
- Thread-worker graceful reload duplicates listener handles before handing them to workers, preventing
EBADFin the new generation when old workers close independently boundSO_REUSEPORTsockets. (#222)
Performance
No new benchmark artifact accompanies 0.8.2. These changes fix correctness and operator-control paths rather than introduce performance work; normal application requests do not resolve the live state used by built-in endpoints. This release makes no numeric performance claim.
Install
uv add "bengal-pounce==0.8.2"