Hacker ApprovedDepartments

Tokio

The most recommended of 11 concurrency libraries

Default Rust async runtime that people build on for its ecosystem and well-designed libraries; critics say it adds complexity and an ecosystem monoculture.

Default Rust async runtime that people build on for its ecosystem and well-designed libraries; critics say it adds complexity and an ecosystem monoculture.

102 people gave an opinion

recommend it
57
criticize it
45
approval share
56%
Each figure is one person. RecommendsCriticizes

Recommended in 12 of 13 months

  1. November 2025: recommended
  2. December 2025: recommended
  3. January 2026: recommended
  4. February 2026: recommended
  5. March 2026: recommended
  6. April 2026: recommended
  7. May 2026: recommended
  8. June 2026: recommended
  9. July 2026: recommended
  10. August 2026: recommended
  11. September 2026: recommended
  12. October 2026: recommended
  13. November 2026: not recommended (month in progress)

Why it doesn’t carry the badge

  • 57 people recommend itNeeds 10 or more, met.
  • 1.2 recommenders for every criticNeeds 2 to 1 or better, not met.
  • Recommended in 12 of 13 monthsNeeds 4 or more, met.

The same three rules apply to every product, and the badge can’t be bought. How the badge works

What people say about it

The reasons people give, with the number of comments that give each one. Open a reason to read what they said.

Why people recommend it

Each mark is one comment

  • Default choice for async Rust

    “In pretty much every bit of code I've written both professionally and leisurely I have always used tokio.”

    Comment from 5 May 2026 in “Bun is being ported from Zig to Rust”

    “you'd probably just want to center on tokio and axum, then stick to the tokio ecosystem”

    Comment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare”

    “pretty much the default if you aren't in a specific, resource constrained use case”

    Comment from 5 May 2026 in “Async Rust never left the MVP state”
  • Low latency and good performance

    “Tokio was not starved so handled network requests at low latency.”

    Comment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work”

    “Tokio was not starved so handled network requests at low latency”

    Comment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work”

    “the performance of just using tokio is already pretty good”

    Comment from 2 Nov 2025 in “Crossfire: High-performance lockless spsc/mpsc/mpmc channels for Rust”
  • Clean and friendly with Axum

    “Tokio and Axum make it quite friendly, and depending on what you are connecting to it becomes super easy”

    Comment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare”

    “the async models in rust (along with tokio/axum, etc) have been pretty nice and clean in practice”

    Comment from 22 Dec 2025 in “Rue: Higher level than Rust, lower level than Go”

    “Tokio works well because Rust's ownership model overlays with tokio nicely.”

    Comment from 16 Sep 2026 in “Principles for Fast Tokio Applications”
  • Well-designed, enjoyable code to read

    “libs like tokio and actix-web were so well-designed that I actually enjoyed reading the code in my free time”

    Comment from 1 Aug 2026 in “Google fixed more Chrome bugs in June than over the past two years, thanks to AI”

    “I'm both an Erlang programmer and a big fan of Tokio and Rust's async/await implementation”

    Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

    “I'm a big fan of a lot of the things that the tokio project has built”

    Comment from 17 Jul 2026 in “Topcoat: The full full-stack framework for Rust”

What people warn about

