Rust's Journey to Async/Await
InfoQ5 HN recommenders · recommended in 4 months, 2020–2026
talk · intermediate · evergreen · 2020–2026 on HN
Steve Klabnik walks through the history of Rust and how its design evolved toward async/await, including the alternatives tried and dropped. He also discusses the difficulty of adding a major feature to a language.
HN points to it to show how deliberately the Rust team arrived at async/await and why it was chosen over alternatives like green threads.
Up next
5 mo on HN"Clean" Code, Horrible Performance
Molly Rocket
3 HN recommender · 2023–2026
4 mo on HNRustLatam 2019 - Without Boats: Zero-Cost Async IO
Rust Programming Language
5 HN recommender · 2019–2020
7 mo on HNClean Code - Uncle Bob / Lesson 1
UnityCoin
6 HN recommender · 2020–2026
8 mo on HN"Simple Made Easy" - Rich Hickey (2011)
ClojureTV
9 HN recommender · 2021–2026
4 mo on HNWho else benefits from the Dutch cycling infrastructure
BicycleDutch
3 HN recommender · 2017–2026
9 mo on HNHow the Dutch got their cycle paths
BicycleDutch
9 HN recommender · 2013–2022
1 mo on HNVredenburg, Utrecht. Busiest cycle path in the Netherlands
BicycleDutch
1 HN recommend · 2018–2024
13 mo on HNRich Harris - Rethinking reactivity
You Gotta Love Frontend
15 HN recommender · 2019–2026
11 mo on HNCppCon 2015: Andrei Alexandrescu “std::allocator...”
CppCon
7 HN recommender · 2017–2025
12 mo on HNLexical Scanning in Go - Rob Pike
GoogleFOSSSydney
13 HN recommender · 2012–2025
10 mo on HNCppCon 2017: Matt Kulukundis “Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step”
CppCon
9 HN recommender · 2018–2026
9 mo on HNRustConf 2018 - Closing Keynote - Using Rust For Game Development by Catherine West
Rust Programming Language
9 HN recommender · 2018–2023
5 comments from Hacker News
Oh boy. The author of this post gave a speech about Rust’s journey to async/await: ▶ this video I highly recommend you skim it. It will show you how meticulous the core team is and how long it took to arrive at this incredible, best in class design.
Java is different. Tomcat's thread pool is the older way. A lot of newer stuff was using something promises-related instead with an event loop. But then recently Java added virtual threads which should obviate the need for that, similar to Go. Rust considered virtual threads but chose against that because it requires a more abstracted runtime like Java and Go have. Great preso on this ▶ this video All the "async" stuff is super poorly named. They mean cooperative multitasking, or I guess "async within a single kernel thread." Yeah multiple kernel threads are asynchronous but "async" doesn't mean that :S
As you probably know, Rust ended up with async/await. This video goes deep into that and the alternatives, and it changed my opinions a bit: ▶ this video Golang differs from Rust by having a runtime underneath. If you're already paying for that, it's probably better to do greenthreading than async/await, which is what Go did. I still find the Go syntax for this more bothersome and error-prone, as you said, but there are other solutions to that.
I believe these are the talks from Steve that he's referring to. It was enlightening for me: 1. Rust's Journey to Async/Await - ▶ this video 2. The Talk You've been Await-ing for - link The first video goes into all the bits you're concerned about and all the things that Rust has tried before arriving where they are now
I was referring to the fact that it is the only async implementation that I know of that compiles to a state machine that doesn't need to allocate new memory for each continuation. I think it will translate to extremely fast web services in practice. Pinning is of course part of the elegant solution. There are some great videos about it: ▶ this video link