Skip to content
0:00 / 0:00

#rust#async/await#steveklabnik

Rust's Journey to Async/Await

InfoQ

234K subscribers • 59 videos on Hallway • Conference channel

YouTube
  • Recommended by 5 people: 5 on Hacker News.
  • A classic. People kept recommending it from 2020 to 2026.
  • Presented by Steve Klabnik

Intermediate. Assumes working knowledge.

89K views6 years ago5 recommendations

Programming languagesSystems programmingRustConcurrency and parallelismLanguage design and type systems

Steve Klabnik explains the history and design evolution of Rust's async/await feature, including the technical trade-offs and alternatives considered.

Video with transcript included: bit.ly/2XcjHbj Steve Klabnik gives an overview of Rust’s history, diving into the technical details of how the design has changed, and talks about the difficulties of adding a major new feature to a programming language. This presentation was recorded at QCon New York 2019: bit.ly/2KFk7SO The next QCon is QCon London 2020 – March 2-4, 2020: bit.ly/2VfRldq For more awesome presentations on innovator and early adopter topics check InfoQ’s selection of talks from conferences worldwide bit.ly/2tm9loz #Rust #Async #ProgrammingLanguage

Why it's here

5 people recommend this

What people say. Recommended as an excellent explanation of how Rust's async/await design evolved and why the language team chose its unique zero-cost state machine approach.

iknowstuffon Hacker News • Recommends

On “How often does Rust change?”

Oh boy. The author of this post gave a speech about Rust’s journey to async/await: link to 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.

xiphias2on Hacker News • Recommends

On “I can't keep up with idiomatic Rust”

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: link to this video link

dwooton Hacker News • Recommends

On “Tokio 1.0 – async runtime for Rust”

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 - link to 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

frollogastonon Hacker News • Recommends

On “Leaving Google”

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: link to 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.

traderj0eon Hacker News • Recommends

On “The limits of Rust, or why you should probably not follow Amazon and Cloudflare”

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 link to 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

u/dontyougetsoupedyetin r/ProgrammingLanguages • Mentions

On “How does asynchronous code work in programming languages?”

Usually the implementation involves compiling the syntactic sugar of your language into a state machine that hoists the state used before each await into long term storage. Also, be prepared for a large number of your users to tell you you've implemented everything wrong no matter what your implementation does. Since you're into Rust, you may find link to this video interesting. Klabnik mentions the details of that Futures implementation around 33 to 34 minutes into the talk.