Skip to content

Commit b8e853d

Browse files
jjn1056claude
andcommitted
Prep release 0.001017
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent cd667c3 commit b8e853d

4 files changed

Lines changed: 44 additions & 3 deletions

File tree

Changes

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,46 @@
11
# This file documents the revision history for Perl extension PAGI
22

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+
344
0.001016 - 2026-01-31
445
[New Features]
546
- Add query parameter parsing to PAGI::SSE: query_params(), query_param(),

dist.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ license = Artistic_2_0
44
copyright_holder = John Napiorkowski
55
copyright_year = 2026
66
abstract = PAGI Specification, Utilities and Reference Server
7-
version = 0.001016
7+
version = 0.001017
88

99
[@Basic]
1010
[MetaJSON]

lib/PAGI.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package PAGI;
33
use strict;
44
use warnings;
55

6-
our $VERSION = '0.001016';
6+
our $VERSION = '0.001017';
77

88
1;
99

lib/PAGI/Server.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package PAGI::Server;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.001009';
5+
our $VERSION = '0.001010';
66

77
# Future::XS support - opt-in via PAGI_FUTURE_XS=1 environment variable
88
# Must be loaded before Future to take effect, so we check env var in BEGIN

0 commit comments

Comments
 (0)