HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
quinn-rs
quinn
Rust2019–2026
quinn-rs / quinn

quinn

Async-friendly QUIC implementation in Rust

16Distinct people
19Mentions
0Explicit recommenders
5.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Async-friendly QUIC implementation in Rust

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year19 dated mentions

Observed mentions: 2019-01-17 21:20:13 UTC to 2026-03-19 18:40:25 UTC.

02462019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC615
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

What Hacker News says

19 sources
ah very sorry, I can see how this isn't all that clear. In the comment you've mentioned when I say "custom protocol" I mean a custom QUIC ALPNs: https://datatracker.ietf.org/doc/html/rfc7301 When we talk to mainline it's for discovery, which is separate from iroh connections, which always uses QUIC. Specifically: our fork of quinn, an implementation of QUIC in rust. Iroh is tightly coupled to quinn, and isn't swappable. Getting no_std support for us basically boils down to "can we get quinn to support no_std?". For that, see: https://github.com/quinn-rs/quinn/issues/579
In Iroh: A library to establish direct connection between peers
Since it lives on top of UDP, I believe all you need is SOCK_DGRAM, right? The rest of QUIC can be in a userspace library ergonomically designed for your programming language e.g. https://github.com/quinn-rs/quinn - and can interoperate with others who have made different choices. Alternately, if you need even higher performance, DPDK gives the abstractions you'd need; see e.g. https://dl.acm.org/doi/abs/10.1145/3565477.3569154 on performance characteristics.
In HTTP/3 adoption is growing rapidly
> Making things thread safe for runtime-agnostic utilities like WebSocket is yet another price we pay for making everything multi-threaded by default. The standard way of doing what I'm doing in my code above would be to spawn one of the loops on a separate background task, which could land on a separate thread, meaning we must do all that synchronization to manage reading and writing to a socket from different threads for no good reason. Why so? Libraries like quinn[1] define "no IO" crate to define runtime-agnostic protocol implementation. In this way we won't suffer by forcing ourselves using synchronization primitives. Also, IMO it's relatively easy to use Send-bounded future in non-Send(i.o.w. single-threaded) runtime environment, but it's almost impossible to do opposite. Ecosystem users can freely use single threaded async runtime,
Read the rest
but ecosystem providers should not. If you want every users to only use single threaded runtime, it's a major loss for the Rust ecosystem. Typechecked Send/Sync bounds are one of the holy grails that Rust provides. Albeit it's overkill to use multithreaded async runtimes for most users, we should not abandon them because it opens an opportunity for high-end users who might seek Rust for their high-performance backends. [1]: https://github.com/quinn-rs/quinn
In Local async executors and why they should be the default
Anecdotal evidence, but many large rust async code bases perform significantly better if you are using a single threaded runtime vs. a multithreaded runtime. Here is an issue for the quinn crate that implements QUIC: https://github.com/quinn-rs/quinn/issues/1433 We have had very similar experiences when developing https://github.com/n0-computer/iroh And this is with quinn still carrying around the synchronization primitives to make everything Send. Another piece of anecdotal evidence: the functional collection library https://github.com/bodil/im-rs comes in two flavours: one using Arc and one using Rc. The reason for this is that you get a significant performance increase by using Rc (where manipulating the refcount is just an integer inc/dec) vs Arc where manipulating the refcount needs to be an atomic op. Last but not least - often maki
Read the rest
ng futures Send requires you to box your futures. Send and lifetimes just does not play well together. Do something like this: trait Foo { type OpFut<'a>: Future<Output = ()> + 'a; fn op(&self) -> Self::OpFut<'_> } This is what eventually you would want something like async_trait to desugar to. Use the above in a Send context, and you get a completely undecipherable higher-ranked lifetime error. So you are back to boxing all futures.
In Local async executors and why they should be the default
You can use `Futures::StreamExt::buffer_unordered` for this. [1] is an example where I used it for benchmark which creates a certain amount of QUIC connections at a time. But you can also spawn all tasks upfront via `tokio::spawn`, and let them wait on a `tokio::sync::Semaphore` before making the request. The drawback of this is that you might allocate more memory for tasks upfront - but if you don't have an extremely high number it might not matter. [1] https://github.com/quinn-rs/quinn/blob/de627437bc7d836564c36...
In Show HN: Voyager – write a web crawler/scraper as a state machine in Rust
I'm unifying Rust's async HTTP implementations H1, H2, H3 and Google's tarpc in Rust~Actix~Torchbear. I just don't have a lot of time now sice my house got broken and I don't have enough money to rent anywhere. It also needs a lot of work on the parsing layer, and the laptops with my notes on them are hard to keep with me as I move around. https://github.com/google/tarpc https://github.com/actix/actix-web/tree/master/actix-http/sr... https://github.com/hyperium/h2 https://github.com/djc/quinn/tree/main/quinn-h3 https://github.com/speakeasy-engine/torchbear/blob/master/sr... ~ There's beauty in this with the fluency in which complex applications like the coming secure social network, Radiojade, are built. See this example: !# https://github.com/foundpatternscellar/ping-pong/blob/master... Curl users, do you really want to stick with Bash'
Read the rest
s syntax instead of this??
In Memory safe ‘curl’ for a more secure internet
Thank you for openly discussing this. Ralith has mostly responded in terms of the API our quinn-proto offers; it seems like you and/or ghedo may have missed that? I just also wanted to respond to this: > nor would they likely be able to add the interfaces we need in a reasonable timescale, nor would they likely tolerate our requests to do so. I have a pretty different perspective on this: I've offered opportunities for collaboration from the moment ghedo started quiche in his free time, and explicitly offered to make changes to quinn{,-proto} to be able to do the kind of things that you might need when it was clear Cloudflare would be adopting quiche as well. As an example, I mentioned making our TLS implementation pluggable, something we started doing anyway over the past week (see https://github.com/djc/quinn/pull/211 and https://github
Read the rest
In Quiche – An implementation of the QUIC transport protocol in Rust
I still don't quite understand why Cloudflare is going their own way rather than joining our Rust implementation (https://github.com/djc/quinn). So far the primary maintainer told me "I quite like how quiche has turned out, and we already started integrating into internal stuff", which I haven't found very satisfying. Perhaps they just want to strategically own their own stack, but it seems to me aligning with the broader Rust ecosystem and getting features for free from the community would also bring some value. Initially I thought it was mainly about integrating with BoringSSL rather than ring and rustls, but even the promise of pluggable crypto didn't seem to affect their decision. Would be nice to have more clarity on this. (Previously they were happy enough to use Quinn for their Noise experiment, although without crediting our proje
Read the rest
ct explicitly in the resulting paper.)
In Quiche – An implementation of the QUIC transport protocol in Rust

Showing the 15 most recent of 19 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.