Changes for version 0.17 - 2026-08-12
- TLS session resumption now survives tls_reload.
- HTTPS connections no longer pay a wasted SSL_read on every writable event.
- A TLS connection whose SSL_read blocked wanting a writable socket no longer risks spinning the worker at 100% CPU.
- SSL_MODE_RELEASE_BUFFERS, so OpenSSL's record buffers are handed back when they drain instead of being pinned for a connection's whole life - a keep-alive server is mostly idle connections.
- A session id context is now set, without which OpenSSL declines to resume any session on a context that verifies peers: every mTLS connection paid a full handshake and a full chain verification.
- SNI hostname lookup is a binary search over a sorted, lowercased table rather than a strcasecmp walk of every entry, which is a per-handshake cost that grew with the number of certificates served.
- close_notify is no longer written for a connection dropped mid-handshake, where there is no session to shut down.
- Tests no longer derive their listening port from $$.
- A failed fork during a SIGHUP recycle no longer stores -1 in the child table, where the shutdown sweep would have turned it into kill(-1, SIGTERM) and signalled every process owned by the uid.
Modules
an event-loop PSGI server
epoll readiness backend for Hyperman::Loop
io_uring backend for Hyperman::Loop
kqueue readiness backend for Hyperman::Loop
portable poll(2) backend for Hyperman::Loop
a fast, native, Future-compatible async result
the per-worker event loop
Plack/PSGI adapter for the Hyperman server