Each mark is one comment

  • Complex, forces lifetime and trait issues

    “The particular implementation of async used by Tokio forces a litany of undesirable traits and lifetime issues into your application code.”

    Comment from 3 Dec 2025 in “Zig's new plan for asynchronous programs”

    “tokio does a whole-program transformation that does its most restrictive checking only after all local checks have been resolved”

    Comment from 4 May 2026 in “A Couple Million Lines of Haskell: Production Engineering at Mercury”

    “Tokio is very complex and work-stealing is arguably a very bad default in terms of development complexity”

    Comment from 21 Aug 2026 in “Malicious Rust Crate Arrayref Runs a Build-Time Payload”
  • Heavy compile and dependency footprint

    “Pulling in Tokio makes your project compile an entire thread management system even if you're just compiling Hello World”

    Comment from 5 May 2026 in “Bun is being ported from Zig to Rust”

    “Start with tokio. Please vend one dependency battery included, and vendor in/internalize everything, thanks.”

    Comment from 3 Apr 2026 in “Decisions that eroded trust in Azure – by a former Azure Core engineer”

    “there are costs in portability and supply chain attack surface area when you bring in tokio”

    Comment from 1 Nov 2025 on Hacker News
  • Ecosystem monoculture, poor executor interop

    “a motley bunch of libraries that are written to use particular modes of tokio that don't necessary play well together”

    Comment from 25 Apr 2026 in “What Async Promised and What It Delivered”

    “rather than exposing a common interface for many executors, the Rust async ecosystem went with a Tokio monoculture”

    Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

    “There are issues in particular with core traits for IO or Stream being defined in third-party libraries”

    Comment from 5 May 2026 in “Async Rust never left the MVP state”
  • Poor fit for some workloads

    “Tokio shares one buffer pool for all threads so as you scale to 100+ threads the whole thing grinds to a halt.”

    Comment from 11 Sep 2026 in “We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower”

    “Tokio especially is extremely widely used for all kinds of things it doesn't work well for.”

    Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

    “Tokio's API is not the right one for io_uring, buffer pools for reads changes everything.”

    Comment from 31 May 2026 in “Announcing Rust 1.96”

Other concurrency libraries people recommend

The four most recommended other concurrency libraries, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.

Tokio compared with 4 alternatives
ProductRecommendCriticizeApprovalMonthsOwnedBadge
TokioThis page574556%12——
Akka12957%7——
ZIO11285%9—Approved
Trio Python library100100%8—Approved
core.async9469%6——
See all 11 concurrency libraries, ranked

What people said

40 of the 126 comments that mention it, newest first. Each links to the original comment.

“it will cancel whatever async operation the task is currently running. And it does so reliably.”

RecommendsComment from 27 Sep 2026 in “Go Concurrency Distilled”

“Tokio works well because Rust's ownership model overlays with tokio nicely.”

RecommendsComment from 16 Sep 2026 in “Principles for Fast Tokio Applications”

“channels deserve more emphasis here too, especially because they change the architecture rather than just swapping synchronization primitives”

RecommendsComment from 15 Sep 2026 in “Principles for Fast Tokio Applications”

“A more "correct" approach would be to call tokio::spawn with the future to print AB.”

RecommendsComment from 12 Sep 2026 in “A Design Space Exploration of Async/Await”

“Tokio shares one buffer pool for all threads so as you scale to 100+ threads the whole thing grinds to a halt.”

CriticizesComment from 11 Sep 2026 in “We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower”

“Tokio is very complex and work-stealing is arguably a very bad default in terms of development complexity”

CriticizesComment from 21 Aug 2026 in “Malicious Rust Crate Arrayref Runs a Build-Time Payload”

“All the hard works are done by those skillful maintainers of the language and some core libraries such as tokio.”

RecommendsComment from 20 Aug 2026 in “Rewriting in Rust”

“Tokio was not starved so handled network requests at low latency”

RecommendsComment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work”

“Tokio was not starved so handled network requests at low latency.”

RecommendsComment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work”

“libs like tokio and actix-web were so well-designed that I actually enjoyed reading the code in my free time”

RecommendsComment from 1 Aug 2026 in “Google fixed more Chrome bugs in June than over the past two years, thanks to AI”

“I'm a big fan of a lot of the things that the tokio project has built”

RecommendsComment from 17 Jul 2026 in “Topcoat: The full full-stack framework for Rust”

“rather than exposing a common interface for many executors, the Rust async ecosystem went with a Tokio monoculture”

CriticizesComment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

“For genuine CPU-bound work, submitting to a Rayon worker pool is the way to go.”

MixedComment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

“The docs for Tokio even mention this, and provide a number of worked examples of integrating/bridging sync and async code.”

RecommendsComment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

“I'm both an Erlang programmer and a big fan of Tokio and Rust's async/await implementation”

RecommendsComment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

“Tokio especially is extremely widely used for all kinds of things it doesn't work well for.”

CriticizesComment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency”

