Sean McArthur
@seanmonstar.com
Open Source maintainer of the rust-lang @hyper.rs.
More at seanmonstar.com
More at seanmonstar.com
Reposted by Sean McArthur
New blog post: Cancelling async #rustlang!
This is a written version of my talk at #RustConf 2025, where I talk about the joys and sorrows of future cancellations in Rust, with lessons from our work at @oxide.computer. Includes a video of the talk as well. Check it out!
This is a written version of my talk at #RustConf 2025, where I talk about the joys and sorrows of future cancellations in Rust, with lessons from our work at @oxide.computer. Includes a video of the talk as well. Check it out!
Cancelling async Rust ꞏ sunshowers
Correctness in the face of cancellations: a written version of my talk at RustConf 2025.
sunshowers.io
October 3, 2025 at 4:01 PM
New blog post: Cancelling async #rustlang!
This is a written version of my talk at #RustConf 2025, where I talk about the joys and sorrows of future cancellations in Rust, with lessons from our work at @oxide.computer. Includes a video of the talk as well. Check it out!
This is a written version of my talk at #RustConf 2025, where I talk about the joys and sorrows of future cancellations in Rust, with lessons from our work at @oxide.computer. Includes a video of the talk as well. Check it out!
Reposted by Sean McArthur
The TokioConf 2026 call for talk proposals is now open! tokio.rs/blog/2025-09...
The TokioConf 2026 Call For Talk Proposals is now open | Tokio - An asynchronous Rust runtime
Tokio is a runtime for writing reliable asynchronous applications with Rust. It provides async I/O, networking, scheduling, timers, and more.
tokio.rs
September 26, 2025 at 5:55 PM
The TokioConf 2026 call for talk proposals is now open! tokio.rs/blog/2025-09...
I've been working on a proposal for composable HTTP pool utilities for hyper-util, several of them have implementation PRs linked at the bottom. I welcome any feedback! #rustlang
github.com/hyperium/hyp...
github.com/hyperium/hyp...
Proposal: hyper-util composable pool services · Issue #3948 · hyperium/hyper
Problem hyper's "legacy" pool did many things at once, and needed to support the ability to turn off various parts of it. Users often ask to be able to customize parts of the connection pool. Eithe...
github.com
September 16, 2025 at 3:48 PM
I've been working on a proposal for composable HTTP pool utilities for hyper-util, several of them have implementation PRs linked at the bottom. I welcome any feedback! #rustlang
github.com/hyperium/hyp...
github.com/hyperium/hyp...
Reposted by Sean McArthur
We received reports of a phishing campaign targeting crates.io users. Do not click on links asking to authenticate to protect your account. More information: blog.rust-lang.org/2025/09/12/c...
crates.io phishing campaign | Rust Blog
Empowering everyone to build reliable and efficient software.
blog.rust-lang.org
September 12, 2025 at 2:22 PM
We received reports of a phishing campaign targeting crates.io users. Do not click on links asking to authenticate to protect your account. More information: blog.rust-lang.org/2025/09/12/c...
I was recently on the Netstack.fm podcast, and had a fun time talking with Glen about:
- the beginning of hyper, and async #rustlang
- as the ecosystem grew
- the development of crates like hyper-util, headers, warp, reqwest
- being independent
- 5 years from now
seanmonstar.com/blog/podcast...
- the beginning of hyper, and async #rustlang
- as the ecosystem grew
- the development of crates like hyper-util, headers, warp, reqwest
- being independent
- 5 years from now
seanmonstar.com/blog/podcast...
Podcast: Netstack.fm, story of Rust's networking with hyper
Last week I was a guest on the Netstack podcast. We talked abit about how I got into Rust, how async Rust developed, and the story behind hyper and its surro...
seanmonstar.com
September 2, 2025 at 1:36 PM
I was recently on the Netstack.fm podcast, and had a fun time talking with Glen about:
- the beginning of hyper, and async #rustlang
- as the ecosystem grew
- the development of crates like hyper-util, headers, warp, reqwest
- being independent
- 5 years from now
seanmonstar.com/blog/podcast...
- the beginning of hyper, and async #rustlang
- as the ecosystem grew
- the development of crates like hyper-util, headers, warp, reqwest
- being independent
- 5 years from now
seanmonstar.com/blog/podcast...
A new HTTP/2 MadeYouReset vulnerability disclosed (VU#767506).
@hyper.rs handles it just fine, but we also provided some patches to help.
#rustlang #security
seanmonstar.com/blog/hyper-h...
@hyper.rs handles it just fine, but we also provided some patches to help.
#rustlang #security
seanmonstar.com/blog/hyper-h...
hyper HTTP/2 (Didn't) MadeYouReset
A new HTTP/2 attack vector was disclosed today called MadeYouReset. hyper’s h2 is negligably affected, weathering the attack well. But, we have provided patc...
seanmonstar.com
August 13, 2025 at 12:51 PM
A new HTTP/2 MadeYouReset vulnerability disclosed (VU#767506).
@hyper.rs handles it just fine, but we also provided some patches to help.
#rustlang #security
seanmonstar.com/blog/hyper-h...
@hyper.rs handles it just fine, but we also provided some patches to help.
#rustlang #security
seanmonstar.com/blog/hyper-h...
Reposted by Sean McArthur
Really excited about the #rustlang reqwest v0.12.23 just out! 🦀
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
Release v0.12.23 · seanmonstar/reqwest
tl;dr
🇺🇩🇸 Add ClientBuilder::unix_socket(path) option that will force all requests over that Unix Domain Socket.
🔁 Add ClientBuilder::retries(policy) and reqwest::retry::Builder to configure autom...
github.com
August 12, 2025 at 2:02 PM
Really excited about the #rustlang reqwest v0.12.23 just out! 🦀
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
Really excited about the #rustlang reqwest v0.12.23 just out! 🦀
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
Release v0.12.23 · seanmonstar/reqwest
tl;dr
🇺🇩🇸 Add ClientBuilder::unix_socket(path) option that will force all requests over that Unix Domain Socket.
🔁 Add ClientBuilder::retries(policy) and reqwest::retry::Builder to configure autom...
github.com
August 12, 2025 at 2:02 PM
Really excited about the #rustlang reqwest v0.12.23 just out! 🦀
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
- Introduces `reqwest::retry`, an easy builder to make safe automatic retries.
- Adds Unix Domain Socket support.
- And of course more.
github.com/seanmonstar/...
Reposted by Sean McArthur
Here's the write up for the `warp` v0.4 release!
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
warp v0.4
Yesterday, warp v0.4 was released. warp is a Rust web server framework, with a focus on functional programming and type system routing.
seanmonstar.com
August 6, 2025 at 3:16 PM
Here's the write up for the `warp` v0.4 release!
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
Here's the write up for the `warp` v0.4 release!
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
warp v0.4
Yesterday, warp v0.4 was released. warp is a Rust web server framework, with a focus on functional programming and type system routing.
seanmonstar.com
August 6, 2025 at 3:16 PM
Here's the write up for the `warp` v0.4 release!
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
- Filters remain the focus
- Upgrade to hyper v1
- Crate features on a diet
- Iterating on the Server builder (and API design in general)
seanmonstar.com/blog/warp-v04/
#rustlang
So far we've backported important fixes to #rustlang hyper v0.14, but after almost 2 years, I think that's pretty close to done.
Please upgrade to v1 to get the latest fixes.
Please upgrade to v1 to get the latest fixes.
August 5, 2025 at 7:41 PM
So far we've backported important fixes to #rustlang hyper v0.14, but after almost 2 years, I think that's pretty close to done.
Please upgrade to v1 to get the latest fixes.
Please upgrade to v1 to get the latest fixes.
Reposted by Sean McArthur
Just released #rustlang warp v0.4! 🦀
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
Release v0.4.0 · seanmonstar/warp
Changes:
Upgrade to hyper, http, and http-body to v1.
Remove multipart and websocket features from being enabled by default.
Put warp::serve() behind a server feature, not enabled by default.
Put ...
github.com
August 5, 2025 at 3:30 PM
Just released #rustlang warp v0.4! 🦀
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
Just released #rustlang warp v0.4! 🦀
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
Release v0.4.0 · seanmonstar/warp
Changes:
Upgrade to hyper, http, and http-body to v1.
Remove multipart and websocket features from being enabled by default.
Put warp::serve() behind a server feature, not enabled by default.
Put ...
github.com
August 5, 2025 at 3:30 PM
Just released #rustlang warp v0.4! 🦀
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
This includes an upgrade to hyper v1, and cleans up the crate features a bit so you can choose what to enable (less is on by default).
Most of the API stayed the same (the examples and tests barely needed any changing). 🚀
github.com/seanmonstar/...
Considering reqwest should default to faster TCP disconnection: github.com/seanmonstar/...
fix: add default tcp keepalive and user_timeout values by seanmonstar · Pull Request #2780 · seanmonstar/reqwest
It seems reasonable for an "opinionated" HTTP client to help detect dead connections faster.
github.com
July 30, 2025 at 3:17 PM
Considering reqwest should default to faster TCP disconnection: github.com/seanmonstar/...
Hm, I wonder why that change was made...
git blame: "Me, 8 years ago"
*emotional damage*
git blame: "Me, 8 years ago"
*emotional damage*
July 29, 2025 at 6:33 PM
Hm, I wonder why that change was made...
git blame: "Me, 8 years ago"
*emotional damage*
git blame: "Me, 8 years ago"
*emotional damage*
Reposted by Sean McArthur
I’ve been maintaining the Rust flamegraph implementation for three years, releasing about every 3 months on average. Consider sponsoring my work if it’s been valuable to you(r team).
Cargo flamegraph's new version uses Xcode's tracer under the hood, so flamegraphing your rust code no longer requires sudo (which then messes up permissions on your build artifacts). It's a small thing but it's made flamegraphing my Rust code on MacOS so much more pleasant.
July 20, 2025 at 2:09 AM
I’ve been maintaining the Rust flamegraph implementation for three years, releasing about every 3 months on average. Consider sponsoring my work if it’s been valuable to you(r team).
Exploring easy HTTP redirects in #rustlang reqwest! 🦀
This adds a builder to configure how retries work, while helping you do so responsibly. And the goal is to upstream what we can to tower.
seanmonstar.com/blog/reqwest...
This adds a builder to configure how retries work, while helping you do so responsibly. And the goal is to upstream what we can to tower.
seanmonstar.com/blog/reqwest...
reqwest retries
One part of working on a more modular reqwest was adding support for retries.
seanmonstar.com
July 15, 2025 at 2:48 PM
Exploring easy HTTP redirects in #rustlang reqwest! 🦀
This adds a builder to configure how retries work, while helping you do so responsibly. And the goal is to upstream what we can to tower.
seanmonstar.com/blog/reqwest...
This adds a builder to configure how retries work, while helping you do so responsibly. And the goal is to upstream what we can to tower.
seanmonstar.com/blog/reqwest...
Want to help #rustlang reqwest switch its default to rustls? Here's the medium-effort mentored issue: github.com/seanmonstar/...
Switch default TLS to rustls · Issue #2723 · seanmonstar/reqwest
We want to change the default TLS library used by reqwest from native-tls to rustls. We will still offer native-tls as an option, since some people need it for some reason or another. But the vast ...
github.com
June 23, 2025 at 5:48 PM
Want to help #rustlang reqwest switch its default to rustls? Here's the medium-effort mentored issue: github.com/seanmonstar/...
Reposted by Sean McArthur
Hello World! Announcing the inaugural TokioConf. April 20-22, 2026, in Portland, OR. tokio.rs/blog/2025-06...
Announcing TokioConf 2026 | Tokio - An asynchronous Rust runtime
Tokio is a runtime for writing reliable asynchronous applications with Rust. It provides async I/O, networking, scheduling, timers, and more.
tokio.rs
June 19, 2025 at 6:31 PM
Hello World! Announcing the inaugural TokioConf. April 20-22, 2026, in Portland, OR. tokio.rs/blog/2025-06...
New #rustlang reqwest v0.12.16 out now! 🦀
- Several HTTP/3 improvements.
- A redirect limit off-by-1 fix.
- Add headers for a proxy.
Includes internal refactors of types now in hyper-util or tower, like redirects, proxy matchers, and proxy connectors!
github.com/seanmonstar/...
- Several HTTP/3 improvements.
- A redirect limit off-by-1 fix.
- Add headers for a proxy.
Includes internal refactors of types now in hyper-util or tower, like redirects, proxy matchers, and proxy connectors!
github.com/seanmonstar/...
Release v0.12.16 · seanmonstar/reqwest
Highlights
Add ClientBuilder::http3_congestion_bbr() to enable BBR congestion control.
Add ClientBuilder::http3_send_grease() to configure whether to send use QUIC grease.
Add ClientBuilder::http3...
github.com
May 27, 2025 at 7:54 PM
New #rustlang reqwest v0.12.16 out now! 🦀
- Several HTTP/3 improvements.
- A redirect limit off-by-1 fix.
- Add headers for a proxy.
Includes internal refactors of types now in hyper-util or tower, like redirects, proxy matchers, and proxy connectors!
github.com/seanmonstar/...
- Several HTTP/3 improvements.
- A redirect limit off-by-1 fix.
- Add headers for a proxy.
Includes internal refactors of types now in hyper-util or tower, like redirects, proxy matchers, and proxy connectors!
github.com/seanmonstar/...
New #rustlang hyper-util v0.1.12 out now!
This one has the things. Part of making reqwest "more modular".
- A proxy matcher type that can use environment/system variables.
- SOCKS and HTTP Tunnel connector adapters.
- Graceful shutdown made more flexible.
- Bug fixes!
github.com/hyperium/hyp...
This one has the things. Part of making reqwest "more modular".
- A proxy matcher type that can use environment/system variables.
- SOCKS and HTTP Tunnel connector adapters.
- Graceful shutdown made more flexible.
- Bug fixes!
github.com/hyperium/hyp...
Release v0.1.12 · hyperium/hyper-util
tl;dr
Add client::legacy::proxy::Tunnel connector that wraps another connector with HTTP tunneling.
Add client::legacy::proxy::{SocksV4, SocksV5} connectors that wraps another connector with SOCKS...
github.com
May 19, 2025 at 7:27 PM
New #rustlang hyper-util v0.1.12 out now!
This one has the things. Part of making reqwest "more modular".
- A proxy matcher type that can use environment/system variables.
- SOCKS and HTTP Tunnel connector adapters.
- Graceful shutdown made more flexible.
- Bug fixes!
github.com/hyperium/hyp...
This one has the things. Part of making reqwest "more modular".
- A proxy matcher type that can use environment/system variables.
- SOCKS and HTTP Tunnel connector adapters.
- Graceful shutdown made more flexible.
- Bug fixes!
github.com/hyperium/hyp...
I have this suspicion that as JavaScript devs get a taste through TypeScript, they started to desire a much better type system and end up in #rustlang.
Was that you?
Was that you?
May 12, 2025 at 3:10 PM
I have this suspicion that as JavaScript devs get a taste through TypeScript, they started to desire a much better type system and end up in #rustlang.
Was that you?
Was that you?
A new @hyper.rs proposal: Body::poll_progress
When piping a body into a sink, how can we forward cancelation when backpressure is applied?
#rustlang 🦀
seanmonstar.com/blog/body-po...
When piping a body into a sink, how can we forward cancelation when backpressure is applied?
#rustlang 🦀
seanmonstar.com/blog/body-po...
Body::poll_progress
This describes a proposal for a cancelation problem with hyper’s request and response bodies. hyper is an HTTP library for the Rust language.
seanmonstar.com
April 22, 2025 at 2:10 PM
A new @hyper.rs proposal: Body::poll_progress
When piping a body into a sink, how can we forward cancelation when backpressure is applied?
#rustlang 🦀
seanmonstar.com/blog/body-po...
When piping a body into a sink, how can we forward cancelation when backpressure is applied?
#rustlang 🦀
seanmonstar.com/blog/body-po...
I'm so excited to welcome katelyn martin as a @hyper.rs Collaborator! 🎉🎉
#rustlang 🦀
hyper.rs/blog/2025/04...
#rustlang 🦀
hyper.rs/blog/2025/04...
Welcome katelyn martin
We’re thrilled to welcome katelyn martin (@cratelyn) as a hyper Collaborator. katelyn first contributed back in 2020, and more recently has been improving various utilities and documentation. Some hig...
hyper.rs
April 21, 2025 at 5:54 PM
I'm so excited to welcome katelyn martin as a @hyper.rs Collaborator! 🎉🎉
#rustlang 🦀
hyper.rs/blog/2025/04...
#rustlang 🦀
hyper.rs/blog/2025/04...
Another case where I don't like booleans: `filter`.
Because of natural English, my brain assumes I'm "filtering out" things, but programming usually wants me to ... filter in? Keep whatever is true.
Because of natural English, my brain assumes I'm "filtering out" things, but programming usually wants me to ... filter in? Keep whatever is true.
April 21, 2025 at 2:25 PM
Another case where I don't like booleans: `filter`.
Because of natural English, my brain assumes I'm "filtering out" things, but programming usually wants me to ... filter in? Keep whatever is true.
Because of natural English, my brain assumes I'm "filtering out" things, but programming usually wants me to ... filter in? Keep whatever is true.