Async Foundations Working Group
This working group is focused around implementation/design of the “foundations” for Async I/O.
This includes the
async-await language feature but also the core
Future trait and adapters.
- Leads: @cramertj and @nikomatsakis.
- Labels: We use the
AsyncAwait-*labels on Github to track our work. See the How to get involved section for details.
- Zulip stream:
- Videos: Video meetings and mentoring sessions are recorded and posted to this YouTube playlist.
What is the goal of this working group?
The current focus of the group is polishing the async-await feature and working on the async book.
Overall roadmap and progress
- ✅ Stabilize the
- ✅ Deliver a “minimal viable product” (MVP) introducing
async fninherent functions and async blocks.
- ⚒️ Polish the async-await feature, improving diagnostics, spurious errors, and other corner cases.
- ⚒️ Write the async book, which introduces how the core language features in support of Async I/O and teaches you how to use them.
Possible future areas for consideration include:
- Stabilize other core traits in std, such as
- Support async fn in traits
- Support async closures (and possibly an
- Support consuming async streams conveniently (e.g.,
for awaitloops or some similar thing)
- Support authoring async streams conveniently via async generators
- Support async drop
However, we’ve decided to largely defer this sort of work until we’ve finished off more of the polish work on async-await.
How to get involved
We are currently working to systematically polish the
feature. If you’d like to get involved, take a look at the list of
focus issues to see if there is one there is
something unassigned that you would like to work on. Otherwise, drop
in on the Zulip stream and say hi, or come to our triage
meeting (also held on Zulip).
You can also help just by nominating issues – i.e., telling us which issues you think are more important to fix and why.
We always have a set of “focus issues”, which are the ones that we are either actively fixing or looking for someone to fix. In general, we track our issues using a set of ethre labels:
- AsyncAwait-Triaged – the base label, which indicates issues that
we’ve looked at in our meetings. Each meeting we look for [untriaged
issues], which are those that are labeled
A-async-awaitbut which lack the
AsyncAwait-Triagedlabel, and try to keep track of them. To ensure new issues are known to all, this label should only be added during WG triage meetings!
- AsyncAwait-OnDeck – this label is added to issues that we might focus on next. You can nominate issues yourself to add them to this list, if you like! We typically pick from this list when a focus issue is closed or gets stalled.
- AsyncAwait-Focus – this label indicates a current focus issue. These issues are typically assigned, but if they are not, it means we’d like someone to pick it up.
If you think an issue would be a good choice to fix sooner rather than
later, you can nominate it for us. To do so, you need to leave a
comment which adds the
AsyncAwait-OnDeck label. The comment should
also explain why you think this is important.
Here is an example of such a comment:
@rustbot modify labels to +AsyncAwait-OnDeck This issue would be great to fix! I hit it pretty regularly and every time I am left scratching my head for five minutes before I figure out the problem.
We have a short triage meeting every week, which you can find
on the compiler calendar. The meeting is help on the
#wg-async-foundations Zulip stream and is open to all. The
meeting agenda is as follows: