Changes for version 0.002008 - 2026-08-25

  • Maintenance
  • t/lifespan-mode.t no longer asserts the exact exit code of the CLI's --lifespan off rejection. An uncaught die's exit status is $! when errno is nonzero (else 255), and ambient errno at die time varies by platform and module-search history -- CPAN smokers' long PERL5LIB searches leave ENOENT set, so every Linux smoker saw exit 2 and failed 0.002007's exact-255 assertion. The test now requires only a nonzero exit; the rejection message assertions are unchanged.
  • Specification Alignment
  • HTTP/1.1 responses carrying an application-supplied Upgrade header (e.g. 426 Upgrade Required) now also carry 'upgrade' among the server-supplied Connection tokens, per the PAGI spec's new Upgrade companion rule (RFC 9110 requires the pair from any Upgrade sender). The application's own Connection header is still stripped; the server completes the pair itself. Responses without Upgrade are unchanged (no Connection header; keep-alive stays implicit).

Documentation

PAGI application server
HTTP/1.1, HTTP/2, WebSocket, SSE, and Security Compliance Documentation

Modules

PAGI Reference Server Implementation
Normalizes PAGI 0.4 application providers to a coderef
Non-blocking file I/O for PAGI::Server internals
Per-connection state machine
Connection state tracking for HTTP requests
Mandatory outgoing-event validation
HTTP/1.1 protocol handler
HTTP/2 protocol handler using nghttp2
PAGI application loader and server runner
Outbound flow-control introspection for a connection

Provides

in lib/PAGI/Server/Protocol/HTTP2.pm