2025-02 Update (deprecated)
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, with 3 of them designated 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.
Introducing the flagship goals
<progress value="6" max="28"></progress>
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.
<progress value="8" max="22"></progress>
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.
<progress value="5" max="34"></progress>
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, 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 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 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 was released, with another release in the works. We think we are approaching a 1.0 release real soon now ™. 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 is fixed.
Other
The async project goal was accepted for 2025H1!
Goals with updates
<progress value="0" max="7"></progress>
- 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.
<progress value="0" max="4"></progress>
- 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.
<progress value="1" max="7"></progress>
- The MVP for unsafe fields is limited to additive invariants.
- Consensus reached in the Feb 19 Lang Team Design Meeting.
<progress value="0" max="5"></progress>
- Help wanted: the project goal requires a compiler developer to proceed.
- The goal remains assigned to epage for coordination and oversight.
<progress value="0" max="12"></progress>
- 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.
<progress value="2" max="16"></progress>
- @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.
<progress value="0" max="4"></progress>
- 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.
<progress value="6" max="13"></progress>
- 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.
<progress value="2" max="11"></progress>
- 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.
<progress value="0" max="6"></progress>
- 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.
<progress value="0" max="5"></progress>
- 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.
<progress value="0" max="4"></progress>
- Help wanted: this project goal needs someone to work on the implementation.
- Interest expressed by an individual to collaborate on the implementation work.
<progress value="1" max="3"></progress>
- Null-checks have been successfully implemented and merged in rust#134424.
- Focus shifts to implementing enum discriminant checks as the next phase of the project.
<progress value="0" max="5"></progress>
<progress value="0" max="6"></progress>
- 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.
<progress value="0" max="5"></progress>
<progress value="1" max="6"></progress>
- 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.
<progress value="0" max="8"></progress>
- 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.
<progress value="0" max="3"></progress>
- 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.
<progress value="0" max="4"></progress>
- 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.
<progress value="2" max="9"></progress>
- 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.
<progress value="2" max="6"></progress>
- 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.
<progress value="3" max="29"></progress>
- 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.
<progress value="1" max="8"></progress>
- 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.
<progress value="0" max="13"></progress>
- Muscraft completes the design for integrating
annotate-snippets
into rustc's diagnostic output.
- Muscraft begins implementing the integration of
annotate-snippets
into rustc.
<progress value="0" max="6"></progress>
- 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.
<progress value="0" max="3"></progress>
- 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.
<progress value="10" max="18"></progress>
- 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.
<progress value="0" max="2"></progress>
- 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.
<progress value="0" max="4"></progress>
- 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.
<progress value="0" max="2"></progress>
- PubGrub 0.3 released with critical improvements for Cargo and UV, thanks to @konstin.
- Progress delayed due to illness and high-priority work commitments.
<progress value="2" max="4"></progress>
- 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.
<progress value="2" max="4"></progress>
- 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.
<progress value="5" max="14"></progress>
- 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.
<progress value="0" max="5"></progress>
- 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.
<progress value="0" max="4"></progress>
- 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: