Description
Metadata | |
---|---|
Point of contact | @tmandry |
Team(s) | compiler, lang, libs-api, spec, types |
Goal document | 2025h1/async |
Summary
Over the next six months, we will continue bringing Async Rust up to par with "sync Rust" by doing the following:
- Telling a complete story for the use of async fn in traits, unblocking wide ecosystem adoption,
- Improving the ergonomics of
Pin
, which is frequently used in low-level async code, and - Preparing to support asynchronous (and synchronous) generators in the language.
Why this goal?
This work continues our drive to improve support for async programming in Rust. In 2024H2 we stabilized async closures; explored the generator design space; and began work on the dynosaur
crate, an experimental proc-macro to provide dynamic dispatch for async functions in traits. In 2025H1 our plan is to deliver (1) improved support for async-fn-in-traits, completely subsuming the functionality of the async-trait
crate; (2) progress towards sync and async generators, simplifying the creation of iterators and async data streams; (3) and improve the ergonomics of Pin
, making lower-level async coding more approachable. These items together start to unblock the creation of the next generation of async libraries in the wider ecosystem, as progress there has been blocked on a stable solution for async traits and streams.
Tasks and status
Overall program management
- AFIT story blog post (@tmandry)
Return type notation (rust-lang/rust#109417)
- Initial implementation (@compiler-errors)
- Author RFC (@nikomatsakis)
- RFC decision (lang
)
- Finished implementation (@compiler-errors)
- Lang-team champion (lang
)
- Standard reviews (types, compiler
)
- Author stabilization report (@compiler-errors)
- Author specification 1st draft (@compiler-errors, @tmandry, @nikomatsakis)
- Finalize specification text (spec
)
- Stabilization decision (lang, types
)
Unsafe binders (rust-lang/rust#130516)
- Initial implementation (@compiler-errors)
- Author RFC (@nikomatsakis)
- Lang-team champion (lang
)
- RFC decision (lang, types
)
Implementable trait aliases
- Author RFC (@tmandry)
- Implementation (@compiler-errors)
- Lang-team champion (lang
)
- Standard reviews (types, compiler
)
- RFC decision (lang, types
)
async fn
in dyn Trait
(rust-lang/rust#133119)
- Lang-team experiment (@nikomatsakis)
- Lang-team champion (lang
)
- Implementation (@compiler-errors)
Pin ergonomics
Trait for generators (sync)
- Implementation (@eholk)
- Author RFC
- RFC decision (libs-api, lang
)
- Design meeting (lang
)
- Lang-team champion (lang
)
Dynosaur 1.0
- Implementation (@spastorino)
- Standard reviews (@tmandry)
Metadata
Metadata
Assignees
Type
Projects
Status