Skip to content

Working group dedicated to improving the foundations of Async I/O in Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

nikomatsakis/wg-async-foundations

 
 

Repository files navigation

wg-async-foundations

Working group dedicated to improving the foundations of async I/O in Rust

Leads: @tmandry and @nikomatsakis

Getting involved

Our meetings take place at 11:30 AM PST every Thursday in our Zulip stream. Feel free to stop by then (or any time!) to introduce yourself.

If you'd like something to work on, check our mentored issues for places to get started. Feel free to claim one of these by adding a comment with the text @rustbot claim.

You can also take a look at our ongoing work to get a sense of what we're up to, and to look for more unclaimed issues you could tackle.

What is the goal of this 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.

Current focus

The current focus of the group is polishing the async-await feature and working on the async book.

Overall roadmap and progress

  • ✅ Stabilize the Future trait
  • ✅ Deliver a "minimal viable product" (MVP) introducing async fn inherent 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.

Future areas

Possible future areas for consideration include:

  • Stabilize other core traits in std, such as AsyncRead
  • Support async fn in traits
  • Support async closures (and possibly an AsyncFn trait)
  • Support consuming async streams conveniently (e.g., for await loops 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.

Triage meetings

In our weekly triage meetings, we take new issues assigned A-async-await and categorize them. The process is:

  • Review the project board, from right to left:
    • Look at what got Done, and celebrate! 🎉
    • Review In progress issues to check we are making progress and there is a clear path to finishing (otherwise, move to the appropriate column)
    • Review Blocked issues to see if there is anything we can do to unblock
    • Review Claimed issues to see if they are in progress, and if the assigned person still intends to work on it
    • Review To do issues and assign to anyone who wants to work on something
  • Review uncategorized issues
    • Mark P-low, P-medium, or P-high
    • Add P-high and assigned E-needs-mentor issues to the project board
    • Mark AsyncAwait-triaged
  • If there's still a shortage of To do issues, review the list of P-medium or P-low issues for candidates

Mentoring

If an issue is a good candidate for mentoring, mark E-needs-mentor and try to find a mentor.

Mentors assigned to issues should write up mentoring instructions. Often, this is just a couple lines pointing to the relevant code. Mentorship doesn't require intimate knowledge of the compiler, just some familiarity and a willingness to look around for the right code.

After writing instructions, mentors should un-assign themselves, add E-mentor, and remove E-needs-mentor. On the project board, if a mentor is assigned to an issue, it should go to the Claimed column until mentoring instructions are provided. After that, it should go to To do until someone has volunteered to work on it.

Links

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Working group dedicated to improving the foundations of Async I/O in Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published