NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #70 most downloaded on crates.io
A protective and efficient HTTP library for all.
Last release 21 days ago
28 Aug 2026
Release timing varies
gaps range from 4 weeks to 7 months
Most releases are documented
notes for 39 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
12 years old
252 releases · first in 2014
client: don't panic in DNS resolution when task cancelled
One column per quarter.
server: fix panic in Connection::graceful_shutdown
http1: try to drain connection buffer if user drops Body
client: rename client::Builder pool options
body: return exactly 0 SizeHint for empty body
http1: fix response with non-chunked transfer-encoding to be close-delimited (cb71d2cd, closes #2058)
HttpBody for Request and Response (4b6099c7, closes #2067)hyper::client::connect::Connect trait alias (2553ea1a)impl Connection (4d7a2266)Destination for http::Uri in connectors (319e8aee)Resolve to be Service<Name> (9d9233ce, closes #1903)Connect trait into an alias for Service (d67e49f1, closes #1902)GaiResolver to use a global blocking threadpool (049b5132)rt::Executor trait (6ae5889f, closes #1944)Future, Stream,
AsyncRead, AsyncWrite, etc) are updated to newer versions.(8f4b05ae)
hyper::Chunk should be replaced with
bytes::Bytes (or hyper::body::Bytes).(5a598757)
Body as a Stream, and constructing one via
Body::wrap_stream, require enabling the stream feature.(511ea388)
GaiResolver::new and HttpConnector::new no
longer should pass an integer argument for the number of threads.(049b5132)
(T, Connected), but a single T: Connection.(4d7a2266)
hyper::client::connect::Destination
should be replaced with http::Uri.(319e8aee)
hyper::body::Payload should be replaced
with hyper::body::HttpBody.(c63728eb)
Any type passed to the executor builder methods must
now implement hyper::rt::Executor.
hyper::rt::spawn usage should be replaced with tokio::task::spawn.
hyper::rt::run usage should be replaced with #[tokio::main] or
managing a tokio::runtime::Runtime manually.
(6ae5889f)
The Resolve trait is gone. All custom resolvers should
implement tower::Service instead.
The error type of HttpConnector has been changed away from
std::io::Error.
(9d9233ce)
Connect must instead
implement tower::Service<Uri>.(d67e49f1)
http1_half_close(true) when configuring a
server.(7e31fd88)
Stream to Server::builder or
Http::serve_incoming must be changed to pass an Accept instead. The
stream optional feature can be enabled, and then a stream can be
converted using hyper::server::accept::from_stream.(b3e55062)
send_data should either be changed to
async/await or use try_send_data.(62a96c07)
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
Nothing published for this version
body: identify aborted body write errors
client: allow client GET requests with explicit body headers (23fc8b08, closes #1925)
Nothing published for this version
client: HttpConnector: allow to set socket buffer sizes
HttpConnector: allow to set socket buffer sizes (386109c4)Nothing published for this version
http1: force always-ready connections to yield after a few spins
server: skip automatic Content-Length header for HTTP 304 responses (b342c38f, closes #1797)
detect HTTP2 connection closures sooner
http2: fix import of h2::Reason to work on 1.26
http2: send a GOAWAY when the user's Service::poll_ready errors
client: coerce HTTP_2 requests to HTTP_11 (3a6080b1, closes #1770)
client: fix panic when CONNECT request doesn't have a port
http2: revert http2 refactor causing a client hang
client: parse IPv6 hosts correctly in HttpConnector
add Destination::try_from_uri constructor
dependencies: disable unneeded optional tokio features (e5135dd6, closes #1739)
rt: prevent fallback reactor thread from being created accidentally
server: add server::AddrIncoming::bind constructor
server::conn::AddrIncoming::bind constructor (2d5eabde)error: add Error::is_connect method
client: fix connection leak when Response finishes before Request body (e455fa24, closes #1717)
client: add client::Builder::executor method
header: fix panic when parsing header names larger than 64kb
add Resolve, used by HttpConnector (2d5af177, closes #1517)
armv7: split record_header_indices loop to work around rustc/LLVM bug
client: allow calling Destination::set_host with IPv6 addresses (af5e4f3e, closes #1661)
http1: fix title-case option when header names have symbols
http2: allow TE "trailers" request headers (24f11a42, closes #1642)
server: coerce responses with HTTP2 version to HTTP/1.1 when protocol is 1.x
http1: reduce closed connections when body is dropped
add ability to include SO_REUSEADDR option on sockets (13862d11, closes #1599)
Nothing published for this version
fix keep-alive header detection when parsing responses
client: enable CONNECT requests through the Client
implement graceful_shutdown for HTTP2 server connections (b7a0c2d5, closes #1550)
lib: remove deprecated tokio-proto APIs
poll_without_shutdown() (#1530) (c6e90b7b)Clone for Destination (15188b7c)FutureResponse to ResponseFuture (04c74ef5)HttpConnector (b6a3c85d, closes #1498)SO_NODELAY on client HTTP sockets (016d79ed, closes #1473)Clients (fe1578ac)Connect trait (8c52c2df, closes #1428)hyper::Error type (5d3c4722, closes #1128, #1130, #1431, #1338)Service (2dc6202f, closes #1461)Body::is_empty() is gone. Replace with
Body::is_end_stream(), from the Payload trait.
(19f90242)
Each payload chunk must implement Buf, instead of
just AsRef<[u8]>.
(a3be110a)
Replace any references of
hyper::client::FutureResponse to hyper::client::ResponseFuture.
(04c74ef5)
The Service trait has changed: it has some changed
associated types, and call is now bound to &mut self.
The NewService trait has changed: it has some changed associated
types, and new_service now returns a Future.
Client no longer implements Service for now.
hyper::server::conn::Serve now returns Connecting instead of
Connections, since new_service can now return a Future. The
Connecting is a future wrapping the new service future, returning
a Connection afterwards. In many cases, Future::flatten can be
used.
(2dc6202f)
The Server is no longer created from Http::bind,
nor is it run. It is a Future that must be polled by an
Executor.
The hyper::server::Http type has move to
hyper::server::conn::Http.
(c4974500)
Client:new(&handle) and Client::configure() are now
Client::new() and Client::builder().
(fe1578ac)
Error is no longer an enum to pattern match over, or
to construct. Code will need to be updated accordingly.
For body streams or Services, inference might be unable to determine
what error type you mean to return.
(5d3c4722)
All uses of Handle now need to be new-tokio Handle.
(27b8db3a)
Custom connectors should now implement Connect
directly, instead of Service.
Calls to connect no longer take Uris, but Destination. There
are scheme, host, and port methods to query relevant
information.
The returned future must be a tuple of the transport and Connected.
If no relevant extra information is needed, simply return
Connected::new().
(8c52c2df)
All code that was generic over the body as Stream must
be adjusted to use a Payload instead.
hyper::Body can still be used as a Stream.
Passing a custom impl Stream will need to either implement
Payload, or as an easier option, switch to Body::wrap_stream.
Body::pair has been replaced with Body::channel, which returns a
hyper::body::Sender instead of a futures::sync::mpsc::Sender.
(fbc449e4)
Method, Request, Response, StatusCode,
Version, and Uri have been replaced with types from the http
crate.
(3cd48b45)
Method are now uppercase, for instance, Method::Get is now Method::GET.StatusCode are now uppercase, for instance, StatusCode::Ok is now StatusCode::OK.Version are now uppercase, for instance, HttpVersion::Http11 is now Version::HTTP_11.The typed headers from hyper::header are gone for now.
The http::header module is re-exported as hyper::header.
For example, a before setting the content-length:
use hyper::header::ContentLength;
res.headers_mut().set(ContentLength(15));
And now after, with the http types:
use hyper::header::{CONTENT_LENGTH, HeaderValue};
res.headers_mut().insert(CONTENT_LENGTH, HeaderValue::from_static("15"));
(3cd48b45)
The mime crate is no longer re-exported as hyper::mime.
The typed headers don't exist, and so they do not need the mime crate.
To continue using mime for other purposes, add it directly to your Cargo.toml
as a dependency.
(3cd48b45)
Removed compat cargo feature, and compat related API. This was the conversion methods for hyper's
types to and from http crate's types.
(3cd48b45)
Removed deprecated APIs: (a37e6b59)
server-proto cargo feature, which included impl ServerProto for Http, and related associated types.client::Config::no_proto()tokio_proto::streaming::Body::from(hyper::Body)hyper::Body::from(tokio_proto::streaming::Body)hyper::Body::from(futures::sync::mpsc::Receiver)Http::no_proto()Nothing published for this version
client: prevent pool checkout looping on not-ready connections (ccec79da, closes #1519)
server: add Server::run_threads to run on multiple threads
client: ensure idle connection is pooled before response body finishes
header: remove charset=utf8 from ContentType::text()
ContentType::text() (ba789e65)server: prevent to output Transfer-encoding when server upgrade
client: return error if Request has CONNECT method
check conn is closed in expire interval
Make sleep_on_errors configurable and use it in example
prevent empty bodies sending transfer-encoding for GET, HEAD
client: send an Error::Cancel if a queued request is dropped
client: more reliably detect closed pooled connections
Your coding agent can read these notes before it upgrades. Set up the MCP server →