rust-lang / rust-project-goals

Rust Project Goals tracker
https://rust-lang.github.io/rust-project-goals/
MIT License
51 stars 49 forks source link

Bring the Async Rust experience closer to parity with sync Rust #105

Open nikomatsakis opened 4 months ago

nikomatsakis commented 4 months ago
Metadata
Owner(s) @tmandry, @nikomatsakis
Team(s) compiler, lang, libs, libs-api
Goal document 2024h2/async

Summary

Over the next six months, we will deliver several critical async Rust building block features

Tasks and status

nikomatsakis commented 4 months ago

This issue is intended for status updates only.

For general questions or comments, please contact the owner(s) directly.

tmandry commented 4 months ago

Status update: July 30, 2024

Key developments

Blockers

We are able to make some progress in each area, but the biggest upcoming blocker we can see is:

Help wanted

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.

nikomatsakis commented 2 months ago

Executive summary.

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.

Detailed updates

For this year's goal we are focused on three items:

We have not made progress on Async WG reorganization.

nikomatsakis commented 1 month ago

Updates:

tmandry commented 1 month ago

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

nikomatsakis commented 1 month ago

Updates:

Next steps:

nikomatsakis commented 3 weeks ago

Update:

Next steps:

compiler-errors commented 3 weeks ago

That stabilization report is up: https://github.com/rust-lang/rust/pull/132706

nikomatsakis commented 3 weeks ago

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).

nikomatsakis commented 1 day ago

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).

nikomatsakis commented 1 day ago

Regarding return-type notation, an extension of return-type notation to cover Self::foo(..): Send landed and we landed #132047 which fixes a known ICE. Stabilization PR is now unblocked.

nikomatsakis commented 1 day ago

The Dynosaur crate version 0.1.2 was released but some bugs were found post-release. Iteration continues.