Open nikomatsakis opened 4 months ago
This issue is intended for status updates only.
For general questions or comments, please contact the owner(s) directly.
We are able to make some progress in each area, but the biggest upcoming blocker we can see is:
There will be a call for testing async closures on the Inside Rust blog soon. Please check it out and give them a try in your own async code!
We'd like to see an updated RFC for implementable trait aliases that follows the guidelines laid out in this comment.
We are generally on track with our marquee features: (1) Support for async closures is available on Nightly and the lang team arrived at a tentative consensus to keep the existing syntax (written rationale and formal decision are in progress). We issued a call for testing as well which has so far uncovered no issues. (2) Partial support for Return Type Notation is available on Nightly with the remainder under review. In addition, dynamic dispatch for async functions and experimental async drop work both made implementation progress. Async WG reorganization has made no progress.
For this year's goal we are focused on three items:
async_closure
feature gate. We put out a call for testing; so far, no problems have been reported. Stabilization stalled because of a need to resolve the syntax. Lang team has reached a tentative internal consensus in favor of the syntax as implemented (impl async Fn
). Next steps are (1) lang team to write up rationale and finalizing syntax decision; (2) author stabilization report.return_type_notation
. Bounds like Trait<method(): Send>
are available on Nightly; bounds like Trait::method(): Send
will be available once PR #129629 is merged. Next steps are to (1) merge PR #129629; (2) call for testing; and (3) author stabilization report.dynosaur
being chosen. Basic support is now implemented (see this example). Next steps are polish and putting out a call for testing.We have not made progress on Async WG reorganization.
Updates:
async Fn
, subject to also agreeing to include some of "async type" syntax. The rationale was documented in rust-lang/rfcs#3710, which is now open and receiving feedback.dynosaur
crate was done. Polish and public call for testing remain the next steps.Preliminary implementation work on the dynosaur crate was done. Polish and public call for testing remain the next steps.
The first version of dynosaur was published: https://docs.rs/dynosaur/latest/dynosaur/attr.dynosaur.html
Updates:
Next steps:
Update:
AsyncFn
. The premise for the RFC was that we only wanted to commit to async Fn
if we were ready to commit to at least the syntax of async Trait
being used more broadly for other traits. There were enough questions raised during discussion to give some members pause as to whether we had worked out enough of the design space to commit to that, and so we decided to opt for a less ambitious stabilization instead to give more time for discussion.Next steps:
That stabilization report is up: https://github.com/rust-lang/rust/pull/132706
With respect to return-type notation, the current status is that we landed an extension of return-type notation to cover Self::foo(..): Send
in https://github.com/rust-lang/rust/pull/129629 and we are now shaking out the bugs on that. More testing would be helpful, as would reviews on the PRs we've opened already (e.g., https://github.com/rust-lang/rust/issues/132047).
FCP for async closure stabilization has completed. The PR is not yet merged as we are waiting on a reference PR (coming soon), rust-lang/rust#132612 to land, and reviews on the stabilization PR (rust-lang/rust#132706).
The Dynosaur crate version 0.1.2 was released but some bugs were found post-release. Iteration continues.
Summary
Over the next six months, we will deliver several critical async Rust building block features
Tasks and status
Implementation(@compiler-errors)Author RFC(@nikomatsakis)implementationAsyncFn
AsyncFn
author MCPMCP decision()