v0.2.4
Maintenance release: an HTTP/2 write-path optimization, an HTTP/2 disconnect fix, and a runtime concurrency-cap setter. No API change beyond the added setter.
Changed
- Bump
h2to 0.9.0, which coalesces a response's frames into a single socket write instead of one write per frame. On the loopback benchmark this roughly doubles large HTTP/2 response throughput (100 KiB over TLS: ~28k -> ~66k req/s) and lifts smaller bodies ~7-9%.
Fixed
- HTTP/2: a client that disconnects mid-response is reported as a normal disconnect (
{error, closed}, matching HTTP/1.1'sgen_tcp:send) instead of crashing the request. The crash path error-logged the full stacktrace, which carries the response body as a send argument, so a disconnect during a large response pretty-printed the whole body per request - a throughput sink and a log-hygiene leak.
Added
livery_req_sup:set_max_concurrent_requests/1changes the in-flight request cap at runtime. The cap is resolved once at startup and cached inpersistent_termrather than read from the application environment on every request.
Full Changelog: https://github.com/benoitc/livery/blob/main/CHANGELOG.md