flare.quic
flare.quic — sans-I/O QUIC v1 codec primitives (RFC 9000).
This package ships the codec layer of QUIC: pure byte-in / byte-out parsers and emitters for the wire format, plus pure state machines and congestion-controller helpers that operate on owned value-typed state. It contains no socket I/O and no TLS handshake. Every public type's contract is "give me bytes, get back a typed value (and optionally error context); give me a typed value, get back bytes".
The codec layer is the load-bearing foundation that downstream modules (the QUIC reactor + datagram pump, the TLS handshake adapter that drives the CRYPTO frames) will build on top of. Shipping the codec layer first lets us cross-validate against reference fixtures before committing to a particular reactor / TLS design.
Public re-exports:
- :mod:
.varint— variable-length integer codec (RFC 9000 §16): :class:Varint, :func:encode_varint, :func:decode_varint, :func:varint_encoded_length, :data:VARINT_MAX. - :mod:
.packet— long / short header codec (RFC 9000 §17): :class:ConnectionId, :class:LongHeader, :class:ShortHeader, :class:InitialExtras, thePACKET_TYPE_*constants, and their byte-level helpers. - :mod:
.frame— all 22 RFC 9000 §19 transport frames as typed payload structs plus :trait:FrameHandler+ :func:parse_frame_into[H]for zero-carrier dispatch, and per-typeencode_*writers that append to a caller-ownedmut out: List[UInt8]. - :mod:
.transport_params— RFC 9000 §18 transport-parameter codec: :class:TransportParameters, :func:encode_transport_parameters, :func:decode_transport_parameters, and theTP_ID_*constants for every parameter the codec carries. - :mod:
.state— RFC 9000 §3 / §13 sans-I/O connection + stream state machines: :class:Connection, :class:Stream, :func:handle_frame_buf, :func:mark_handshake_complete, :func:is_idle_timeout_expired, :func:connection_close, the per-typed-payloadapply_*helpers, and theCONN_STATE_*/STREAM_STATE_*constants. - :mod:
.crypto— sans-I/O QUIC v1 crypto math (RFC 9001 §5 + RFC 5869 + RFC 8446 §7.1): HKDF-Extract, HKDF-Expand, HKDF-Expand-Label, RFC 9001 §5.2 initial- secret derivation, plus the :trait:QuicCryptoAEAD trait surface that the QUIC server reactor binds against. :class:OpenSslQuicCryptois the shipped backend; :class:StubQuicCryptoremains as a typed sentinel that raises, so tests can pin the trait boundary without linking OpenSSL. - :mod:
.cc— RFC 9002 §7 congestion control: the :trait:CongestionControllercontract plus :class:RenoController(RFC 9002 NewReno) and :class:CubicController(RFC 9438 CUBIC with RFC 9406 HyStart++), selected by :class:CcChoice. The loss-recovery bookkeeping in_loss_recoverydrives a controller on every ACK / loss.