The Rust project is currently working towards a slate of 3 project goals, with 0 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.
Flagship 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 |
3 detailed updates available.
Google Summer of Code 2025 is complete + finally some movement on cross-crate linting! 🚀
Key developments
- Two students had a successful conclusion of Google Summer of Code working on
cargo-semver-checks— find more details here! - rustdoc JSON now includes rlib information, following the design for cross-crate rustdoc JSON info created at RustWeek 2025: https://github.com/rust-lang/rust/pull/149043
- A cargo issue was discovered that prevents this rlib info from being used; it's currently being triaged: https://github.com/rust-lang/cargo/issues/16291
- Once that's resolved, we'll have enough here for a basic prototype. Getting features right in dependencies will likely require more work due to having many more cargo-related edge cases.
Status update as of November 1
Key developments:
- Draft PR for exposing implied bounds in rustdoc JSON: https://github.com/rust-lang/rust/pull/148379
- A concrete plan for how that new info turns into dozens of new lints covering many kinds of bounds
Linting ?Sized and 'static bounds turned out to be quite a bit more complex than I anticipated. The key issue is that seeing T: Foo + ?Sized does not guarantee that T can be unsized, since we might have Foo: Sized which renders the ?Sized relaxation ineffective. Similarly, seeing T: Foo might also non-obviously imply T: 'static via a similar implied bound.
Failure to correctly account for implied bounds would lead to catastrophic false-positives and false-negatives. For example, changing T: Foo to T: Foo + 'static could be a major breaking change or a no-op, depending on whether we have Foo: 'static (either directly or implicitly via other trait bounds).
We cannot determine implied bounds using information present in rustdoc JSON today, so the rustdoc team and I have been iterating on the best way to compute and include that information in rustdoc JSON. Assuming something similar to the aforementioned PR becomes part of rustdoc JSON, cargo-semver-checks stands to gain several dozen new lints covering these tricky cases over trait associated types, generic type parameters, and APIT/RPIT/RPITIT.
Just removed the duplicate posts, guessing from a script that had a bad day.
| Progress | |
| Point of contact | |
| Champions | |
| Task owners |