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 1 months 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
check for dead connections in Pool (44af2738, closes #1429)
One column per quarter.
lib: properly handle HTTP/1.0 remotes (36e66a50, closes #1304)
tokio-proto: return end-of-body frame correctly for tokio-proto (14e4c741, closes #1414)
change connection errors to debug log level (2fe90f25, closes #1412)
server: add remote_addr back to Request when using Http::bind (fa7f4377, closes #1410)
client: replace default dispatcher
fix panic when request body is empty string
client: detect valid eof after reading a body (15fdd53d, closes #1396)
return error instead of unmatched response when idle
drop in-use connections when they finish if Client is dropped
server: fix experimental pipeline flushing
http: avoid infinite recursion when Body::from is called with Cow::Owned.
client: fix panic in Pool (0fbc215f, closes #1339)
header: add ContentType::xml() constructor
client: don't assume bodies on 204 and 304 Responses (81c0d185, closes #1242)
A big sweeping set of breaking changes.
ETag parsing (643fac1e)QualityItem parsing (d80aae55)Host header (8541ac72)TransferEncoding if not present (1b4f8579)HttpConnector.enforce_http (1c34a05a)StatusCode by value (d63b7de4)Cookie to be map-like (dd03e723, closes #1145)Cookie::iter() (edc1c0dd)Headers::append_raw (b4b2fb78)Encoding::Brotli variant (f0ab2b6a)header::Raw (#869) (50ccdaa7)TE header struct (#1150) (f1859dfd, closes #1109)HeaderView.raw() (8143c33b)impl Eq for ContentType (bba761ac)Link header implementation (592c1e21, closes #650)star, json, text, image constructors to Accept (bdc19d52)Warning header (69894d19, closes #883)Headers::remove returns the Header (9375addb, closes #891)ContentLocation header (13c5bf66, closes #870)LastEventId header (e1542a60)ReferrerPolicy header (3a86b3a2)FromStr for HttpVersion (47f3aa62)Cookie header is no longer a wrapper over a
Vec<String>. It must be accessed via its get and set methods.(dd03e723)
Quality(num) should change to q(num).(a4644959)
HttpDate no longer has public fields. Convert between
HttpDate and SystemTime as needed.(316c6fad)
link_extensions methods of the Link header are
removed until fixed.(011f28cb)
fmt_header method has changed to take a different
formatter. In most cases, if your header also implements
fmt::Display, you can just call f.fmt_line(self).(6f02d43a)
Encoding enum has an additional variant, Trailers.(f1859dfd)
Origin.scheme and Origin.host now return Options, since the Origin could be null.(41485997)
StatusCode, such as
with an equality comparison, you will need to use the value instead of a
reference.(d63b7de4)
(ec91bf41)
The Url type is no longer used. Any instance in the
Client API has had it replaced with hyper::Uri.
This also means Error::Uri has changed types to
hyper::error::UriError.
The type hyper::header::parsing::HTTP_VALUE has been made private,
as an implementation detail. The function http_percent_encoding
should be used instead.
(4fb7e6eb)
Request.remote_addr an
Option<SocketAddr>, instead of SocketAddr.(e04bcc12)
Preference header had a typo in a variant and it's string representation,
change Preference::HandlingLeniant to Preference::HandlingLenient.
(2fa414fb)Server is no longer the primary entry point. Instead,
an Http type is created and then either bind to receive a Server,
or it can be passed to other Tokio things.
(f45e9c8e)RequestUri has changed to Uri. It is no
longer an enum, but an opaque struct with getter methods.(9036443e)
Encoding enum, which
can break exhaustive matches.(f0ab2b6a)
Host header are no longer
available. Use the getter methods instead.(cd9fd522)
(2d2d5574)
Headers.remove() used to return a bool,
it now returns Option<H>. To determine if a a header exists,
switch to Headers.has().
(9375addb)Header::parse_header now receives &Raw, instead of
a &[Vec<u8>]. Raw provides several methods to ease using it, but
may require some changes to existing code.
(50ccdaa7)hyper::header module.(40745c56)
Removes the undocumented from_u16 function. Use
StatusCode::try_from instead.
Also makes the status module private. All imports of
hyper::status::StatusCode should be hyper::StatusCode.
(f953cafe)
status.class() should change to
equivalent status.is_*() methods.(94ee6204)
Most uses of mime will likely break. There is no more
mime! macro, nor a Mime constructor, nor TopLevel and SubLevel
enums.
Instead, in most cases, a constant exists that can now be used.
For less common mime types, they can be created by parsing a string.
(f273224f)
RawStatus, you must enable the raw_status
crate feature.(acd62cda)
UniCase, but now use
unicase::Ascii. Upgrade code to Ascii::new(s).(c81edd41)
(d35992d0)
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
Nothing published for this version
Nothing published for this version
server: add local_addr to retrieve resolved address
introduce PooledStream:: ::get_ref
server: don't dup the listener TCP socket.
buffer: add from_parts and into_parts functions
Consume entire chunked encoding message
header: implement fmt::Display for several headers
enable SetCookie.fmt_header when only 1 cookie
header: security fix for header values that include newlines
accept (f5d4d653)This technically will cause code that a calls
SetCookie.fmt_header to panic, as it is no longer to properly write
that method. Most people should not be doing this at all, and all
other ways of printing headers should work just fine.
The breaking change must occur in a patch version because of the security nature of the fix.
(2603d78f)
change ProxyConfig to allow HTTPS proxies
cookie dependency (f22701f7)There is no more hyper::http::h2.
(d301c6a1)
The Cookie and SetCookie headers no longer use the
cookie crate. New headers can be written for any header, or the ones
provided in hyper can be accessed as strings.
(f22701f7)
There is no longer a serde-serialization feature.
Look at external crates, like hyper-serde, to fulfill this feature.
(7b9817ed)
hyper will no longer provide OpenSSL support out of the
box. The hyper::net::Openssl and related types are gone. The Client
now uses an HttpConnector by default, which will error trying to
access HTTPS URLs.
TLS support should be added in from other crates, such as hyper-openssl, or similar using different TLS implementations.
(2f48612c)
Usage of with_proxy_config will need to change to
provide a network connector. For the same functionality, a
hyper::net::HttpConnector can be easily created and passed.
(14a4f1c2)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
headers: add star, json, text, image constructors to Accept
client: close Pooled streams on sockopt error
error: re-export url::ParseError
headers: Allow IPv6 Addresses in Host header
#### Features * headers: * add origin header (64881ae0) * Add Referrer-Policy header
headers: Remove raw part when getting mutable reference to typed header (63b61524, closes #821)
client: enable use of custom TLS wrapper for proxied connections (0476196c, closes #824)
proxy: fix the 0.9.x build with --no-default-features --features=security-framework (6caffe9f, closes #819)
client: Manually impl Debug for PooledStream
windows: disable openssl cert validation for Windows (c89aca81, closes #794)
warnings: remove unused_code warnings from newest nightlies
client: fix panic in Pool::connect (e51bafe2, closes #780)
The re-exported Url type has breaking changes.
Nothing published for this version
headers: correctly handle repeated headers (70c69142, closes #683)
ContentType::json() convenience method (ec568e9a)set_write_timeout (7c76fff3)(146df53c)
Nothing published for this version
buffer: fix incorrect resizing of BufReader (3a18e72b, closes #715)
cargo: remove * dependencies for serde and env_logger
NetworkStream
trait, set_read_timeout and set_write_timeout. Any local
implementations will need to add them.(fec6e3e8)
(c747f99d)
Nothing published for this version
response: respond with a 500 if a handler panics
RequestBuilder<U> should be replaced by RequestBuilder.(ff4a6070)
server: use a timeout for Server keep-alive (cdaa2547, closes #368)
Add a stream enum that makes it impossible to lose a stream
Your coding agent can read these notes before it upgrades. Set up the MCP server →