# 2025-02 Update (deprecated)
---
## DEPRECATED SEE [THIS HACKMD](https://hackmd.io/wCq3QdXoQOmkVwul0V1_Xw)
---
We have embarked on the second iteration of our project goals program, covering 2025H1 (2025 Jan to Jun). This round we identified a [slate of 26 project
goals](https://rust-lang.github.io/rust-project-goals/2024h2/goals.html), with 3 of them designated 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).
## Introducing the flagship goals
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/263'><strong>Organize Rust All-Hands 2025</strong></a></div>
<div style="flex: initial;"><progress value="6" max="28"></progress>
</div>
</div>
The goal to organize Rust All-Hands 2025 has seen significant progress. The initial planning phase has been completed, with a detailed timeline and key milestones established. A dedicated team has been formed, and roles have been assigned to ensure smooth coordination. The venue selection process is underway, with several potential locations being evaluated. Additionally, outreach to potential speakers and participants has begun, aiming to secure a diverse and engaging lineup. The communication strategy for the event has been outlined, including social media campaigns and email newsletters. Regular check-ins are scheduled to monitor progress and address any challenges that arise. The goal remains on track for a successful Rust All-Hands 2025.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/116'><strong>Stabilize tooling needed by Rust for Linux</strong></a></div>
<div style="flex: initial;"><progress value="8" max="22"></progress>
</div>
</div>
The project goal "Stabilize tooling needed by Rust for Linux" has seen significant progress. The stabilization of arbitrary self types v2 and CoercePointee is underway, with both features being utilized in Rust for Linux (RFL). The ABI-modifying flags RFC has completed its Final Comment Period and awaits merging, with an implementation PR under review. Several other compiler flags are being prioritized for stabilization, including `-Zdwarf-version` and `-Zdebuginfo-compression`, which are ready for stabilization with proper documentation. The stable rustdoc feature allowing RFL to extract and customize rustdoc tests is under review and expected to land soon. Clippy configuration updates are minimal and mostly involve documentation changes. The rebuild of libcore is progressing, though specific updates were not provided in the meeting. Publicizing efforts include a planned talk at Rust Nation and potential blog posts. A policy document explaining Rust usage in the kernel has been published in response to recent controversies. Dependency management and configuration of no-std are being investigated, and feedback is being collected on a document regarding a blessed way to build-std. An issue related to `cfg(no_fp_fmt_parse)` in an older kernel branch is being addressed, and RFL is seeking a solution for disabling the orphan rule.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/105'><strong>Bring the Async Rust experience closer to parity with sync Rust</strong></a></div>
<div style="flex: initial;"><progress value="5" max="34"></progress>
</div>
</div>
This year
## Rust 1.85
The first update is the release of Rust 1.85, which had at least two major features that impact Async Rust. The first is [async closures](https://blog.rust-lang.org/inside-rust/2024/08/09/async-closures-call-for-testing.html), which has been on many people's wish lists for a long time and was expertly moved forward by @compiler-errors over the last year.
The second is the new [lifetime capture rules](https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html) as part of Rust 2024 edition. This should substantially improve the experience of using async Rust anytime a user writes `-> impl Future`, as it removes the need for `+ '_` or similar bounds in most cases. It will also lead to an easier to understand language, since those bounds only worked by exploiting the more subtle rules of `impl Trait` in a way that runs contrary to their actual semantic role in the language. In the 2024 Edition, the subtle rule is gone and we capture all input lifetimes by default, with the ability to use `+ use<>` syntax to opt out. See [this blog post](https://blog.rust-lang.org/2024/09/05/impl-trait-capture-rules.html) for more.
## Generators
The lang team held two design meetings on generators, with the outcome of the last one being that we will implement a `std::iter::iter!` macro (exact path TBD) in the compiler, as a lang team experiment that allows the use of the `yield` syntax. We decided to go in this direction because we want to reserve `gen` for self-borrowing and perhaps lending generators, and aren't yet decided on which subset of features to expose under that syntax. This decision interacts with ongoing compiler development that isn't ready yet to enable experimentation with lending.
Our hope is that in the meantime, by shipping `iter!` we will give people the chance to start using generators in their own code and better understand which limitations people hit in practice.
As you may have noticed, I'm not talking about async generators here. Those are the ultimate goal for the async initiative, but we felt the first step should be clarifying the state of synchronous generators so we can build on that when talking about async ones.
## dynosaur
[dynosaur v0.1.3](https://github.com/spastorino/dynosaur/releases/tag/0.1.3) was released, with another release in the works. We think we are approaching a 1.0 release real soon now (tm). At this point you should be able to try it on your crate to enable dyn dispatch for traits with `async fn` and other `-> impl Trait` methods. If you need to use it together with `#[trait_variant]`, you may need to wait until the next release when [#55](https://github.com/spastorino/dynosaur/issues/55) is fixed.
## Other
The async project goal was accepted for 2025H1!
## Goals with updates
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/275'><strong>rustc-perf improvements</strong></a></div>
<div style="flex: initial;"><progress value="0" max="7"></progress>
</div>
</div>
* A regular call is scheduled with Kobzol to discuss constraints and requirements for rust-perf changes, and a high-level architecture proposal has been drafted and shared for feedback.
* A detailed plan including proposed changes to the database schema will be prepared after agreement on the high-level architecture is reached.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/274'><strong>build-std</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* The team has shifted focus to drafting a document outlining use cases, motivations, and prior art for build-std to provide the Cargo team with a clear context for reviewing proposals.
* Davidtwco is coordinating to ensure the proposed build-std mechanism aligns with the requirements of the Rust for Linux project.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/273'><strong>Unsafe Fields</strong></a></div>
<div style="flex: initial;"><progress value="1" max="7"></progress>
</div>
</div>
* The MVP for unsafe fields is limited to additive invariants.
* Consensus reached in the Feb 19 Lang Team Design Meeting.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/272'><strong>Stabilize public/private dependencies</strong></a></div>
<div style="flex: initial;"><progress value="0" max="5"></progress>
</div>
</div>
* Help wanted: the project goal requires a compiler developer to proceed.
* The goal remains assigned to epage for coordination and oversight.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/271'><strong>Secure quorum-based cryptographic verification and mirroring for crates.io</strong></a></div>
<div style="flex: initial;"><progress value="0" max="12"></progress>
</div>
</div>
* Walterhpearce has made progress on implementing the secure quorum-based cryptographic verification system for crates.io.
* The mirroring functionality is being integrated to ensure data integrity and availability.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/270'><strong>SVE and SME on AArch64</strong></a></div>
<div style="flex: initial;"><progress value="2" max="16"></progress>
</div>
</div>
* @JamieCunliffe is resolving feedback on the RFC for Arm's scalable vector extension (SVE) and its implementation, with the hope of landing it experimentally.
* @davidtwco is working on an RFC to improve Rust's support for exotically sized types, with an initial implementation completed and further progress dependent on the language team's decision and const traits implementation.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/269'><strong>Rust Vision Document</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* Nikomatsakis has initiated the Rust Vision Document project by soliciting volunteers, conducting an initial meeting, and establishing a dedicated Zulip stream.
* Despite being slightly behind schedule, the next milestone involves outlining a detailed plan for the project.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/268'><strong>Run the 2025H1 project goal program</strong></a></div>
<div style="flex: initial;"><progress value="6" max="13"></progress>
</div>
</div>
* The 2025H1 project goal program is behind schedule but has commenced operation; the goals RFC completed FCP on Feb 18.
* The new project goals team is approved, tracking issues updated for the new milestone, and project goal owners are urged to reflect actual tasks in the issue body using Github checkboxes or other notation.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/267'><strong>Research: How to achieve safety when linking separately compiled code</strong></a></div>
<div style="flex: initial;"><progress value="2" max="11"></progress>
</div>
</div>
* Progress made in identifying potential safety risks associated with linking separately compiled code.
* Ongoing research into best practices and techniques for ensuring safety during the linking process.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/266'><strong>Publish first version of StableMIR on crates.io</strong></a></div>
<div style="flex: initial;"><progress value="0" max="6"></progress>
</div>
</div>
* No progress has been made on publishing the first version of StableMIR on crates.io.
* Help is wanted for refactoring; interested parties should reach out through the project-stable-mir zulip channel or repository.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/265'><strong>Publish first rust-lang-owned release of "FLS"</strong></a></div>
<div style="flex: initial;"><progress value="0" max="5"></progress>
</div>
</div>
* Ferrous Systems publicly announced commitment to contribute FLS to the Rust Project at the Safety Critical Rust Consortium meeting.
* FLS integration testing can commence in parallel while finalizing contribution details.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/264'><strong>Prototype a new set of Cargo "plumbing" commands</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* Help wanted: this project goal needs someone to work on the implementation.
* Interest expressed by an individual to collaborate on the implementation work.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/262'><strong>Null and enum-discriminant runtime checks in debug builds</strong></a></div>
<div style="flex: initial;"><progress value="1" max="3"></progress>
</div>
</div>
* Null-checks have been successfully implemented and merged in [rust#134424](https://github.com/rust-lang/rust/pull/134424).
* Focus shifts to implementing enum discriminant checks as the next phase of the project.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/261'><strong>Nightly support for ergonomic SIMD multiversioning</strong></a></div>
<div style="flex: initial;"><progress value="0" max="5"></progress>
</div>
</div>
* Held further discussions on the implementation details of the three major proposed ways forward for ergonomic SIMD multiversioning.
* Requested a design meeting to be held in https://github.com/rust-lang/lang-team/issues/309.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/260'><strong>Metrics Initiative</strong></a></div>
<div style="flex: initial;"><progress value="0" max="6"></progress>
</div>
</div>
* Implemented initial configuration for metrics storage directory and basic unstable feature usage metrics.
* Developed a Proof of Concept using InfluxDB 3.0 Alpha and Graphana, including data conversion and querying, and began evaluating output format options inspired by Firefox's telemetry system.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/259'><strong>Making compiletest more maintainable: reworking directive handling</strong></a></div>
<div style="flex: initial;"><progress value="0" max="5"></progress>
</div>
</div>
* Added more tracing to bootstrap for easier following of test flow in https://github.com/rust-lang/rust/pull/137080.
* Working on prerequisite cleanups and improvements to enhance readability of bootstrap and compiletest's codebase: https://github.com/rust-lang/rust/pull/137224, https://github.com/rust-lang/rust/pull/136474, https://github.com/rust-lang/rust/pull/136542.
* Planning to experiment with a prototype branch off of rust-lang/rust for context-aware development, waiting on Onur's stabilization of stage management for rustc tools in https://github.com/rust-lang/rust/pull/137215.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/258'><strong>Improve state machine codegen</strong></a></div>
<div style="flex: initial;"><progress value="1" max="6"></progress>
</div>
</div>
* The improvement of state machine codegen is currently pending review by the language team in a design meeting to assess feasibility.
* Further action on this goal is contingent upon the language team's evaluation and recommendations.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/257'><strong>Implement restrictions, prepare for stabilization</strong></a></div>
<div style="flex: initial;"><progress value="0" max="8"></progress>
</div>
</div>
* The feasibility of rebasing the existing PR versus reapplying patches manually will be reviewed this weekend.
* No progress has been made as of the first status update.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/256'><strong>Implement Open API Namespace Support</strong></a></div>
<div style="flex: initial;"><progress value="0" max="3"></progress>
</div>
</div>
* The project goal is stalled and requires a compiler developer to proceed.
* Contact the project owner for further assistance or to volunteer for the role.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/255'><strong>Finish the libtest json output experiment</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* The project goal is currently on pause, pending the completion of implementation for issue #92.
* The rustc side of issue #92 is under review, followed by additional work on r-a and cargo, after which testing and stabilization will be required.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/254'><strong>Externally Implementable Items</strong></a></div>
<div style="flex: initial;"><progress value="2" max="9"></progress>
</div>
</div>
* m-ou-se has updated the project goal 'Externally Implementable Items' with specific implementation steps.
* m-ou-se has added a timeline for the completion of the externally implementable items.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/253'><strong>Evaluate approaches for seamless interop between C++ and Rust</strong></a></div>
<div style="flex: initial;"><progress value="2" max="6"></progress>
</div>
</div>
* The lang team expresses enthusiasm for ambitious C++ interop, aiming for automated bindings for most real-world C++ code while maintaining Rust's values.
* Next steps include defining realistic milestones and diving into specific proposals with language, library, and compiler teams.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/252'><strong>Declarative (`macro_rules!`) macro improvements</strong></a></div>
<div style="flex: initial;"><progress value="3" max="29"></progress>
</div>
</div>
* Joshtriplett has integrated the latest changes from the `master` branch and resolved merge conflicts.
* Joshtriplett is currently reviewing and testing the updated declarative macro improvements for stability and performance.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/126'><strong>Instrument the Rust standard library with safety contracts</strong></a></div>
<div style="flex: initial;"><progress value="1" max="8"></progress>
</div>
</div>
* Around 220 safety contracts are written and verified in the verify-rust-std fork, with 3 out of 14 challenges solved.
* Kani is successfully integrated in the repository CI, and integration of VeriFast and Goto-transcoder (ESBMC) is in progress.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/123'><strong>Use annotate-snippets for rustc diagnostic output</strong></a></div>
<div style="flex: initial;"><progress value="0" max="13"></progress>
</div>
</div>
* Muscraft completes the design for integrating `annotate-snippets` into rustc's diagnostic output.
* Muscraft begins implementing the integration of `annotate-snippets` into rustc.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/122'><strong>Model coherence in a-mir-formality</strong></a></div>
<div style="flex: initial;"><progress value="0" max="6"></progress>
</div>
</div>
* Updates the project goal to reflect the completion of the design document and the initiation of implementation.
* Notes that Niko is on leave and will not be working on this goal during the new period.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/121'><strong>Promoting Parallel Front End</strong></a></div>
<div style="flex: initial;"><progress value="0" max="3"></progress>
</div>
</div>
* SparrowLii successfully integrates new parallel processing techniques into the front-end development workflow, enhancing efficiency and performance.
* The project goal is updated to focus on optimizing user interface responsiveness through advanced parallel front-end strategies in the new period 2025h1.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/118'><strong>Scalable Polonius support on nightly</strong></a></div>
<div style="flex: initial;"><progress value="10" max="18"></progress>
</div>
</div>
* Progress made on rewriting type tests, diagnostics issues, and fixing bugs in the Sisyphean, with all previous PRs successfully landed on nightly thanks to reviews from @jackh726 and @matthewjasper.
* Current focus is on investigating around 4 failing tests and ironing out 8-10 diagnostics differences, alongside expanding test coverage and adding visualizations to the polonius MIR dump.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/114'><strong>Optimizing Clippy & linting</strong></a></div>
<div style="flex: initial;"><progress value="0" max="2"></progress>
</div>
</div>
* A Clippy-exclusive benchmarker has been implemented, enhancing performance analysis capabilities.
* Progress has been made on optimizing Clippy's Minimum Supported Rust Version (MSRV) logic, improving efficiency for a broader range of crates.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/113'><strong>Next-generation trait solver</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* The project scope is expanded to include advanced machine learning algorithms for predictive modeling.
* Integration with external databases for real-time data access is now a priority.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/110'><strong>Extend pubgrub to match cargo's dependency resolution</strong></a></div>
<div style="flex: initial;"><progress value="0" max="2"></progress>
</div>
</div>
* PubGrub 0.3 released with critical improvements for Cargo and UV, thanks to @konstin.
* Progress delayed due to illness and high-priority work commitments.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/109'><strong>Expose experimental LLVM features for GPU offloading</strong></a></div>
<div style="flex: initial;"><progress value="2" max="4"></progress>
</div>
</div>
* The autodiff feature is nearly complete with one final PR pending for a fully working MVP, and work will commence on the `batching` feature using existing autodiff infrastructure.
* Progress has been made on adding a new AMD GPU target to the Rust compiler, which aligns with the needs of the llvm offload project.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/107'><strong>Experiment with ergonomic ref-counting</strong></a></div>
<div style="flex: initial;"><progress value="2" max="4"></progress>
</div>
</div>
* A pull request implementing the proposed RFC without optimizations is available but not yet merged.
* Focus is on addressing comments on the pull request until it is merged, after which optimizations will be implemented.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/106'><strong>Prepare const traits for stabilization</strong></a></div>
<div style="flex: initial;"><progress value="5" max="14"></progress>
</div>
</div>
* Oli-obk updates the stabilization efforts for const traits, focusing on resolving remaining issues and preparing for review.
* Progress is made in addressing feedback and ensuring const traits are ready for stabilization in the upcoming period.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/104'><strong>Continue resolving `cargo-semver-checks` blockers for merging into cargo</strong></a></div>
<div style="flex: initial;"><progress value="0" max="5"></progress>
</div>
</div>
* The goal includes prototyping and implementing several enhancements to `cargo-semver-checks` for improved linting capabilities.
* Ongoing discussion and moral support are provided by the `cargo` and `rustdoc` teams.
<div style="display: flex;" class="mt2 mb3">
<div style="flex: auto;"><a href='https://github.com/rust-lang/rust-project-goals/issues/100'><strong>"Stabilizable" prototype for expanded const generics</strong></a></div>
<div style="flex: initial;"><progress value="0" max="4"></progress>
</div>
</div>
* BoxyUwU completes the initial prototype implementation for expanded const generics.
* The prototype undergoes preliminary testing and stabilization efforts.
## Goals without updates
The following goals have not received updates in the last month: