layout | title | author | team |
---|---|---|---|
post |
November project goals update |
Niko Matsakis |
Leadership Council <https://www.rust-lang.org/governance/teams/leadership-council> |
The Rust project is currently working towards a slate of 26 project goals, with 3 of them designed as Flagship Goals. This post provides selected updates on our progress towards these goals (or, in some cases, lack thereof). The full details for any particular goal are available in its associated tracking issue on the rust-project-goals repository.
Async closure stabilization has been approved, though the stabilization has not yet landed! The lang team ultimately opted to stabilize the trait name AsyncFn
rather than the keyword-based async Fn
syntax that was originally proposed. This decision came after discussion on the Flavors RFC which made it clear we were not at a consensus about whether the async Trait
keyword would be used more generally or not. Given that, the team felt that the AsyncFn
synta was a fine "next step". If we do ultimately adopt some form of async Trait
keyword syntax, then AsyncFn
can become a trait alias.
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.
No major progress towards async drop reviews or team reorganization.
This month saw steady progress on our checklist. dingxiangfei2009's PR renaming derive(SmartPointer)
to derive(CoercePointee)
was merged and he began the work to port the RFL codebase to use the new name. Alice Ryhl opened RFC #3716 proposing a way to manage compiler flags that alter the ABI and discussion (and some implementation work) has ensued. Finally, we landed PR #119364 making target blocks in asm-goto safe by default; this was based directly on experience from RFL which showed that [safe would be more useful]. We are still working to finalize another extension to asm-goto that arose from RFL requirements, allowing const
to support embedded pointers. Finally we prepared reference PR #1610 describing the change to permit Pointers to Statics in Constants that was stabilized last month.
Rust 2024 has now entered the nightly beta and is expected to stabilize as part of Rust 1.85 on 2025-02-20. It has a great many improvements that make the language more consistent and ergonomic, that further upon our relentless commitment to safety, and that will open the door to long-awaited features such as gen blocks, let chains, and the never type !
. For more on the changes, see the nightly Edition Guide. The call for testing blog post contains more information and instructions on how you can try it yourself.
min_generic_const_args
now exists as a feature gate, though without any functionality, only some gated refactorings, but shouldn't be long before it has actual functionality behind it.- The refactoring to remove all the
eval_x
methods onty::Const
has been completed, making it possible to correctly implement normalization for constants.
- Posted the October update.
- Created more automated infrastructure to prepare the October update, making use of an LLM to summarize updates into one or two sentences for a concise table.
- Support for cargo manifest linting is now merged, making it possible to catch breakage caused by manifest (
Cargo.toml
) changes, not just source code changes. An example of such breakage is the removal of a package feature: any crates that enabled the removed feature will no longer build. - Partial schema design and implementation of type information in lints, enabling the creation of breaking-change lints and improving diagnostic quality for type-related breaking changes.
- Resolved multi-team questions that were blocking cross-crate checking, with the compiler team MCP merged and rustdoc improvements discussed and agreed upon.
- The way const traits are desugared was completely restructured, making the design easier to understand and more robust against current unit tests.
- Significant development and cleanup for the feature has been done, with several pull requests merged and two still open, bringing the feature closer to being able to dogfood on the standard library and closer to stabilization.
- @joshtriplett opened rust-lang/rfcs#3680. The @rust-lang/lang team has not yet truly discussed or reached a decision on that RFC.
- @spastorino began implementation work on a prototype.
- No significant progress has been made on the sandboxed build scripts project.
- Feedback on the previous experiment was received, with Alex expressing interest in adding POSIX process support to WASI, though this is unlikely in the near future.
- The re-design of the autodiff middle/backend was implemented, reducing the remaining LoC to be upstreamed from 2.5k to 1.1k, split into two PRs (1 and 2), which received initial feedback and are expected to land in early December.
- The preprint of the first paper utilizing
std::autodiff
is available on Arxiv, with code available at ChemAI-Lab/molpipx, showcasing significantly faster compilation times in Rust compared to JAX.
- The core data structures of PubGrub have been published as a separate
version-ranges
crate, enabling multiple projects to share this core abstraction and benefit from improvements without waiting for the rest of the project. - This is one of many steps required to publish a new
0.3.0
version of the PubGrub crate.
- Rustdoc will now show type signatures in the search results page, and the boxing transform behaves more like Hoogle's does.
- Improvements to matching behavior have been made to fit user expectations.
- The
-Znext-solver=coherence
flag has been stabilized again in PR #130654, indicating potential final stabilization. - Refactoring of the current "typing mode" tracking is underway, linked to issue #128, to address issue #106, with an FCP initiated for merging candidates in trait goals, expected to resolve related issues in the new solver.
- rust-lang/rust#125116 has been merged, marking half of the goal as formally completed.
- Discussions on using
cargo cache
on CI are beginning to take form.
- The never patterns RFC was posted.
- Feedback on the RFC suggests that the question of "which arms can be omitted" isn't as orthogonal as hoped, so the focus will switch to that.
- The PR rust-lang/crates.io#9423 has been merged.
- Work is ongoing on the frontend feature.
- Amanda's EuroRust talk on polonius from last month is also now available on YouTube.
- Implementation work continues, mostly on a branch. Major developments include a new debugger which has accelerated progress. There are about 70 test failures left to be analyzed.
- rust-lang/cargo#14670 and rust-lang/cargo#14749 have been posted and merged.
- rust-lang/cargo#14792 has been posted.
- Still in the process of determining the cause of the deadlock through local testing and compiler code analysis.
- Help wanted: Help test the deadlock code in the issue list and try to reproduce the issue.
- A new partnership between the Rust Foundation and AWS will help fund this effort. The verification challenges in the verify-rust-std fork now have financial rewards for those completing them.
- Help wanted: Help needed to write more contracts, to integrate new tools, to review pull requests or to participate in the repository discussions.
- We decided to close this goal as we have not been making steady progress. We are evaluating what to propose the 2025h1 round of goals.
The following goals have not received updates in the last month: