Skip to content

propose 2025h2 Goals #3849

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

Conversation

nikomatsakis
Copy link
Contributor

@nikomatsakis nikomatsakis commented Aug 15, 2025

@nikomatsakis
Copy link
Contributor Author

nikomatsakis commented Aug 15, 2025

As in prior rounds, we'll follow an unusual FCP process here. Leads must check their boxes, others are encouraged but not required to do so.

bootstrap

  • @Mark-Simulacrum (required, lead)
  • albertlarsan68 (optional)
  • clubby789 (optional)
  • jieyouxu (optional)
  • Kobzol (optional)

cargo

  • @ehuss (required, lead)
  • 0xPoe (optional)
  • arlosi (optional)
  • Eh2406 (optional)
  • epage (optional)
  • joshtriplett (optional)
  • Muscraft (optional)
  • weihanglo (optional)

compiler

  • @davidtwco (required, lead)
  • @wesleywiser (required, lead)
  • alexcrichton (optional)
  • antoyo (optional)
  • apiraino (optional)
  • b-naber (optional)
  • bjorn3 (optional)
  • BoxyUwU (optional)
  • camelid (optional)
  • chenyukang (optional)
  • ChrisDenton (optional)
  • cjgillot (optional)
  • compiler-errors (optional)
  • cuviper (optional)
  • dianqk (optional)
  • durin42 (optional)
  • eholk (optional)
  • est31 (optional)
  • estebank (optional)
  • fee1-dead (optional)
  • flodiebold (optional)
  • fmease (optional)
  • GuillaumeGomez (optional)
  • jackh726 (optional)
  • jdonszelmann (optional)
  • jieyouxu (optional)
  • jswrenn (optional)
  • Kobzol (optional)
  • lcnr (optional)
  • lqd (optional)
  • lukas-code (optional)
  • m-ou-se (optional)
  • madsmtm (optional)
  • Mark-Simulacrum (optional)
  • mati865 (optional)
  • matthewjasper (optional)
  • Nadrieril (optional)
  • nagisa (optional)
  • nikic (optional)
  • nikomatsakis (optional)
  • nnethercote (optional)
  • Noratrieb (optional)
  • oli-obk (optional)
  • petrochenkov (optional)
  • RalfJung (optional)
  • rcvalle (optional)
  • saethlin (optional)
  • scottmcm (optional)
  • SparrowLii (optional)
  • spastorino (optional)
  • TaKO8Ki (optional)
  • tgross35 (optional)
  • the8472 (optional)
  • tmandry (optional)
  • tmiasko (optional)
  • Urgau (optional)
  • WaffleLapkin (optional)
  • workingjubilee (optional)
  • yaahc (optional)
  • Zalathar (optional)
  • ZuseZ4 (optional)

crates-io

  • @jtgeibel (required, lead)
  • @Turbo87 (required, lead)
  • 0xPoe (optional)
  • carols10cents (optional)
  • eth3lbert (optional)
  • LawnGnome (optional)
  • mdtro (optional)

infra

  • @jdno (required, lead)
  • @shepmaster (required, lead)
  • jieyouxu (optional)
  • Kobzol (optional)
  • marcoieni (optional)
  • Mark-Simulacrum (optional)
  • pietroalbini (optional)

lang

  • @nikomatsakis (required, lead)
  • @tmandry (required, lead)
  • joshtriplett (optional)
  • scottmcm (optional)
  • traviscross (optional)

lang-docs

  • @ehuss (required, lead)
  • @JohnTitor (required, lead)
  • Gankra (optional)
  • Havvy (optional)
  • matthewjasper (optional)
  • traviscross (optional)

leadership-council

libs

  • @Amanieu (required, lead)
  • @m-ou-se (required, lead)
  • cuviper (optional)
  • joshtriplett (optional)
  • the8472 (optional)
  • thomcc (optional)

libs-api

  • Amanieu (optional)
  • BurntSushi (optional)
  • dtolnay (optional)
  • joshtriplett (optional)
  • m-ou-se (optional)
  • the8472 (optional)

