How Rust optimizes async/await I
Related
More from Tyler Mandry
Framing Rust’s design goals Rust has been kicking around the idea of design goals, under various names, for some time. Design goals are useful because they give everyone making product decisions a common language and set of priorities to appeal to. If done well, they would accumulate the design wisdom of Rust into a concise package and assist RFC...
Last year was an important year for Async Rust, culminating in the release of async fn in traits, one of Rust’s most long-awaited language features. I’m really proud of the work and expertise the Async Working Group has put in to this effort, and for the community feedback that helped shape the release. We still have important work to do in the...
Last week, Niko Matsakis pointed out a connection to me between for await and something we’ve taken to calling the “buffered streams problem”. This was inconvenient, because I was in the middle of writing a different blog post about what I want Async Rust to look like in a few years, and it challenged some of my assumptions. for await in this...
For just about as long as I’ve been working on async Rust, the topic of scoped tasks has come up. These are async tasks that borrow from their environment, and they would come in handy in a lot of situations. Last year the standard library stabilized thread::scope which allows synchronous threads to do this. You could imagine a similar API, but...
I recently worked out a promising idea with Niko Matsakis and Yoshua Wuyts to solve what I’ll call the “context problem” in Rust. The idea takes inspiration from features in other languages like implicit arguments, effects, and object capabilities. While this is very much at the early stages of development, I’m sharing it here to hopefully get...