Changes for version 0.08 - 2026-08-04

  • PSGI env: add REMOTE_HOST (the peer address, like REMOTE_ADDR), REMOTE_PORT (the peer's port, captured at accept), and psgix.input.buffered => 1 (psgi.input is a seekable in-memory :scalar handle). Set for both HTTP/1 and HTTP/2.
  • Multiple listeners in one run(). Pass listen => [ {..}, .. ] to bind several listeners, each independently plain or TLS - the driving case being plain :80 beside HTTPS :443 - or port => [80, 8080] as sugar for several plain listeners sharing the top-level options. SERVER_PORT and psgi.url_scheme reflect the listener each request arrived on.
  • Built-in https redirect. A listener with redirect_https => $port answers every request with a 301 to the same host and target on that https port, entirely in C, before the app is reached.

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