From 93f2bc8b2251365f3c466f54a4c58fdd33e3f6ad Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 2 Dec 2024 20:27:52 +0000 Subject: [PATCH 1/8] Project goals november update --- posts/2025-12-02-project-goals-nov-update.md | 239 +++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 posts/2025-12-02-project-goals-nov-update.md diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-02-project-goals-nov-update.md new file mode 100644 index 000000000..9e859af57 --- /dev/null +++ b/posts/2025-12-02-project-goals-nov-update.md @@ -0,0 +1,239 @@ +--- +layout: post +title: "November project goals update" +author: Niko Matsakis +team: Leadership Council +--- +The Rust project is currently working towards a [slate of 26 project +goals](https://rust-lang.github.io/rust-project-goals/2024h2/goals.html), with 3 of them designed as [Flagship +Goals](https://rust-lang.github.io/rust-project-goals/2024h2/goals.html#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](https://github.com/rust-lang/rust-project-goals/milestone/2). + +## Flagship goals + + + +Async closure stabilization has [been approved](https://github.com/rust-lang/rust/pull/132706), 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](https://github.com/rust-lang/rust/pull/129629) and we landed [#132047](https://github.com/rust-lang/rust/issues/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](https://github.com/rust-lang/rfcs/pull/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](https://github.com/rust-lang/rust/issues/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](https://github.com/rust-lang/rust/issues/128464). Finally we prepared [reference PR #1610](https://github.com/rust-lang/reference/issues/1610) describing the change to permit [Pointers to Statics in Constants](https://github.com/rust-lang/rust/issues/119618) 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.](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html) The [call for testing blog post](https://blog.rust-lang.org/2024/11/27/Rust-2024-public-testing.html) contains more information and instructions on how you can try it yourself. + +## Goals with updates + + + + * `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 on `ty::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](https://github.com/obi1kenobi/cargo-semver-checks/pull/1007), 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. + + +
+
Const traits
+
+
+
+ +* 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 https://github.com/rust-lang/rfcs/pull/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](https://github.com/rust-lang/rust/pull/133429) and [2](https://github.com/rust-lang/rust/pull/130060)), 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](https://arxiv.org/abs/2411.17011v1), with code available at [ChemAI-Lab/molpipx](https://github.com/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](https://github.com/rust-lang/rust-clippy/issues/13033#issuecomment-2501279515) are beginning to take form. + + + +* The [never patterns RFC](https://github.com/rust-lang/rfcs/pull/3719) 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 https://github.com/rust-lang/crates.io/pull/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](https://www.youtube.com/watch?v=uCN_LRcswts&feature=youtu.be). +* 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](https://github.com/rust-lang/rust/labels/WG-compiler-parallel) and try to reproduce the issue. + + + +* A [new partnership](https://foundation.rust-lang.org/news/rust-foundation-collaborates-with-aws-initiative-to-verify-rust-standard-libraries/) between the Rust Foundation and AWS will help fund this effort. The [verification challenges](https://model-checking.github.io/verify-rust-std/challenges.html) in the [verify-rust-std fork](https://github.com/model-checking/verify-rust-std) now have financial rewards for those completing them. +* **Help wanted:** Help needed to write more contracts, to integrate new tools, to review [pull requests](https://github.com/model-checking/verify-rust-std/pulls) or to participate in the [repository discussions](https://github.com/model-checking/verify-rust-std/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. + +## Goals without updates + +The following goals have not received updates in the last month: + + \ No newline at end of file From 46306ed97857422a8478b30cf868f557018b9a8a Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 2 Dec 2024 16:14:02 -0500 Subject: [PATCH 2/8] Update posts/2025-12-02-project-goals-nov-update.md Co-authored-by: Predrag Gruevski <2348618+obi1kenobi@users.noreply.github.com> --- posts/2025-12-02-project-goals-nov-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-02-project-goals-nov-update.md index 9e859af57..972b06504 100644 --- a/posts/2025-12-02-project-goals-nov-update.md +++ b/posts/2025-12-02-project-goals-nov-update.md @@ -70,7 +70,7 @@ Rust 2024 has now entered the nightly beta and is expected to stabilize as part * Support for cargo manifest linting is [now merged](https://github.com/obi1kenobi/cargo-semver-checks/pull/1007), 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. +* Partial schema design and implementation of type information in lints, enabling the creation of breaking-change lints and improving diagnostic quality for a subset of 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. From 5a8ab7fa78c2a1b8ba86d3683f41abe312f5358e Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 3 Dec 2024 16:19:34 -0500 Subject: [PATCH 3/8] Update posts/2025-12-02-project-goals-nov-update.md Co-authored-by: Weihang Lo --- posts/2025-12-02-project-goals-nov-update.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-02-project-goals-nov-update.md index 972b06504..370714608 100644 --- a/posts/2025-12-02-project-goals-nov-update.md +++ b/posts/2025-12-02-project-goals-nov-update.md @@ -100,8 +100,7 @@ Rust 2024 has now entered the nightly beta and is expected to stabilize as part -* 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 sandboxed build scripts exploration is complete. We are unlikely to continue this work in next year but the research may be useful in other areas, such as the possible addition of POSIX process support to WASI or a declarative system dependency configuration in Cargo.
From c9d7cdd7044e8ad34011f507e1a0b8bdc22dd168 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 3 Dec 2024 16:26:14 -0500 Subject: [PATCH 4/8] Update posts/2025-12-02-project-goals-nov-update.md --- posts/2025-12-02-project-goals-nov-update.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-02-project-goals-nov-update.md index 370714608..4400d96d5 100644 --- a/posts/2025-12-02-project-goals-nov-update.md +++ b/posts/2025-12-02-project-goals-nov-update.md @@ -148,6 +148,8 @@ Rust 2024 has now entered the nightly beta and is expected to stabilize as part * rust-lang/rust#125116 has been merged, marking half of the goal as formally completed. * Discussions on [using `cargo cache` on CI](https://github.com/rust-lang/rust-clippy/issues/13033#issuecomment-2501279515) are beginning to take form. +* rust-lang/rust#125116 may be contested in results. The impact may not be as large as expected, even on Clippy. +* We've been experimenting with Clippy using `rustc_driver` as a static library, instead of dynamic linking. This would be us both a way to check the performance impact of `rustc_driver` as a shared library, **and** a way to profile Clippy without filtering between `dl_*` calls.
From dd89e5ee18e01ec182be77a6853ccb634b49807c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 3 Dec 2024 16:26:19 -0500 Subject: [PATCH 5/8] Update posts/2025-12-02-project-goals-nov-update.md --- posts/2025-12-02-project-goals-nov-update.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-02-project-goals-nov-update.md index 4400d96d5..e9d13ad5a 100644 --- a/posts/2025-12-02-project-goals-nov-update.md +++ b/posts/2025-12-02-project-goals-nov-update.md @@ -137,8 +137,8 @@ Rust 2024 has now entered the nightly beta and is expected to stabilize as part
-* 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. +* We stabilized `-Znext-solver=coherence` again in https://github.com/rust-lang/rust/pull/130654. It's looking like the stabilization will actually go through this time. +* We're currently refactoring the way the current "typing mode" is tracked, working to fix [trait-system-refactoring#106](https://github.com/rust-lang/trait-system-refactor-initiative/issues/106). An [FCP was started](https://github.com/rust-lang/rust/pull/132325) to clean up the way we merge candidates when proving trait goals.
From 15ed002db904d80ed275d67b47982097cf66fbbb Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 3 Dec 2024 16:26:44 -0500 Subject: [PATCH 6/8] Rename 2025-12-02-project-goals-nov-update.md to 2025-12-04-project-goals-nov-update.md --- ...als-nov-update.md => 2025-12-04-project-goals-nov-update.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename posts/{2025-12-02-project-goals-nov-update.md => 2025-12-04-project-goals-nov-update.md} (99%) diff --git a/posts/2025-12-02-project-goals-nov-update.md b/posts/2025-12-04-project-goals-nov-update.md similarity index 99% rename from posts/2025-12-02-project-goals-nov-update.md rename to posts/2025-12-04-project-goals-nov-update.md index e9d13ad5a..2799ad3e5 100644 --- a/posts/2025-12-02-project-goals-nov-update.md +++ b/posts/2025-12-04-project-goals-nov-update.md @@ -237,4 +237,4 @@ The following goals have not received updates in the last month:
-
\ No newline at end of file + From 7b320bad93586f17009a506ea73ccbdacadb71c2 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 16 Dec 2024 12:23:17 -0500 Subject: [PATCH 7/8] Update posts/2025-12-04-project-goals-nov-update.md --- posts/2025-12-04-project-goals-nov-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2025-12-04-project-goals-nov-update.md b/posts/2025-12-04-project-goals-nov-update.md index 2799ad3e5..ad9004458 100644 --- a/posts/2025-12-04-project-goals-nov-update.md +++ b/posts/2025-12-04-project-goals-nov-update.md @@ -194,7 +194,7 @@ Rust 2024 has now entered the nightly beta and is expected to stabilize as part * 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](https://github.com/rust-lang/rust/labels/WG-compiler-parallel) and try to reproduce the issue. +* **Help wanted:** Try to reproduce deadlocks described in the [issue list](https://github.com/rust-lang/rust/labels/WG-compiler-parallel).
From 66451ac83f7005ed0daa49cc5e0a96149365f272 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 16 Dec 2024 12:23:42 -0500 Subject: [PATCH 8/8] Rename 2025-12-04-project-goals-nov-update.md to 2025-12-16-project-goals-nov-update.md --- ...goals-nov-update.md => 2025-12-16-project-goals-nov-update.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename posts/{2025-12-04-project-goals-nov-update.md => 2025-12-16-project-goals-nov-update.md} (100%) diff --git a/posts/2025-12-04-project-goals-nov-update.md b/posts/2025-12-16-project-goals-nov-update.md similarity index 100% rename from posts/2025-12-04-project-goals-nov-update.md rename to posts/2025-12-16-project-goals-nov-update.md