PackageTrack
Sign in Get early access

h2

An HTTP/2 client and server

0.4.18 762M downloads/mo #95 most downloaded on crates.io hyperium/h2

What this package is like to depend on

Last release 3 days ago

20 Aug 2026

Ships fairly regularly

a new release about every 2 months

Nearly every release is documented

notes for 75 of 82 stable releases

1 version withdrawn

withdrawn after publishing

9 years old

86 releases · first in 2017

6 releases in the last 12 months

see the full history below

Release timeline

86 releases · Mar 2017 to Aug 2026
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 86
  1. 0.4.18 20 Aug 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.4.17...v0.4.18

    Open source →
    Release notes
    • Add data_frame_budget(n) methods to client and server builders.
    Open source →
  2. 0.4.17 19 Aug 2026
    Release notes

    What's Changed

    Full Changelog: v0.4.16...v0.4.17

    Open source →
    Release notes
    • Fix limiting of excessive small DATA frames to ignore EOS frames.
    • Fix HPACK encoding table to cap the max size to 4kb.
    Open source →
  3. 0.4.16 17 Aug 2026
    Release notes

    What's Changed

    • fix: error instead of busy-looping when write returns Ok(0) by @ArniDagur in #921
    • Revert "perf(header): optimize HeaderValue creation via zero-copy sharing" by @0x676e67 in #924
    • fix: preserve received END_STREAM across HTTP/2 stream resets by @howardjohn in #922
    • streams: reject connection-specific header fields in send_trailers (RFC 9113 §8.2.2) by @scadastrangelove in #925
    • perf: optimize HPACK decoding with 8-bit tables by @seanmonstar in #926
    • Avoid flushing h2 socket while holding stream locks by @brentechols in #918
    • perf: reuse HPACK encode buffer across frames by @dorianverlaine in #929
    • fix: CI failure on nightly due to deprecated std::usize and std::u32 use by @ArniDagur in #932
    • fix: Missed wakeup in poll_trailers by @ArniDagur in #931
    • fix: Release flow control capacity when RecvStream is dropped by @ArniDagur in #930
    • fix: limit excessive amount of small DATA frames by @seanmonstar in #935
    • fix: prevent double counting pushed streams after 1xx responses by @seanmonstar in #936

    New Contributors

    Full Changelog: v0.4.15...v0.4.16

    Open source →
    Release notes
    • Fix limiting excessive amount of small DATA frames.
    • Fix double counting pushed streams when receiving 1xx responses.
    • Fix releasing of flow control capacity earlier, when RecvStream is dropped.
    • Fix missed wakeup in poll_trailers.
    • Fix extra memory retained when copying HeaderValues.
    • Fix resets received after END_OF_STREAM to allow the data to still be received.
    • Fix busy-looping when IO write returns 0 to mean connection closed.
    • Optimize HPACK decoding tables from 4-bit states to 1-byte states.
    • Optimize IO writing contention by not holding lock while flushing.
    Open source →
  4. 0.4.15 15 Jun 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.4.14...v0.4.15

    Open source →
    Release notes
    • Fix closing a connection when header size is "way too large" (currently x4 configured limit).
    • Fix overflow calculating padding length if a DATA frame had 255 bytes of padding.
    • Fix ignoring library-initiated resets in the connection state loop.
    • Fix decoding panic with an absurd amount of headers and no limit to now use try_append().
    • Fix rejecting frames on streams whose HEADERS have not been sent.
    • Fix poll_capacity() to not return Some(Ok(0)).
    • Fix discarding of buffered DATA frames when a reset is scheduled.
    Open source →
  5. 0.4.14 04 May 2026
    Release notes

    What's Changed

    • fix(stream): avoid RST before initial HEADERS on idle streams by @DDtKey in #875
    • fix: filter stream initiator in recv_go_away (#885) by @ofek-sha in #886
    • perf(header): optimize HeaderValue creation via zero-copy sharing by @0x676e67 in #884
    • Add header_table_size to server builder by @ArniDagur in #888
    • check final response in poll_informational by @zh-jq in #889
    • fix: Avoid capacity leak or panic when a stream is cancelled after reserve_capacity by @ArniDagur in #893
    • fix: Flow control capacity leak with padded frames by @ArniDagur in #894
    • fix: Account for connection flow control on DATA after GOAWAY by @ArniDagur in #895
    • fix: set_reset must notify send task (missed wakeup) by @ArniDagur in #897
    • Prepare v0.4.14 by @seanmonstar in #901

    New Contributors

    Full Changelog: v0.4.13...v0.4.14

    Open source →
    Release notes
    • Add header_table_size() option to server builder.
    • Fix leaking connection flow control of padded DATA frames when stream is reset.
    • Fix leaking connection flow control when canceling a stream after reserving capacity.
    • Fix leaking connection flow control when receiving a DATA frame after GOAWAY.
    • Fix waking the poll_capacity when locally reseting a stream from library.
    • Fix sending HEADERS on a reset stream before the RST_STREAM frame.
    • Fix receiving GOAWAY to not close peer-initiated streams.
    • Optimize header value decoding to copy less bytes.
    Open source →
  6. 0.4.13 05 Jan 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.4.12...v0.4.13

    Open source →
    Release notes
    • Add support for 1xx informational responses on client and server side.
    • Fix auto-releasing of padding bytes of DATA frames for flow control windows.
    • Fix to stop assigning capacity to pending streams which can't use it yet.
    • Fix tracing to not grab the parent for the connection span.
    Open source →
  7. 0.4.12 06 Aug 2025
    Release notes

    What's Changed

    Full Changelog: v0.4.11...v0.4.12

    Open source →
    Release notes
    • Fix default limits on max stored reset streams and duration to more reasonable values.
    Open source →
  8. 0.4.11 30 Jun 2025
    Release notes

    What's Changed

    • fix: not return UnexpectedEof when server drops without close_notify by @jmwample in #847

    New Contributors

    Full Changelog: v0.4.10...v0.4.11

    Open source →
    Release notes
    • Fix client to not return an error when a clean shutdown otherwise doesn't get a TLS close_notify, which some servers don't bother sending.
    Open source →
  9. 0.4.10 05 May 2025
    Release notes

    What's Changed

    • 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

    Open source →
    Release notes
    • Fix is_end_stream() to return true only when ended cleanly, not when errored.
    Open source →
  10. 0.4.9 14 Apr 2025
    Release notes
    • Add sever::Connection::has_streams() method to check for active streams.
    Open source →
  11. 0.4.8 18 Feb 2025
    Release notes
    • Fix handling implicit stream resets at the more correct time.
    • Fix window size decrements of send-closed streams.
    • Fix reclaiming of reserved capacity when streams are closed.
    • Fix to no longer call poll_flush after poll_shutdown.
    • Fix busy loop in task when poll_shutdown returns pending.
    Open source →
  12. 0.4.7 19 Nov 2024
    Release notes
    • Fix treating HEADERS frames with a non-zero content-length but END_STREAM flag as malformed.
    • Fix notifying the stream task when automatically reset on receipt of a stream error.
    Open source →
  13. 0.4.6 19 Aug 2024
    Release notes
    • Add current_max_send_streams() and current_max_recv_streams() to client::SendRequest.
    • Fix sending a PROTOCOL_ERROR instead of REFUSED_STREAM when receiving oversized headers.
    • Fix notifying a PushPromise task properly.
    • Fix notifying a stream task when reset.
    Open source →
  14. 0.4.5 17 May 2024
    Release notes
    • Fix race condition that sometimes hung connections during shutdown.
    • Fix pseudo header construction for CONNECT and OPTIONS requests.
    Open source →
  15. 0.4.4 03 Apr 2024
    Release notes
    • Limit number of CONTINUATION frames for misbehaving connections.
    Open source →
  16. 0.4.3 15 Mar 2024
    Release notes
    • Fix flow control limits to not apply until receiving SETTINGS ack.
    • Fix not returning an error if IO ended without close_notify.
    • Improve performance of decoding many headers.
    Open source →
  17. 0.4.2 17 Jan 2024
    Release notes
    • Limit error resets for misbehaving connections.
    • Fix selecting MAX_CONCURRENT_STREAMS value if no value is advertised initially.
    Open source →
  18. 0.4.1 08 Jan 2024
    Release notes
    • Fix assigning connection capacity which could starve streams in some instances.
    Open source →
  19. 0.4.0 15 Nov 2023
    Release notes
    • Update to http 1.0.
    • Remove deprecated Server::poll_close().
    Open source →
  20. 0.3.27 11 Jul 2025

    Nothing published for this version

  21. 0.3.26 03 Apr 2024

    Nothing published for this version

  22. 0.3.25 15 Mar 2024

    Nothing published for this version

  23. 0.3.24 17 Jan 2024

    Nothing published for this version

  24. 0.3.23 10 Jan 2024

    Nothing published for this version

  25. 0.3.22 15 Nov 2023
    Release notes
    • Add header_table_size(usize) option to client and server builders.
    • Improve throughput when vectored IO is not available.
    • Update indexmap to 2.
    Open source →
  26. 0.3.21 21 Aug 2023
    Release notes
    • Fix opening of new streams over peer's max concurrent limit.
    • Fix RecvStream to return data even if it has received a CANCEL stream error.
    • Update MSRV to 1.63.
    Open source →
  27. 0.3.20 26 Jun 2023
    Release notes
    • Fix panic if a server received a request with a :status pseudo header in the 1xx range.
    • Fix panic if a reset stream had pending push promises that were more than allowed.
    • Fix potential flow control overflow by subtraction, instead returning a connection error.
    Open source →
  28. 0.3.19 12 May 2023
    Release notes
    • Fix counting reset streams when triggered by a GOAWAY.
    • Send too_many_resets in opaque debug data of GOAWAY when too many resets received.
    Open source →
  29. 0.3.18 17 Apr 2023
    Release notes
    • Fix panic because of opposite check in is_remote_local().
    Open source →
  30. 0.3.17 13 Apr 2023 withdrawn
    Release notes
    • Add Error::is_library() method to check if the originated inside h2.
    • Add max_pending_accept_reset_streams(usize) option to client and server builders.
    • Fix theoretical memory growth when receiving too many HEADERS and then RST_STREAM frames faster than an application can accept them off the queue. (CVE-2023-26964)
    Open source →
  31. 0.3.16 27 Feb 2023
    Release notes
    • Set Protocol extension on requests when received Extended CONNECT requests.
    • Remove B: Unpin + 'static bound requiremented of bufs
    • Fix releasing of frames when stream is finished, reducing memory usage.
    • Fix panic when trying to send data and connection window is available, but stream window is not.
    • Fix spurious wakeups when stream capacity is not available.
    Open source →
  32. 0.3.15 24 Oct 2022
    Release notes
    • Remove B: Buf bound on SendStream's parameter
    • add accessor for StreamId u32
    Open source →
  33. 0.3.14 16 Aug 2022
    Release notes
    • Add Error::is_reset function.
    • Bump MSRV to Rust 1.56.
    • Return RST_STREAM(NO_ERROR) when the server early responds.
    Open source →
  34. 0.3.13 31 Mar 2022
    Release notes
    • Update private internal tokio-util dependency.
    Open source →
  35. 0.3.12 09 Mar 2022
    Release notes
    • Avoid time operations that can panic (#599)
    • Bump MSRV to Rust 1.49 (#606)
    • Fix header decoding error when a header name is contained at a continuation header boundary (#589)
    • Remove I/O type names from handshake tracing spans (#608)
    Open source →
  36. 0.3.11 26 Jan 2022
    Release notes
    • Make SendStream::poll_capacity never return Ok(Some(0)) (#596)
    • Fix panic when receiving already reset push promise (#597)
    Open source →
  37. 0.3.10 07 Jan 2022
    Release notes
    • Add Error::is_go_away() and Error::is_remote() methods.
    • Fix panic if receiving malformed PUSH_PROMISE with stream ID of 0.
    Open source →
  38. 0.3.9 09 Dec 2021
    Release notes
    • Fix hang related to new max_send_buffer_size.
    Open source →
  39. 0.3.8 08 Dec 2021
    Release notes
    • Add "extended CONNECT support". Adds h2::ext::Protocol, which is used for request and response extensions to connect new protocols over an HTTP/2 stream.
    • Add 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 receiving malformed HEADERS with stream ID of 0.
    Open source →
  40. 0.3.7 22 Oct 2021
    Release notes
    • Fix panic if server sends a malformed frame on a stream client was about to open.
    • Fix server to treat :status in a request as a stream error instead of connection error.
    Open source →
  41. 0.3.6 30 Sep 2021
    Release notes
    • Fix regression of h2::Error that were created via From<h2::Reason> not returning their reason code in Error::reason().
    Open source →
  42. 0.3.5 29 Sep 2021
    Release notes
    • 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 broken up and sent correctly.
    • Fix buffered data field to be a bigger integer size.
    • Refactor error format to include what initiated the error (remote, local, or user), if it was a stream or connection-level error, and any received debug data.
    Open source →
  43. 0.3.4 20 Aug 2021
    Release notes
    • Fix panic when encoding header size update over a certain size.
    • Fix SendRequest to wake up connection when dropped.
    • Fix potential hang if RecvStream is placed in the request or response extensions.
    • Stop calling Instant::now if zero reset streams are configured.
    Open source →
  44. 0.3.3 29 Apr 2021
    Release notes
    • Fix client being able to make CONNECT requests without a :path.
    • Expose RecvStream::poll_data.
    • Fix some docs.
    Open source →
  45. 0.3.2 25 Mar 2021
    Release notes
    • Fix incorrect handling of received 1xx responses on the client when the request body is still streaming.
    Open source →
  46. 0.3.1 26 Feb 2021
    Release notes
    • Add Connection::max_concurrent_recv_streams() getter.
    • Add Connection::max_concurrent_send_streams() getter.
    • Fix client to ignore receipt of 1xx headers frames.
    • Fix incorrect calculation of pseudo header lengths when determining if a received header is too big.
    • Reduce monomorphized code size of internal code.
    Open source →
  47. 0.3.0 23 Dec 2020
    Release notes
    • Update to Tokio v1 and Bytes v1.
    • Disable tracing's log feature. (It can still be enabled by a user in their own Cargo.toml.)
    Open source →
  48. 0.2.7 23 Oct 2020
    Release notes
    • Fix stream ref count when sending a push promise
    • Fix receiving empty DATA frames in response to a HEAD request
    • Fix handling of client disabling SERVER_PUSH
    Open source →
  49. 0.2.6 13 Jul 2020
    Release notes
    • Integrate tracing directly where log was used. (For 0.2.x, logs are still emitted by default.)
    Open source →
  50. 0.2.5 06 May 2020
    Release notes
    • Fix rare debug assert failure in store shutdown.
    Open source →
  51. 0.2.4 30 Mar 2020
    Release notes
    • Fix when receiving SETTINGS_HEADER_TABLE_SIZE setting.
    Open source →
  52. 0.2.3 25 Mar 2020
    Release notes
    • Fix server being able to accept CONNECT requests without :scheme or :path.
    • Fix receiving a GOAWAY frame from updating the recv max ID, it should only update max send ID.
    Open source →
  53. 0.2.2 03 Mar 2020
    Release notes
    • Reduce size of FlowControl and RecvStream.
    Open source →
  54. 0.2.1 06 Dec 2019
    Release notes
    • Relax Unpin bounds on the send Buf generic.
    Open source →
  55. 0.2.0 03 Dec 2019
    Release notes
    • Add 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).
    • Update to http v0.2.
    • Update to tokio v0.2.
    • Change unstable-stream feature to stream.
    • Change ReserveCapacity to FlowControl (#423).
    • Remove From<io::Error> for Error.
    Open source →
  56. 0.2.0-alpha.3 01 Oct 2019 pre-release
    Release notes
    • Update to futures 0.3.0-alpha.19.
    • Update to tokio 0.2.0-alpha.6.
    Open source →
  57. 0.2.0-alpha.2 20 Sep 2019 pre-release
    Release notes
    • Add server support for PUSH_PROMISEs (#327).
    • Update to tokio 0.2.0-alpha.5.
    • Change stream feature to unstable-stream.
    Open source →
  58. 0.2.0-alpha.1 04 Sep 2019 pre-release
    Release notes
    • Update from futures 0.1 to std::future::Future.
    • Update AsyncRead/AsyncWrite to tokio-io 0.2 alpha.
    • Change 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.
    Open source →
  59. 0.1.26 26 Jul 2019

    Nothing published for this version

  60. 0.1.25 28 Jun 2019
    Release notes
    • Fix to send a RST_STREAM instead of GOAWAY if receiving a frame on a previously closed stream.
    • Fix receiving trailers without an end-stream flag to be a stream error instead of connection error.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive