Breaking Changes:
- Removed the
opensslandboringssl-vendoredfeatures, as well as the vendored BoringSSL source. The default TLS backend is nowboringssl-boring-crate. - The minimum supported Rust version was raised to 1.88.
Connection::stream_send_zc()no longer takes thelenargument. Callers now pass the stream ID, buffer, and FIN flag.Stats,PathStats, andh3::Statsare now marked#[non_exhaustive], so downstream code should not construct or exhaustively match them.
Highlights:
- Added
Stats::amplification_limited_countto count sends blocked by the anti-amplification limit. - Added
PathStats::dgram_lostto track lost DATAGRAM frames per path. - Added the C API
quiche_config_set_use_initial_max_data_as_flow_control_win(). - Hardened HTTP/3 request-stream frame processing, rejected unsupported push streams on both endpoints, and fixed varint parsing for
PRIORITY_UPDATEandPUSH_PROMISE. - Fixed PTO and loss-detection overflow cases that could cause panics or tight timeout loops.
- Made C FFI
*_free(NULL)calls safe, and fixed a source connection ID accounting underflow during connection ID rotation. Config::set_ack_delay_exponent()now clamps values to RFC 9000's maximum, exposed asMAX_ACK_DELAY_EXPONENT.- Other bug fixes and performance improvements.
Full changelog at 0.28.0...0.29.0