Changes for version 0.002004 - 2026-06-28
- Bug Fixes
- The HTTP/2 tests (t/http2/*.t) skipped only when Net::HTTP2::nghttp2 was older than 0.007, but the server treats HTTP/2 as usable only at nghttp2 >= 0.008 (PAGI::Server::Protocol::HTTP2::MIN_NGHTTP2_VERSION) and when the C library reports itself available. On a smoker with nghttp2 0.007 the guards passed, the tests ran, and every HTTP/2 session died "nghttp2 not installed". The tests now gate on PAGI::Server::Protocol::HTTP2->available, the same predicate the server uses, so they skip exactly when the server would decline HTTP/2.
- t/runner.t and t/integration/runner-server.t guarded PAGI::App::File and PAGI::App::Directory with the `!defined($v) || $v >= 0.002000` undef-loophole that 0.002003 removed elsewhere; a pre-split PAGI install would slip through. They now gate on PAGI::Tools, consistent with the other toolkit-dependent tests.
Documentation
PAGI application server
HTTP/1.1, HTTP/2, WebSocket, and Security Compliance Documentation
Modules
PAGI Reference Server Implementation
Non-blocking file I/O for PAGI::Server internals
Per-connection state machine
Connection state tracking for HTTP requests
Dev-mode event field 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
Examples
- examples/01-hello-http/README.md
- examples/01-hello-http/app.pl
- examples/02-streaming-response/README.md
- examples/02-streaming-response/app.pl
- examples/03-request-body/README.md
- examples/03-request-body/app.pl
- examples/04-websocket-echo/README.md
- examples/04-websocket-echo/app.pl
- examples/05-sse-broadcaster/README.md
- examples/05-sse-broadcaster/app.pl
- examples/06-lifespan-state/README.md
- examples/06-lifespan-state/app.pl
- examples/07-extension-fullflush/README.md
- examples/07-extension-fullflush/app.pl
- examples/08-tls-introspection/README.md
- examples/08-tls-introspection/app.pl
- examples/11-job-runner/README.md
- examples/11-job-runner/app.pl
- examples/11-job-runner/lib/JobRunner/HTTP.pm
- examples/11-job-runner/lib/JobRunner/Jobs.pm
- examples/11-job-runner/lib/JobRunner/Queue.pm
- examples/11-job-runner/lib/JobRunner/SSE.pm
- examples/11-job-runner/lib/JobRunner/WebSocket.pm
- examples/11-job-runner/lib/JobRunner/Worker.pm
- examples/11-job-runner/public/css/style.css
- examples/11-job-runner/public/index.html
- examples/11-job-runner/public/js/app.js
- examples/12-utf8/README.md
- examples/12-utf8/app.pl
- examples/README.md
- examples/backpressure-test/README.md
- examples/backpressure-test/app.pl
- examples/worker-pool-prototype.pl