NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #99 most downloaded on crates.io
An HTTP/2 client and server
Last release today
06 Oct 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 54 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
88 releases · first in 2017
perf: decode two HPACK Huffman symbols per table lookup by @ArniDagur in #927
:status by @0x676e67 in #959Full Changelog: v0.4.19...v0.4.20
One column per quarter.
content-length headers with different values.:status pseudo header.refactor: split empty data frame count from budget by @seanmonstar in #945
Full Changelog: v0.4.18...v0.4.19
feat: allow configuring the DATA frame budget by @muhamadazmy in #942
Full Changelog: v0.4.17...v0.4.18
fix: dont budget DATA frames that are EOS by @seanmonstar in #940
Full Changelog: v0.4.16...v0.4.17
fix: CI failure on nightly due to deprecated std::usize and std::u32 use by @ArniDagur in #932
Ok(0) by @ArniDagur in #921HeaderValue creation via zero-copy sharing" by @0x676e67 in #924std::usize and std::u32 use by @ArniDagur in #932poll_trailers by @ArniDagur in #931RecvStream is dropped by @ArniDagur in #930Full Changelog: v0.4.15...v0.4.16
RecvStream is dropped.poll_trailers.HeaderValues.fix: Discard buffered DATA when a scheduled reset is pending by @ArniDagur in #896
Full Changelog: v0.4.14...v0.4.15
try_append().poll_capacity() to not return Some(Ok(0)).fix(stream): avoid RST before initial HEADERS on idle streams by @DDtKey in #875
HeaderValue creation via zero-copy sharing by @0x676e67 in #884header_table_size to server builder by @ArniDagur in #888reserve_capacity by @ArniDagur in #893set_reset must notify send task (missed wakeup) by @ArniDagur in #897Full Changelog: v0.4.13...v0.4.14
header_table_size() option to server builder.poll_capacity when locally reseting a stream from library.Implement HTTP/2 informational responses (1xx) support by @apu031 in #865
Full Changelog: v0.4.12...v0.4.13
chore: update to webpki-roots 1 by @tottoto in #851
Full Changelog: v0.4.11...v0.4.12
fix: not return UnexpectedEof when server drops without close_notify by @jmwample in #847
Fix RecvStream::is_end_stream(): return true only when END_STREAM is received by @eaufavor in #810
Full Changelog: v0.4.9...v0.4.10
is_end_stream() to return true only when ended cleanly, not when errored.Add sever::Connection::has_streams() method to check for active streams.
sever::Connection::has_streams() method to check for active streams.Fix handling implicit stream resets at the more correct time.
poll_flush after poll_shutdown.Fix treating HEADERS frames with a non-zero content-length but END_STREAM flag as malformed.
Add current_max_send_streams() and current_max_recv_streams() to client::SendRequest.
current_max_send_streams() and current_max_recv_streams() to client::SendRequest.Fix race condition that sometimes hung connections during shutdown.
Limit number of CONTINUATION frames for misbehaving connections.
Fix flow control limits to not apply until receiving SETTINGS ack.
close_notify.Limit error resets for misbehaving connections.
Fix assigning connection capacity which could starve streams in some instances.
Remove deprecated Server::poll_close().
http 1.0.Server::poll_close().Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add header_table_size(usize) option to client and server builders.
header_table_size(usize) option to client and server builders.Fix opening of new streams over peer's max concurrent limit.
RecvStream to return data even if it has received a CANCEL stream error.Fix panic if a server received a request with a :status pseudo header in the 1xx range.
:status pseudo header in the 1xx range.Fix counting reset streams when triggered by a GOAWAY.
too_many_resets in opaque debug data of GOAWAY when too many resets received.Fix panic because of opposite check in is_remote_local().
is_remote_local().…an application can accept them off the queue. (CVE-2023-26964)
Error::is_library() method to check if the originated inside h2.max_pending_accept_reset_streams(usize) option to client and server
builders.Set Protocol extension on requests when received Extended CONNECT requests.
Protocol extension on requests when received Extended CONNECT requests.B: Unpin + 'static bound requiremented of bufsRemove B: Buf bound on SendStream's parameter
B: Buf bound on SendStream's parameterStreamId u32Return RST_STREAM(NO_ERROR) when the server early responds.
Error::is_reset function.RST_STREAM(NO_ERROR) when the server early responds.Update private internal tokio-util dependency.
tokio-util dependency.Avoid time operations that can panic
tracing spans (#608)Make SendStream::poll_capacity never return Ok(Some(0))
SendStream::poll_capacity never return Ok(Some(0)) (#596)Add Error::is_go_away() and Error::is_remote() methods.
Error::is_go_away() and Error::is_remote() methods.Fix hang related to new max_send_buffer_size.
max_send_buffer_size.Add "extended CONNECT support". Adds h2::Protocol, which is used for request and response extensions to connect new protocols over an HTTP/2 stream.
h2::ext::Protocol, which is used for request and response extensions to connect new protocols over an HTTP/2 stream.max_send_buffer_size options to client and server builders, and a default of ~400MB. This acts like a high-water mark for the poll_capacity() method.Fix panic if server sends a malformed frame on a stream client was about to open.
:status in a request as a stream error instead of connection error.Fix regression of h2::Error that were created via From not returning their reason code in Error::reason().
h2::Error that were created via From<h2::Reason> not returning their reason code in Error::reason().Fix sending of very large headers. Previously when a single header was too big to fit in a single HEADERS frame, an error was returned. Now it is brok
HEADERS frame, an error was returned. Now it is broken up and sent correctly.Fix panic when encoding header size update over a certain size.
SendRequest to wake up connection when dropped.RecvStream is placed in the request or response extensions.Instant::now if zero reset streams are configured.Fix client being able to make CONNECT requests without a :path.
CONNECT requests without a :path.RecvStream::poll_data.Fix incorrect handling of received 1xx responses on the client when the request body is still streaming.
Add Connection::max_concurrent_recv_streams() getter.
Connection::max_concurrent_recv_streams() getter.Connection::max_concurrent_send_streams() getter.Update to Tokio v1 and Bytes v1.
tracing's log feature. (It can still be enabled by a user in their own Cargo.toml.)Fix stream ref count when sending a push promise
Integrate tracing directly where log was used. (For 0.2.x, logs are still emitted by default.)
tracing directly where log was used. (For 0.2.x, logs are still emitted by default.)Fix rare debug assert failure in store shutdown.
Fix when receiving SETTINGS_HEADER_TABLE_SIZE setting.
SETTINGS_HEADER_TABLE_SIZE setting.Fix server being able to accept CONNECT requests without :scheme or :path.
CONNECT requests without :scheme or :path.Reduce size of FlowControl and RecvStream.
FlowControl and RecvStream.Relax Unpin bounds on the send Buf generic.
Unpin bounds on the send Buf generic.Add server::Connection::set_initial_window_size and client::Connection::set_initial_window_size which can adjust the INITIAL_WINDOW_SIZE setting on an
server::Connection::set_initial_window_size and client::Connection::set_initial_window_size which can adjust the INITIAL_WINDOW_SIZE setting on an existing connection (#421).http v0.2.tokio v0.2.unstable-stream feature to stream.ReserveCapacity to FlowControl (#423).From<io::Error> for Error.Update to futures 0.3.0-alpha.19.
0.3.0-alpha.19.0.2.0-alpha.6.Add server support for PUSH_PROMISEs (#327).
PUSH_PROMISEs (#327).0.2.0-alpha.5.stream feature to unstable-stream.Update from futures 0.1 to std::Future.
futures 0.1 to std::future::Future.AsyncRead/AsyncWrite to tokio-io 0.2 alpha.Stream implementations to be optional, default disabled. Specific async and poll functions are now inherent, and Stream can be re-enabled with the stream cargo feature.Your coding agent can read these notes before it upgrades. Set up the MCP server →