The Rust project is currently working towards a slate of 16 project goals, with 0 of them designated as Roadmap 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.
Roadmap goals
Goals looking for help
Other goal updates
| Progress | |
| Point of contact | |
| Champions |
1 detailed update available.
Done in https://github.com/rust-lang/rust-forge/pull/852.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
No detailed updates available.
| Progress | |
| Point of contact | |
| Champions |
bootstrap (Jakub Beránek), lang (Niko Matsakis), spec (Pete LeVasseur) |
| Task owners |
Pete LeVasseur, Contributors from Ferrous Systems and others TBD, |
2 detailed updates available.
Meeting minutes from meeting held on 2025-10-31 (thank you to Tomas Sedovic 🥰)
Top-level:
- Keep high quality bar, merge small, well-vetted changes when possible
- Need concentrated effort to get the 1.90 FLS updates merged
- Hristian Kirtchev and Tshepang Mbambo are navigating this currently with TC
- Once 1.90 merged, we attempt first go as a team at 1.91
Discussion:
- Suggest that everyone read the Glossary as a starting point
- How to best triage / handle incoming issues?
- TC and Pete LeVasseur moved labels onto FLS repo that were needed
- Pete LeVasseur created issue template, that's in review, to help focus triage
Meeting notes here: 2025-11-14 - t-fls Meeting
Key developments: PR merged for 1.90 update of the FLS. We're preparing now to work on the 1.91 update of the FLS. Blockers: None currently Help wanted: Anyone that's familiar with the Rust Reference is more than encouraged to read through the FLS to get a sense of it and where further alignment may be possible. Feel free to open issues on the FLS repo as you find things.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
1 detailed update available.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
Taylor Cramer, Taylor Cramer & others |
No detailed updates available.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
Amanieu d'Antras, Guillaume Gomez, Jack Huey, Josh Triplett, lcnr, Mara Bos, Vadim Petrochenkov, Jane Lusby |
1 detailed update available.
We're putting together a prototype/demo of our reference changes at https://rust-lang.github.io/project-goal-reference-expansion/ . This includes a demonstration of tooling changes to provide stability markers (both "documenting unstable Rust" and "unstable documentation of stable Rust").
| Progress | |
| Point of contact | |
| Champions |
compiler (Manuel Drehwald), lang (TC) |
| Task owners |
Manuel Drehwald, LLVM offload/GPU contributors |
1 detailed update available.
Automatic Differentiation
Time for the next update. By now, we've had std::autodiff for around a year in upstream rustc, but not in nightly. In order to get some more test users, I asked the infra team to re-evaluate just shipping autodiff as-is. This means that for the moment, we will increase the binary size of rustc by ~5%, even for nightly users who don't use this feature. We still have an open issue to avoid this overhead by using dlopen, please reach out if you have time to help. Thankfully, my request was accepted, so I spent most of my time lately preparing that release.
- As part of my cleanup I went through old issues, and realized we now partly support rlib's! That's a huge improvement, because it means you can use autodiff not only in your
main.rsfile, but also in dependencies (eitherlib.rs, or even rely on crates that use autodiff). With the help of Ben Kimock I figured out how to get the remaining cases covered, hopefully the PR will land soon. - I started documentation improvements in https://github.com/rust-lang/rust/pull/149082 and https://github.com/rust-lang/rust/pull/148201, which should be visible on the website from tomorrow onwards. They are likely still not perfect, so please keep opening issues if you have questions.
- We now provide a helpful error message if a user forgets enabling
lto=fat: https://github.com/rust-lang/rust/pull/148855 - After two months of work, sgasho managed to add Rust CI to enzyme! Unfortunately, Enzyme devs broke and disabled it directly, so we'll need to talk about maintaining it as part of shipping Enzyme in nightly.
I have the following elements on my TODO list as part shipping AD on nightly
- Re-enable macOS build (probably easy)
- Talk with Enzyme Devs about maintenance
- Merge rlib support (under review)
- upstream ADbenchmarks from r-l/enzyme to r-l/r as codegen tests (easy)
- Write a block post/article for https://blog.rust-lang.org/inside-rust/
GPU offload
- The llvm dev talk about GPU programming went great, I got to talk to a lot of other developers in the area of llvm offload. I hope to use some of the gained knowledge soon. Concrete steps planned are the integration of libc-gpu for IO from kernels, as well as moving over my code from the OpenMP API to the slightly lower level liboffload API.
- We confirmed that our gpu offload prototype works on more hardware. By now we have the latest AMD APU generation covered, as well as an MI 250X and an RTX 4050. My own Laptop with a slightly older
AMD Ryzen 7 PRO 7840Uunfortunately turned out to be not supported by AMD drivers. - The offload intrinsic PR by Marcelo Domínguez is now marked as ready, and I left my second round of review. Hopefully, we can land it soon!
- I spend some time trying to build and potentially ship the needed offload changes in nightly, unfortunately I still fail to build it in CI: https://github.com/rust-lang/rust/pull/148671.
All in all, I think we made great progress over the last month, and it's motivating that we finally have no blockers left for flipping the llvm.enzyme config on our nightly builds.
| Progress | |
| Point of contact | |
| Champions |
lang (Josh Triplett), lang-docs (TC) |
| Task owners |
2 detailed updates available.
Update from the 2025-11-05 meeting.
Deref/Receiver
Ding Xiang Fei posted his reasoning for the trait split in the Zulip thread and suggested adding a second RFC to explain.
TC recommended writing a Reference PR. The style forces one to explain the model clearly which should then make writing the RFC easier.
The lang experiment PR for arbitrary self types have feature gates for the two options we're exploring.
Arbitrary Self Types and derive(CoercePointee) / tracking issue #44874
theemathas opened an issue derive(CoercePointee) accepts ?Sized + Sized #148399. This isn't a critical issue, just an error that arguably should be a lint.
Boxy opened a fix for a derive(CoercePointee) blocker: Forbid freely casting lifetime bounds of dyn-types
.
RFC #3851: Supertrait Auto-impl
Ding Xiang Fei is working on the implementation (the parser and HIR interface for it). Ding's also working on a more complete section dedicated to questions raised by obi1kenobi
Field projections
Benno Lossin has been posting super detailed updates on the tracking issue
We've discussed the idea of virtual places (see Zulip thread where they were proposed).
Inlining C code into Rust code
Matt Mauer had an idea to compile C code into LLVM bytecode (instead of object file) and then the llvm-link tool to merge them together and treat everything in the second bytecode file as a static inlined function. Matt suggested we could integrate this into the rustc passes.
This would make it easy to inline certain functions into Rust code without full LTO.
Relevant Zulip thread.
This sounds like a good candidate for the next Project Goals period.
Update from the 2025-11-19 meeting.
rustdoc checking for private and hidden items (rust##149105 & rust#149106)
Miguel proposed Rust Doc checking for invalid links to items that are hidden or private even if no docs are built for them. This can help catch typos or dead links because the docs became out of date.
Guillaume was much more open to this being a toggle, lolbinarycat opened a PR here: https://github.com/rust-lang/rust/pull/141299
unsafe_op_in_unsafe_fn not respected in imported declarative macros rust#112504
This lint doesn't trigger when importing a declarative macro that's calling unsafe code without having an unsafe block and without a SAFETY comment.
The lint is only triggered when the macro was actually used.
Fix for imports_granularity is not respected for #[cfg]'d items / rustfmt#6666
Ding opened a PR to fix this: https://github.com/rust-lang/rustfmt/issues/6666
rustfmt trailing comma hack
Ding and Manish were talking about writing up a proper fix for the vertical layout that's currently being solved by the , //, hack
TypeId layout
This has been discussed in https://github.com/rust-lang/rust/pull/148265 and https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/TypeID.20design/near/560189854.
Apiraino proposed a compiler design meeting here: https://github.com/rust-lang/compiler-team/issues/941. That meeting has not been scheduled yet, though.
Deref / Receiver
Following TC's recommendation, Ding is drafting the Reference PR.
Arbitrary Self Types and derive(CoercePointee)
Ding opened a PR to fix unsoundness in the DispatchFromDyn trait: https://github.com/rust-lang/rust/pull/149068
Theemathas opened a question on whether Receiver should by dyn-compatible: https://github.com/rust-lang/rust/issues/149094
RFC #3848: Pass pointers to const in assembly
Merged!
In-place initialization
Benno noted that Effects and In-place Init are not compatible with each other: https://rust-lang.zulipchat.com/#narrow/channel/528918-t-lang.2Fin-place-init/topic/Fundamental.20Issue.20of.20Effects.20and.20In-place-init/with/558268061
This is going to affect any in-place init proposal.
Benno proposes fixing this with keyword generics. This is a topic that will receive a lot of discussion doing forward.
Alice has been nominated and accepted as language-advisor. Fantastic news and congratulations!
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
bjorn3, Folkert de Vries, [Trifecta Tech Foundation] |
No detailed updates available.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
2 detailed updates available.
Instead of using a full-fledged database like SQLite, we switched to a basic JSONL-based logging system to collect build metrics. A simple design doc can be found here: https://hackmd.io/K5-sGEJeR5mLGsJLXqsHrw.
Here are the recent pull requests:
- https://github.com/rust-lang/cargo/pull/16150
- https://github.com/rust-lang/cargo/pull/16179
To enable it, set CARGO_BUILD_ANALYSIS_ENABLED=true or set the Cargo config file like this:
[build.analysis]
enabled = true
As of today (nightly-2025-11-03), it currently emits build-started and timing-info two log events to $CARGO_HOME/log/ (~/.cargo/log/ by default). The shape of timing-info JSON is basically the shape of the unstable --timing=json. I anticipate when this is stabilized we don't need --timing=json.
The build.analysis.enable is a non-blocking unstable feature. Unless bugs, should be able to set unconditionally even on stable toolchain. When not supported, it would just warn the unknown config merely.
Key developments: Started emitting basic fingerprint information, and kicked off the refactor of rendering HTML timing report for future report replay through cargo report timings command.
- https://github.com/rust-lang/cargo/pull/16203
- https://github.com/rust-lang/cargo/pull/16282
Blockers: no except my own availability
Help wanted: Mendy on Zulip brought up log compression (#t-cargo > build analysis log format @ 💬) but I personally don't have time looking at it durnig this period. Would love to see people create an issue in rust-lang/cargo and help explore the idea.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
@dropbear32, @osiewicz |
1 detailed update available.
linking this here so people know why there hasn't been any progress on this project goal.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
1 detailed update available.
Status update November 21, 2025
October was largely spent working out design details of the build cache and locking design.
https://github.com/rust-lang/cargo/pull/16155 was opened with an initial implementation for fine grain locking for Cargo's build-dir however it needs to be reworked after the design clarifications mentioned above.
In November I had a change of employer so I my focus was largely on that. However, we did make some progress towards locking in https://github.com/rust-lang/cargo/pull/16230 which no longer lock the artifact-dir for cargo check. This is expected to land in 1.93.0.
I'm hoping to push fine grain locking forward later this month and in December.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
1 detailed update available.
This project goal has been completed. I updated the first issue to reflect it. Closing the issue then.
| Progress | |
| Point of contact | |
| Task owners |
vision team |
1 detailed update available.
Update:
Jack Huey has been doing great work building out a system for analyzing interviews. We are currently looking at slicing the data along a few dimensions:
- What you know (e.g., experience in other languages, how much experience with Rust)
- What you are trying to do (e.g., application area)
- Where you are trying to do it (e.g., country)
and asking essentially the same set of questions for each, e.g., what about Rust worked well, what did not work as well, what got you into Rust, etc.
Our plan is to prepare a draft of an RFC with some major conclusions and next steps also a repository with more detailed analysis (e.g., a deep dive into the Security Critical space).
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |
1 detailed update available.
The new system has been running in production without any major issues for a few weeks now. In a few weeks, I plan to start using the second collector, and then announce the new system to Project members to tell them how they can use its new features.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |