Revision history for Unblock-HTTP2
0.03 2026-10-04
- Rename the public per-request object from Stream to Transaction so
Unblock::HTTP1, Unblock::HTTP2, and Unblock::HTTP3 share the same
application-facing concept.
- Rename the related public API: id() becomes stream_id(), stream_count()
becomes transaction_count(), stream_for_id() becomes
transaction_for_stream_id(), can_open_stream() becomes
can_open_transaction(), and max_active_streams becomes
max_active_transactions.
- Do not provide compatibility aliases for the old Stream API. This is an
intentional early-version API cleanup.
- Keep HTTP/2 stream terminology for protocol-level concepts such as stream
IDs, flow control, RST_STREAM, GOAWAY boundaries, and SETTINGS.
0.02 2026-10-04
- Require Uniform::HTTP 0.05 and use its FastPath ABI for exact canonical
Request and Response objects.
- Map canonical outgoing headers directly to nghttp2_nv in XS, avoiding
per-field Perl method dispatch and intermediate HTTP/2 header arrays.
- Lowercase canonical field names and enforce HTTP/2 field restrictions in
the native fast path while preserving the existing portable fallback.
- Build received canonical Request and Response objects through trusted
FastPath construction after Unblock has validated their HTTP/2 semantics.
- Keep subclasses and framework adapters on the normal Uniform contract.
- Add repeatable FastPath performance comparison tooling under xt/ and CI.
The small-message benchmark shows large gains in native submission and
full in-memory request/response throughput.
0.01 2026-10-04
- Initial release of a standalone, event-loop and operating-system neutral
HTTP/2 protocol engine.
- Use Uniform::HTTP 0.04 Request and Response objects directly.
- Provide byte-in/byte-out Client and Server engines with multiplexed Stream
objects and no socket, TLS, or event-loop ownership.
- Use a small private XS binding to libnghttp2 through Alien::nghttp2.
- Support buffered and streaming request and response bodies, cooperative
backpressure, trailers, informational responses, and half-close state.
- Support ordinary CONNECT and generic Extended CONNECT.
- Support SETTINGS inspection and updates, PING, GOAWAY, graceful draining,
stream resets, standard HTTP/2 error codes, and preserved reset details.
- Support application-controlled receive flow control while keeping
connection-level credit independent from slow streams.
- Support RFC 9218 extensible priorities and deliberately omit the
deprecated RFC 7540 dependency-tree priority API.
- Advertise SETTINGS_ENABLE_PUSH = 0; Server Push is not exposed.
- Preserve fatal session errors, invalid-frame observations, unknown
extension-frame safety, and GOAWAY details for higher-layer policy.
- Add in-memory protocol tests, packaged-distribution distcheck/disttest,
and bidirectional interoperability tests against stock nghttp2 tools.
- Test Perl 5.16 on Linux, current Perl on Linux and macOS, and Strawberry
Perl on Windows.
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)