“Tokio uses a thread pool with work stealing so it is definitely more advanced than Windows 3.1's model!”

RecommendsComment from 10 Jun 2026 in “Who Runs Your Rust Future? Hands-On Intro to Async Rust”

“Tokio's API is not the right one for io_uring, buffer pools for reads changes everything.”

CriticizesComment from 31 May 2026 in “Announcing Rust 1.96”

“Tokio and Axum make it quite friendly, and depending on what you are connecting to it becomes super easy”

RecommendsComment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare”

“you'd probably just want to center on tokio and axum, then stick to the tokio ecosystem”

RecommendsComment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare”

“pretty much the default if you aren't in a specific, resource constrained use case”

RecommendsComment from 5 May 2026 in “Async Rust never left the MVP state”

“There are issues in particular with core traits for IO or Stream being defined in third-party libraries”

CriticizesComment from 5 May 2026 in “Async Rust never left the MVP state”

“tokio (and C++ equivalents) provide you the flexibility to do more things than the native Python/Node runtime does”

RecommendsComment from 5 May 2026 in “Async Rust never left the MVP state”

“Pulling in Tokio makes your project compile an entire thread management system even if you're just compiling Hello World”

CriticizesComment from 5 May 2026 in “Bun is being ported from Zig to Rust”

“In pretty much every bit of code I've written both professionally and leisurely I have always used tokio.”

RecommendsComment from 5 May 2026 in “Bun is being ported from Zig to Rust”

“you pay an allocation for every future unless you do some complex organization of your futures”

MixedComment from 5 May 2026 in “Bun is being ported from Zig to Rust”

“You shouldn't have to pull in big complex dependencies to do what should be primitive things”

MixedComment from 5 May 2026 in “Bun is being ported from Zig to Rust”

“tokio does a whole-program transformation that does its most restrictive checking only after all local checks have been resolved”

CriticizesComment from 4 May 2026 in “A Couple Million Lines of Haskell: Production Engineering at Mercury”

“The large majority of the concurrent code I write uses nothing specific from the tokio crate, including spawn.”

RecommendsComment from 26 Apr 2026 in “What Async Promised and What It Delivered”

“Tokio can also get mad at you if you nest runtimes within one another on the same thread”

MixedComment from 25 Apr 2026 in “What Async Promised and What It Delivered”

“a motley bunch of libraries that are written to use particular modes of tokio that don't necessary play well together”

CriticizesComment from 25 Apr 2026 in “What Async Promised and What It Delivered”

“Libraries like Tokio (mentioned in the article) have support for this built-in.”

RecommendsComment from 22 Apr 2026 in “What Async Promised and What It Delivered”

“in tokio codebases where the general expectation is that futures will be Send”

RecommendsComment from 11 Apr 2026 in “Surelock: Deadlock-Free Mutexes for Rust”

“Start with tokio. Please vend one dependency battery included, and vendor in/internalize everything, thanks.”

CriticizesComment from 3 Apr 2026 in “Decisions that eroded trust in Azure – by a former Azure Core engineer”

“the async models in rust (along with tokio/axum, etc) have been pretty nice and clean in practice”

RecommendsComment from 22 Dec 2025 in “Rue: Higher level than Rust, lower level than Go”

“The particular implementation of async used by Tokio forces a litany of undesirable traits and lifetime issues into your application code.”

CriticizesComment from 3 Dec 2025 in “Zig's new plan for asynchronous programs”

“So instead I have to go look for a similar function but of the other color, probably from tokio.”

MixedComment from 2 Dec 2025 in “Zig's new plan for asynchronous programs”

“Tokio provides crash-resistant synchronization primitives, but it cannot recover complex structures you've been handling”

MixedComment from 26 Nov 2025 in “Several core problems with Rust”

“the performance of just using tokio is already pretty good”

RecommendsComment from 2 Nov 2025 in “Crossfire: High-performance lockless spsc/mpsc/mpmc channels for Rust”

“there are costs in portability and supply chain attack surface area when you bring in tokio”

CriticizesComment from 1 Nov 2025 on Hacker News

Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.