h3wire is a pure-Rust, sans-I/O HTTP/3 protocol engine designed for embeddability and protocol extensibility. Unlike async HTTP/3 libraries such as hyperium/h3, h3wire does not own transport streams or expose HTTP request/response as its fundamental abstraction.
The core (HTTP/3, RFC 9114, and QPACK, RFC 9204) consumes stream bytes and resets
from your QUIC transport and returns events for the application and actions for
the transport, with no I/O, no async runtime and no dependencies beyond std
(#![forbid(unsafe_code)], MSRV 1.85).
Status: v0.1 core. It covers RFC 9114 request/response streams, control
and QPACK streams, GOAWAY and stream termination, QPACK with the static table only
(no dynamic table), Extended CONNECT (RFC 9220), the HTTP/3 part of HTTP Datagrams
(RFC 9297) and extension points for frame, stream and setting types.
| Crate | Description |
|---|---|
h3wire |
Sans-I/O HTTP/3 and QPACK core (no I/O, no runtime, no dependencies) |
h3wire-async |
Runtime-neutral async layer: client, server, bodies, Extended CONNECT, datagrams. The tokio feature adds TokioExecutor |
h3wire-quinn |
quinn 0.11 transport for h3wire-async |
Note: h3wire-async's API is unstable until the v0.3 MASQUE milestone: expect 0.x minor bumps; patches never break.
Add the library with Cargo:
cargo add h3wireOr add h3wire = "0.1" under [dependencies]. For async HTTP/3 over quinn, add
h3wire-async and h3wire-quinn.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.