Breaking Changes:
PathEventis now#[non_exhaustive]and addsPmtuUpdated. Rust applications that exhaustively match path events must add a wildcard arm. C applications should handleQUICHE_PATH_EVENT_PMTU_UPDATEDwhen PMTU discovery is enabled.- The supported
boringrange is now>=4.19,<6, so fresh dependency resolution uses 5.x by default while consumers pinned to 4.19 remain supported. Static C applications linkinglibquiche.amust use a C++ linker driver or otherwise link the C++ runtime. Boring 5 enables post-quantum groups by default, which can split the ClientHello across multiple Initial packets. Applications that need smaller or deterministic ClientHellos can useConfig::set_curves_list()orquiche_config_set_curves_list().
Highlights:
- Added
Connection::stream_readable_len()to report the contiguous bytes currently readable from a stream, up to a caller-supplied limit, without copying data. - Fixed connection-level flow-control double counting from zero-length non-FIN
STREAMframes, which could close long-running bulk transfers withFLOW_CONTROL_ERROR. - Fixed handshake callback configuration being lost when early data was accepted during an in-progress 0-RTT handshake.
- Fixed cleanup of unknown and empty HTTP/3 unidirectional streams, and compressed completed-stream tracking into ranges to reduce retained memory.
- Updated
intrusive-collectionsto 0.10.3 for upstream undefined-behavior and atomic-link race fixes affecting stream priority queues.
Full changelog at 0.29.3...0.30.0