{"slug": "tokio", "name": "Tokio", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 10, "warners": 0, "score": 4.563, "rising": -0.98, "first": "2025-11-06", "latest": "2026-10-22", "why": "tokio gives me most of the concurrency goodies I like", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 7, "compare": 1, "warn": 0}, "spark": [1, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "tokio gives me most of the concurrency goodies I like", "icon": true, "domain": null, "github_repo": null, "official_url": "https://tokio.rs", "pricing": "", "aliases": ["Tokio", "tokio"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 775506065, "item_id": 48469129, "url": "https://news.ycombinator.com/item?id=48469129", "by": "ianm218", "date": "2026-06-09", "stance": "recommend", "quote": "Tokio (async runtime)", "excerpt": "I have been working on the same problem in other areas. My ultimate goal is to rewrite nginx in Rust passing as much as the upstream tests as possible while leveraging the strongest aspects of Ruts ecosystem - i.e. rustls (modern memory safe OpenSSL), Tokio (async runtime), h2 (http 2 impl) rather than implementing from scratch like the upstream. I started with Lua, then porting over Valkey, and now working on nginx.", "context": "", "use_case": "async runtime in nginx port", "switched_from": "", "story": "Grit: Rewriting Git in Rust with Agents"}, {"id": 760683776, "item_id": 47542736, "url": "https://news.ycombinator.com/item?id=47542736", "by": "tombert", "date": "2026-03-27", "stance": "recommend", "quote": "tokio gives me most of the concurrency goodies I like", "excerpt": "I've been rewriting a lot of my stuff in Rust to save memory. Rust is high-level enough to still be fun for me (tokio gives me most of the concurrency goodies I like), but the memory usage is often like 1/10th or less compared to what I would write in Clojure. Even though I love me some lisp, pretty much all my Clojure utilities are in Rust land now.", "context": "", "use_case": "concurrency in Rust", "switched_from": "", "story": "Everything old is new again: memory optimization"}, {"id": 756883024, "item_id": 47305189, "url": "https://news.ycombinator.com/item?id=47305189", "by": "iamartech", "date": "2026-03-08", "stance": "recommend", "quote": "This system leveraged Tokio for concurrency, TTYD for terminal emulation, and Caddy as the reverse proxy", "excerpt": "Location: New Delhi, India Remote: yes Willing to relocate: yes Technologies: Tokio, Rust lang, Golang, python, linux, concurrent programming, systems programming, databases, REST, GRPC, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1cEYCjcbzGXPWnWAxLT1OHqyfeGLkwuu6aBsM1oWFJtU/edit?usp=sharing Email: ar9tech@outlook.com I am a systems software engineer specializing in low-level software design for backend systems", "context": "systems software engineer job seeker", "use_case": "async runtime for backend", "switched_from": "", "story": "Ask HN: Who wants to be hired? (March 2026)"}, {"id": 733446464, "item_id": 45840404, "url": "https://news.ycombinator.com/item?id=45840404", "by": "iamartech", "date": "2025-11-06", "stance": "recommend", "quote": "This system leveraged Tokio for concurrency, TTYD for terminal emulation, and Caddy as the reverse proxy", "excerpt": "Location: New Delhi, India Remote: yes Willing to relocate: yes Technologies: Tokio, Rust lang, Golang, python, linux, concurrent programming, systems programming, databases, REST, GRPC, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1cEYCjcbzGXPWnWAxLT1OHqyfeGLkwuu6aBsM1oWFJtU/edit?usp=sharing Email: ar9tech@outlook.com I am a systems software engineer specializing in low-level software design for backend systems", "context": "systems software engineer", "use_case": "concurrency runtime for Rust backend", "switched_from": "", "story": "Ask HN: Who wants to be hired? (November 2025)"}]}], "caveats": [], "who": [{"by": "DetroitThrow", "context": "uses Rust daily", "url": "https://news.ycombinator.com/item?id=50196596", "date": "2026-10-22"}, {"by": "brainless", "context": "builds product backends in Rust", "url": "https://news.ycombinator.com/item?id=50065780", "date": "2026-10-13"}, {"by": "okanat", "context": "embedded developer", "url": "https://news.ycombinator.com/item?id=49644830", "date": "2026-09-10"}, {"by": "iamartech", "context": "systems software engineer job seeker", "url": "https://news.ycombinator.com/item?id=47305189", "date": "2026-03-08"}], "tags": [], "use_cases": ["rust async runtime", "async rust applications", "rust async runtime for backends", "async rust runtime", "async runtime for log broker", "async i/o runtime"], "compared": [{"slug": "caddy", "name": "Caddy", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "rayon", "name": "Rayon", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "embassy", "name": "Embassy", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48929587", "title": "The Tokio/Rayon Trap and Why Async/Await Fails Concurrency", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50194938", "title": "Crystal 1.22", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50058528", "title": "A Modern Web App in C", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49643546", "title": "Rust is tier-1 language at Microsoft", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49486334", "title": "TurboKV: Insanely fast Rust key-value store", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48466812", "title": "Grit: Rewriting Git in Rust with Agents", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 1}, "2025-12": {"neutral": 1}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 2}, "2026-04": {}, "2026-05": {}, "2026-06": {"recommend": 1}, "2026-07": {"neutral": 3}, "2026-08": {"compare": 1}, "2026-09": {"neutral": 1}, "2026-10": {"neutral": 2}}, "quotes": [{"id": 803145536, "item_id": 50196596, "url": "https://news.ycombinator.com/item?id=50196596", "by": "DetroitThrow", "date": "2026-10-22", "stance": "neutral", "quote": "even as someone who uses Rust/tokio daily", "excerpt": ">It can often outperform hand-optimized Rust in worst-case parallel workloads (p99), despite Rust having a number of pretty huge advantages... I will say this comes with the asterisk that it heavily depends on what your concurrent system/problems looks like! ...but more often than not when dealing with web problems and network IO, the shape of concurrency/parallelism I need looks exactly like Goroutines, and even as ", "context": "uses Rust daily", "use_case": "async Rust applications", "switched_from": "", "story": "Crystal 1.22"}, {"id": 801052481, "item_id": 50065780, "url": "https://news.ycombinator.com/item?id=50065780", "by": "brainless", "date": "2026-10-13", "stance": "neutral", "quote": "I use frameworks and libraries. Like Tokio, Auxum/Actix Web, Diesel.", "excerpt": "I remember CGI days and I have written tiny web \"features\" with Perl and C many years ago. All my product backends are now in Rust and SQLite but I use frameworks and libraries. Like Tokio, Auxum/Actix Web, Diesel. I am not sure I like the idea that the binary will be called by nginx on each request. I prefer the backend binary to have state. A 256 MiB virtual instance is enough for any software shared between friend", "context": "builds product backends in Rust", "use_case": "Rust async runtime for backends", "switched_from": "", "story": "A Modern Web App in C"}, {"id": 794317280, "item_id": 49644830, "url": "https://news.ycombinator.com/item?id=49644830", "by": "okanat", "date": "2026-09-10", "stance": "neutral", "quote": "tokio and embassy are both runtimes but former is a throughput-optimized heavily multi-threaded", "excerpt": "Rust's async can be very lightweight depending on the runtime implementation. tokio and embassy are both runtimes but former is a throughput-optimized heavily multi-threaded while latter is a simple cooperative multitasking for embedded. We use both at my day job. Even 64k flash and 16k ram is enough for embassy.", "context": "embedded developer", "use_case": "Rust async runtime", "switched_from": "", "story": "Rust is tier-1 language at Microsoft"}, {"id": 791824945, "item_id": 49489059, "url": "https://news.ycombinator.com/item?id=49489059", "by": "VorpalWay", "date": "2026-08-29", "stance": "compare", "quote": "Tokio is definitely not the only reasonable choice.", "excerpt": "Tokio is definitely not the only reasonable choice. I use embassy[1] on microcontrollers (the Pi Pico and ESP32 in my case), where tokio can't run. [1] https://embassy.dev/", "context": "", "use_case": "async Rust runtime", "switched_from": "", "story": "TurboKV: Insanely fast Rust key-value store"}, {"id": 783037616, "item_id": 48939851, "url": "https://news.ycombinator.com/item?id=48939851", "by": "swiftcoder", "date": "2026-07-16", "stance": "neutral", "quote": "Creating unbounded queues in Tokio requires a fair bit of error on the part of the programmer", "excerpt": "> It's not reasonable to expect the application layer to carefully partition its work into \"I/O heavy\" and \"CPU heavy\" parts. If your application has both of these and doesn't partition them, you already have a fundamental flaw in your application architecture. Every serious piece of software does this, from web GUIs, to servers, all the way to video games. > It's not reasonable to queue up an arbitrary amount of wor", "context": "", "use_case": "Rust async runtime", "switched_from": "", "story": "The Tokio/Rayon Trap and Why Async/Await Fails Concurrency"}, {"id": 782900386, "item_id": 48931274, "url": "https://news.ycombinator.com/item?id=48931274", "by": "elendilm", "date": "2026-07-16", "stance": "neutral", "quote": "uses tokio async because it plays nicely with zmq", "excerpt": "I am now trembling at the thought of warriors who will skin me alive :). Jokes aside, there are use cases for rayon, use cases for tokio async, use cases for \"may\" coroutines, use cases for a custom scheduling policy, or use cases for a combination of these. We went with \"may\" coroutines (with its thread pinning) + custom numa work pinning (to a may thread) due to \"may's\" lightweight nature and not having to have our", "context": "", "use_case": "async runtime for log broker", "switched_from": "", "story": "The Tokio/Rayon Trap and Why Async/Await Fails Concurrency"}, {"id": 782893729, "item_id": 48930858, "url": "https://news.ycombinator.com/item?id=48930858", "by": "diarrhea", "date": "2026-07-15", "stance": "neutral", "quote": "multi-threaded Tokio (2 threads)", "excerpt": "Funnily enough, spawn_blocking is not the right tool here. It is meant for blocking I/O, such as DNS lookups, where your platform might not give you anything better. For genuine CPU-bound work, submitting to a Rayon worker pool is the way to go. It solved a runtime starvation issue for us at work, spawn_blocking did not work. The reason for all this is spawn_blocking having a very large underlying thread pool, in the", "context": "", "use_case": "async I/O runtime", "switched_from": "", "story": "The Tokio/Rayon Trap and Why Async/Await Fails Concurrency"}, {"id": 775506065, "item_id": 48469129, "url": "https://news.ycombinator.com/item?id=48469129", "by": "ianm218", "date": "2026-06-09", "stance": "recommend", "quote": "Tokio (async runtime)", "excerpt": "I have been working on the same problem in other areas. My ultimate goal is to rewrite nginx in Rust passing as much as the upstream tests as possible while leveraging the strongest aspects of Ruts ecosystem - i.e. rustls (modern memory safe OpenSSL), Tokio (async runtime), h2 (http 2 impl) rather than implementing from scratch like the upstream. I started with Lua, then porting over Valkey, and now working on nginx.", "context": "", "use_case": "async runtime in nginx port", "switched_from": "", "story": "Grit: Rewriting Git in Rust with Agents"}, {"id": 760683776, "item_id": 47542736, "url": "https://news.ycombinator.com/item?id=47542736", "by": "tombert", "date": "2026-03-27", "stance": "recommend", "quote": "tokio gives me most of the concurrency goodies I like", "excerpt": "I've been rewriting a lot of my stuff in Rust to save memory. Rust is high-level enough to still be fun for me (tokio gives me most of the concurrency goodies I like), but the memory usage is often like 1/10th or less compared to what I would write in Clojure. Even though I love me some lisp, pretty much all my Clojure utilities are in Rust land now.", "context": "", "use_case": "concurrency in Rust", "switched_from": "", "story": "Everything old is new again: memory optimization"}, {"id": 756883024, "item_id": 47305189, "url": "https://news.ycombinator.com/item?id=47305189", "by": "iamartech", "date": "2026-03-08", "stance": "recommend", "quote": "This system leveraged Tokio for concurrency, TTYD for terminal emulation, and Caddy as the reverse proxy", "excerpt": "Location: New Delhi, India Remote: yes Willing to relocate: yes Technologies: Tokio, Rust lang, Golang, python, linux, concurrent programming, systems programming, databases, REST, GRPC, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1cEYCjcbzGXPWnWAxLT1OHqyfeGLkwuu6aBsM1oWFJtU/edit?usp=sharing Email: ar9tech@outlook.com I am a systems software engineer specializing in low-level software design for backend systems", "context": "systems software engineer job seeker", "use_case": "async runtime for backend", "switched_from": "", "story": "Ask HN: Who wants to be hired? (March 2026)"}, {"id": 739012400, "item_id": 46188275, "url": "https://news.ycombinator.com/item?id=46188275", "by": "iamartech", "date": "2025-12-07", "stance": "neutral", "quote": "This system leveraged Tokio for concurrency, TTYD for terminal emulation, and Caddy as the reverse proxy", "excerpt": "Location: New Delhi, India Remote: yes Willing to relocate: yes Technologies: Tokio, Rust lang, Golang, python, linux, concurrent programming, systems programming, databases, REST, GRPC, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1cEYCjcbzGXPWnWAxLT1OHqyfeGLkwuu6aBsM1oWFJtU/edit?usp=sharing Email: ar9tech@outlook.com I am a systems software engineer specializing in low-level software design for backend systems", "context": "systems software engineer seeking work", "use_case": "async runtime for Rust", "switched_from": "", "story": "Ask HN: Who wants to be hired? (December 2025)"}, {"id": 733446464, "item_id": 45840404, "url": "https://news.ycombinator.com/item?id=45840404", "by": "iamartech", "date": "2025-11-06", "stance": "recommend", "quote": "This system leveraged Tokio for concurrency, TTYD for terminal emulation, and Caddy as the reverse proxy", "excerpt": "Location: New Delhi, India Remote: yes Willing to relocate: yes Technologies: Tokio, Rust lang, Golang, python, linux, concurrent programming, systems programming, databases, REST, GRPC, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1cEYCjcbzGXPWnWAxLT1OHqyfeGLkwuu6aBsM1oWFJtU/edit?usp=sharing Email: ar9tech@outlook.com I am a systems software engineer specializing in low-level software design for backend systems", "context": "systems software engineer", "use_case": "concurrency runtime for Rust backend", "switched_from": "", "story": "Ask HN: Who wants to be hired? (November 2025)"}]}