NAME

Unblock::HTTP3 - non-blocking HTTP/3 protocol engine for Perl

SYNOPSIS

use Unblock::HTTP3::Connection;
use Uniform::HTTP::Request;

my $h3 = Unblock::HTTP3::Connection->client(
    quic => $quic,
);

$h3->start;

my $tx = $h3->request(
    Uniform::HTTP::Request->new(
        method    => 'GET',
        target    => '/',
        scheme    => 'https',
        authority => 'example.com',
    ),
);

DESCRIPTION

Unblock::HTTP3 is an HTTP/3 protocol engine.

It sits above Net::QUIC and uses Uniform::HTTP request and response objects. It does not own UDP sockets, timers, TLS configuration, or an event loop.

libnghttp3 is supplied through Alien::nghttp3 and is used for HTTP/3 framing and QPACK.

The main public objects are Unblock::HTTP3::Connection and Unblock::HTTP3::Transaction. Streaming bodies, Capsules, HTTP Datagrams, Extended CONNECT, extension SETTINGS, extension streams, priorities, graceful shutdown, and replay-aware 0-RTT are built around those objects.

STANDARDS

Unblock::HTTP3 implements the HTTP/3 protocol defined by RFC 9114 with QPACK from RFC 9204. It also supports RFC 9218 priorities, RFC 9220 Extended CONNECT, RFC 9297 HTTP Datagrams and Capsules, and RFC 9412 ORIGIN.

QUIC transport behavior remains the responsibility of Net::QUIC.

Detailed conformance notes and native-library limitations are recorded in docs/RFC-COMPLIANCE.md in the distribution.

MODULES

Unblock::HTTP3::Connection

One HTTP/3 connection over one Net::QUIC connection.

Unblock::HTTP3::Transaction

One HTTP/3 request stream and its response.

Uniform::HTTP::Request and Uniform::HTTP::Response

Canonical HTTP message objects used directly by Unblock::HTTP3.

Unblock::HTTP3::Body::Stream

Writable outgoing body stream.

Unblock::HTTP3::Body::Reader

Readable incoming body stream.

SEE ALSO

Net::QUIC, Uniform::HTTP, Alien::nghttp3

AUTHOR

Joshua S. Day

LICENSE

This software is available under the MIT License.