opsem

  • @JakobDegen (required, lead)
  • @RalfJung (required, lead)
  • CAD97 (optional)
  • digama0 (optional)
  • saethlin (optional)

project-exploit-mitigations

  • @rcvalle (required, lead)
  • 1c3t3a (optional)
  • cuviper (optional)

rustdoc

  • @GuillaumeGomez (required, lead)
  • aDotInTheVoid (optional)
  • camelid (optional)
  • fmease (optional)
  • jsha (optional)
  • Manishearth (optional)
  • Nemo157 (optional)
  • notriddle (optional)

spec

  • @nikomatsakis (required, lead)
  • ehuss (optional)
  • JoelMarcey (optional)
  • joshtriplett (optional)
  • traviscross (optional)

testing-devex

  • @calebcartwright (required, lead)
  • epage (optional)
  • Muscraft (optional)
  • thomcc (optional)
  • weihanglo (optional)

types

  • @jackh726 (required, lead)
  • @lcnr (required, lead)
  • aliemjay (optional)
  • BoxyUwU (optional)
  • compiler-errors (optional)
  • nikomatsakis (optional)
  • oli-obk (optional)
  • spastorino (optional)

wg-compiler-performance

  • @Mark-Simulacrum (required, lead)
  • Jamesbarford (optional)
  • Kobzol (optional)
  • lqd (optional)
  • nnethercote (optional)
  • panstromek (optional)
  • Zoxc (optional)

wg-mir-opt

  • @oli-obk (required, lead)
  • dianqk (optional)
  • eddyb (optional)
  • JakobDegen (optional)
  • vertexclique (optional)
  • wesleywiser (optional)

@nikomatsakis nikomatsakis self-assigned this Aug 15, 2025
Co-authored-by: Eric Holk <eric@theincredibleholk.org>
@eholk
Copy link
Contributor

eholk commented Aug 15, 2025

I love seeing how many goals are like "this builds on work from previous goals," or "this goal resolves blockers discovered in previous goals." It shows the goal program has been going long enough that it's starting to build some momentum throughout the project.

@ehuss
Copy link
Contributor

ehuss commented Aug 16, 2025

Similar to last time, I would recommend changing leadership-council to not be optional.

Copy link
Member

@Kobzol Kobzol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job! Looks really good.

