Revision history for Unblock-HTTP2
0.10 2026-10-04
- Make a deliberate breaking API harmonization pass across Unblock::HTTP2.
- Rename Transaction->inform() to Transaction->send_informational().
No compatibility alias is provided.
- Add Transaction->is_error() so the common transaction lifecycle
vocabulary includes state(), error(), is_complete(), is_cancelled(),
is_error(), and is_terminal().
- Normalize NativeABI discovery with definition(), native_include_dir(),
header_path(), and c_header().
- Install the public HTTP/2 native ABI header and report struct_size in the
Perl discovery definition.
- Build the XS native transport implementation against that same public
header so the installed declaration and compiled layout stay in sync.
- Review README, public POD, and docs for the 0.10 API, including callback
signatures, NativeABI discovery, and an explicit upgrade note.
- Add a staged-install regression test that builds the generated
distribution, loads NativeABI from the installed copy, verifies the
installed header and discovery values, and compiles an external C
consumer against that header.
- Jump from 0.04 to 0.10 to make the intentional public API break obvious.
0.04 2026-10-04
- Add Unblock::HTTP2::NativeABI for XS-backed transports.
- Accept borrowed native input buffers directly on both Client and Server,
avoiding the transport-side Perl byte-scalar materialization.
- Add native output draining so libnghttp2 output can be copied directly
into a transport-owned native queue without an intermediate Perl string.
- Support native output pause-after-accept semantics for transport
backpressure while keeping the portable input()/output() API unchanged.
- Require Uniform::HTTP 0.06 for its header-only native C ABI.
- Inspect exact canonical outgoing Request and Response objects directly
from XS without allocating a Perl FastPath view.
- Keep received initial HTTP/2 header fields native through validation and
construct the final canonical Uniform object directly from native spans.
- Remove per-field Perl receive callbacks for initial headers and trailers;
trailers now cross the XS boundary once per completed header block.
- Keep Uniform subclasses and adapters on the portable Perl contract.
- Preserve HTTP/2 validation, header-list limits, informational responses,
Extended CONNECT, trailers, and lifecycle semantics on the native path.
- In the seven-sample CI comparison against the 0.03 baseline, median
canonical submit rate improved 73.5% and full in-memory loopback improved
173.6%.
- Add a diagnostic native-transport benchmark. The native transport ABI is
intended to remove Perl buffer materialization at an XS transport
boundary; an in-process peer bridge is not used as a throughput claim.
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)