|
1 | 1 | # This file documents the revision history for Perl extension PAGI |
2 | 2 |
|
| 3 | +0.001017 - 2026-02-11 |
| 4 | + [New Features] |
| 5 | + - HTTP/2 support (experimental). Requires Net::HTTP2::nghttp2. Enable with |
| 6 | + --http2 flag. Supports ALPN negotiation (h2/http1.1 over TLS), cleartext |
| 7 | + h2c via connection preface detection, WebSocket over HTTP/2 (RFC 8441), |
| 8 | + streaming responses with backpressure, and configurable protocol settings |
| 9 | + (h2_max_concurrent_streams, h2_initial_window_size, etc.) |
| 10 | + - Worker heartbeat monitoring for multi-worker mode. Parent process detects |
| 11 | + workers with blocked event loops via Unix pipe heartbeat and replaces them |
| 12 | + with SIGKILL + respawn. Default 50s timeout (heartbeat_timeout option, |
| 13 | + --heartbeat-timeout CLI flag). Only detects event loop starvation — async |
| 14 | + handlers using await are unaffected regardless of duration. |
| 15 | + - Custom access log format strings (--access-log-format). Supports atoms |
| 16 | + like %a (address), %s (status), %D (duration μs), %b (body size). |
| 17 | + Enables structured JSON logging via format string. |
| 18 | + - Track response body size in access log (%b atom) |
| 19 | + |
| 20 | + [Bug Fixes] |
| 21 | + - Fix TLS performance cliff at 8+ concurrent connections caused by |
| 22 | + per-connection SSL context creation parsing the entire CA bundle. |
| 23 | + Shared SSL context via SSL_reuse_ctx gives ~26x throughput improvement. |
| 24 | + - Fix TLS in multi-worker mode — workers now SSL-upgrade connections |
| 25 | + in on_stream rather than relying on listener-level TLS |
| 26 | + - Fix SSE wire format to handle CRLF, LF, and bare CR line endings |
| 27 | + per the SSE specification |
| 28 | + - Fix multi-worker shutdown escalation — SIGKILL timer now fires |
| 29 | + correctly when workers don't exit after SIGTERM |
| 30 | + - Fix multi-worker parameter pass-through for server options |
| 31 | + - Fix flaky multi-worker TLS test |
| 32 | + |
| 33 | + [Improvements] |
| 34 | + - Add on_ssl_error callback to TLS listener setup for cleaner error |
| 35 | + handling (suppresses "EV: error in callback" noise) |
| 36 | + - Cache Server header string to avoid per-response interpolation |
| 37 | + - Merge double header loop in serialize_response_start |
| 38 | + - Cache access log timestamp at per-second granularity |
| 39 | + - Cache client_host in access log to avoid per-request getpeername syscall |
| 40 | + - Skip HTTP/2 tests when Net::HTTP2::nghttp2 is not installed |
| 41 | + - Skip SSE tests when Future::IO is not installed |
| 42 | + - Remove unused Sys::Sendfile recommendation from cpanfile |
| 43 | + |
3 | 44 | 0.001016 - 2026-01-31 |
4 | 45 | [New Features] |
5 | 46 | - Add query parameter parsing to PAGI::SSE: query_params(), query_param(), |
|
0 commit comments