| [Production-ready cranelift backend](https://rust-lang.github.io/rust-project-goals/2025h2/production-ready-cranelift.html) | [Folkert de Vries][] | [compiler], [wg-compiler-performance] |


The "Flexible, fast(er) Rust builds" initiative focuses on improving Rust's build system to better serve both specialized use cases and everyday development workflows:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "Rust's build system" mean? It sounds like the goal is to improve bootstrap 😅 Maybe something like "focuses on improving compilation of Rust programs ..."?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cargo is rust's canonical build system. Absolutely no doubt in my mind it means "improving cargo"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, that didn't even cross my mind. Maybe if it was "Rust build system", but "Rust's build system" sounds to me like it builds Rust, not builds Rust programs. Anyway, apart from build-std, these improvements are not Cargo specific.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me rephrase for greater clarity!

[Tomas Sedovic]: https://github.com/tomassedovic
[TC]: https://github.com/traviscross
[Weihang Lo]: https://github.com/weihanglo
[@whlo]: https://github.com/whlo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of my handle are wrong.

@whlo should be either Weihang Lo or @weihanglo.

rust-lang/rust-project-goals#375

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D'oh! Thanks.

@nikomatsakis
Copy link
Contributor Author

Similar to last time, I would recommend changing leadership-council to not be optional.

So, that falls out from not having a lead. I can definitely tweak the script but I'm curious to hear your reasoning on that. Is it because you think the LC should generally be aligned on the "goal slate overall" or is it related to the Vision Doc goal, which is the only one that cited the LC.

@ehuss
Copy link
Contributor

ehuss commented Aug 16, 2025

LC should generally be aligned on the "goal slate overall" or is it related to the Vision Doc goal, which is the only one that cited the LC.

Just the Vision Doc goal. It's just a formality, since I believe we've already says "yes" to it. I would just like to be careful with teams that don't have a lead to avoid things slipping through without consensus. Last time there were goals we weren't even aware of, so it was a bit different.

@nikomatsakis
Copy link
Contributor Author

@ehuss ok, I'll make the change

| [Production-ready cranelift backend](https://rust-lang.github.io/rust-project-goals/2025h2/production-ready-cranelift.html) | \*1 |


\*1: track and show `rustc_codegen_cranelift` performance ([from here](https://rust-lang.github.io/rust-project-goals/2025h2/production-ready-cranelift.html))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we clarify whether this means wg-compiler-performance owning the implementation and deployment work? I think the ongoing project from Arm on adding aarch64 (https://rust-lang.github.io/rust-project-goals/2025h1/perf-improvements.html) is probably a pre-requisite or at least strongly related to this.

I don't think the team as-is can commit to this happening without outside contributions (including potentially a funding ask from the Foundation, depending on how long the additional tests take -- presumably just limited to the dev profile?).

If we can just switch to cranelift only that's much easier to pull off though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The linked rustc-perf project is 100% a pre-requisite for this. That being said, I expect it to be prepared for deployment in 2-3 months, so it should coincide with the Cranelift project fine, I think.

Once the new rustc-perf scheme lands, we will be able to do Cranelift benchmarks on demand on arbitrary PRs (it will backfill the missing results for the parent commit, which doesn't happen now).

If we want to automatically run Clif on each perf. run by default, that's also doable, we'd "just" need to buy a second perf. machine on Hetzner.

| [Prototype a new set of Cargo "plumbing" commands](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-plumbing.html) | ![Help Wanted][] | [cargo] |
| [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-script.html) | [Ed Page][] | [cargo] ([Ed Page][]), [compiler], [lang] ([Josh Triplett][]), [lang-docs] ([Josh Triplett][]) |
| [Continue resolving `cargo-semver-checks` blockers for merging into cargo](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-semver-checks.html) | [Predrag Gruevski][] | [cargo] ([Ed Page][]), [rustdoc] ([Alona Enraght-Moony][]) |
| [Emit Retags in Codegen](https://rust-lang.github.io/rust-project-goals/2025h2/codegen_retags.html) | [Ian McCormack][] | [compiler] ([Ralf Jeffery][]), [opsem] ([Ralf Jeffery][]) |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can only guess that this means @RalfJung instead of Ralf Jeffery (ralfj@ on GH)? cc: @icmccorm.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes—that was a typo, thanks!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops, let me see if I can fix that :)

* [Polonius](https://rust-lang.github.io/rust-project-goals/2025h2/./polonius.html) will enable new borrowing patterns, and in particular [unblock "lending iterators"](https://github.com/rust-lang/rust/issues/92985). Over the last few goal periods we have identified an "alpha" vesion of polonius that addresses the most important cases while being relatively simple and optimizable. Our goal for 2025H2 is to implement this algorithm in a form that is ready for stabilization in 2026.
* The [next gen trait solver](https://rust-lang.github.io/rust-project-goals/2025h2/./next-solver.html) is a refactored trait solver that unblocks better support for numerous language features (implied bounds, negative impls, the list goes on) in addition to closing a number of existing bugs and unsoundnesses. Over the last few goal periods, the trait solver went from early prototype to being production use in coherence. The goal for 2025H2 is to prepare it for use throughout the compiler.
* The work on [evolving trait hierarchies](https://rust-lang.github.io/rust-project-goals/2025h2/./evolving-traits.html) will make it possible to refactor some parts of an existing trait out into a new supertrait so they can be used on their own. This unblocks a number of features where the existing trait is insufficiently general, in particular stabilizing support for custom receiver types, a prior project goal that wound up blocking on this refactoring.
* The work to [expand Rust's `Sized` hierarchy](https://rust-lang.github.io/rust-project-goals/2025h2/./scalable-vectors.html) will permit us to express types that are neither `Sized` nor `?Sized`, such as extern types (which have no size) or ARM's Scalable Vector Extensions (which have a size that is known at runtime, but not compilation time). This goal builds on [RFC #3729](https://github.com/rust-lang/rfcs/pull/3729)[] and [RFC #3838](https://github.com/rust-lang/rfcs/pull/3838)[], authored in previous project goal periods.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* The work to [expand Rust's `Sized` hierarchy](https://rust-lang.github.io/rust-project-goals/2025h2/./scalable-vectors.html) will permit us to express types that are neither `Sized` nor `?Sized`, such as extern types (which have no size) or ARM's Scalable Vector Extensions (which have a size that is known at runtime, but not compilation time). This goal builds on [RFC #3729](https://github.com/rust-lang/rfcs/pull/3729)[] and [RFC #3838](https://github.com/rust-lang/rfcs/pull/3838)[], authored in previous project goal periods.
* The work to [expand Rust's `Sized` hierarchy](https://rust-lang.github.io/rust-project-goals/2025h2/./scalable-vectors.html) will permit us to express types that are neither `Sized` nor `?Sized`, such as extern types (which have no size) or Arm's Scalable Vector Extension (which have a size that is known at runtime, but not compilation time). This goal builds on [RFC #3729](https://github.com/rust-lang/rfcs/pull/3729)[] and [RFC #3838](https://github.com/rust-lang/rfcs/pull/3838)[], authored in previous project goal periods.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@davidtwco I merged some changes to this text, can you double check ?


[Bastian Kersting]: https://github.com/1c3t3a
[Amanieu d'Antras]: https://github.com/Amanieu
[@BN]: https://github.com/BN
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is supposed to be https://github.com/b-naber.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

[Guillaume Gomez]: https://github.com/GuillaumeGomez
[James]: https://github.com/Jamesbarford
[Pete LeVasseur]: https://github.com/PLeVasseur
[Ralf Jeffery]: https://github.com/RalfJ
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

[Aapo Alasuutari]: https://github.com/aapoalas
[Alona Enraght-Moony]: https://github.com/adotinthevoid
[Jon Bauman]: https://github.com/baumanj
[@boxy]: https://github.com/boxy
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

[Folkert de Vries]: https://github.com/folkertdev
[Frank King]: https://github.com/frank-king
[Ian McCormack]: https://github.com/icmccorm
[Tugce Ciftci]: https://github.com/imperio
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

[Ian McCormack]: https://github.com/icmccorm
[Tugce Ciftci]: https://github.com/imperio
[Jack Huey]: https://github.com/jackh726
[@jackwrenn]: https://github.com/jackwrenn
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you :)

| [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html) | [Alice Ryhl][] | [lang] ([Taylor Cramer][]) |
| [C++/Rust Interop Problem Space Mapping](https://rust-lang.github.io/rust-project-goals/2025h2/interop-problem-map.html) | [Jon Bauman][] | [compiler] ([Oliver Scherer][]), [lang] ([Tyler Mandry][]), [libs] ([David Tolnay][]), [opsem] |
| [Finish the libtest json output experiment](https://rust-lang.github.io/rust-project-goals/2025h2/libtest-json.html) | [Ed Page][] | [cargo] ([Ed Page][]), [libs-api], [testing-devex] |
| [MIR move elimination](https://rust-lang.github.io/rust-project-goals/2025h2/mir-move-elimination.html) | [Amanieu d'Antras][] | [compiler], [lang] ([Amanieu d'Antras][]), [opsem], [wg-mir-opt] |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amanieu is not in t-lang though, so... what does this row mean?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

He's an advisor.

nikomatsakis and others added 4 commits August 19, 2025 09:24
Co-authored-by: Josh Triplett <josh@joshtriplett.org>
Co-authored-by: Josh Triplett <josh@joshtriplett.org>
Co-authored-by: lcnr <rust@lcnr.de>
Co-authored-by: lcnr <rust@lcnr.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.