Skip to content

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 <[email protected]>
@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 :)

Choose a reason for hiding this comment

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

I opened #376 with a fix for this — sorry for the delay!


[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.

This is supposed to be https://github.com/RalfJung.

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.

* [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 stabilization.
* 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. This will also make it safer to provide stable traits in the standard library, while preserving the ability to evolve them in the future.
* 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.

| [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html) | | Two design meetings | | |
| [MIR move elimination](https://rust-lang.github.io/rust-project-goals/2025h2/mir-move-elimination.html) | | || |
| [Nightly support for Autoreborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |
| ↳ Design autoreborrow internals | \*2 | || |
Copy link
Member

Choose a reason for hiding this comment

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

I think this one should focus on the experiment, and perhaps design meeting to surface open questions and get feedback. This is a design that I think would benefit a lot from an experiment to prove it out ahead of accepting an RFC, so it's unlikely we can do so this year. cc @aapoalas

Choose a reason for hiding this comment

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

Put in suggested changes to the three lines to go along these lines more.

| [C++/Rust Interop Problem Space Mapping](https://rust-lang.github.io/rust-project-goals/2025h2/interop-problem-map.html) | | | | |
| [Const Generics](https://rust-lang.github.io/rust-project-goals/2025h2/const-generics.html) | | \*3 | | |
| [Continue Experimentation with Pin Ergonomics](https://rust-lang.github.io/rust-project-goals/2025h2/pin-ergonomics.html) | || | |
| [Design a language feature to solve Field Projections](https://rust-lang.github.io/rust-project-goals/2025h2/field-projections.html) | \*5 | \*4 || |
Copy link
Member

Choose a reason for hiding this comment

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

Getting to an RFC decision this year seems like a stretch, unless we try the "RFC the problem statement and solution criteria" approach. The design has had many iterations which puts it farther along, but there are still some major open questions, and the experiment is just getting started. cc @BennoLossin

Copy link

@BennoLossin BennoLossin Aug 30, 2025

Choose a reason for hiding this comment

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

Yeah I originally put it there since I wasn't 100% aware of the lang experiment process and I thought we'd need an RFC to have an experiment. As Tyler already said, there are some major open questions that we have to answer before we can have a new RFC. It might be possible that we make lots of progress and are able to have satisfying answers by the end of the year, but we also might not make progress on some of them. So I would lower the expectations of producing a finished RFC, let alone deciding to merge one.

| ↳ Finish and stabilize `arbitrary_self_types` and `derive_coerce_pointee` | | | ||
| [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html) | | Two design meetings | | |
| [MIR move elimination](https://rust-lang.github.io/rust-project-goals/2025h2/mir-move-elimination.html) | | || |
| [Nightly support for Autoreborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |

Choose a reason for hiding this comment

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

Maybe we can simplify the name here; the code has drifted from "Autoreborrow" to using just "Reborrow", and "Nightly support for" is kind of superfluous.

Suggested change
| [Nightly support for Autoreborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |
| [Reborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |

or perhaps "Reborrow traits experiment".

| [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html) | | Two design meetings | | |
| [MIR move elimination](https://rust-lang.github.io/rust-project-goals/2025h2/mir-move-elimination.html) | | || |
| [Nightly support for Autoreborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |
| ↳ Design autoreborrow internals | \*2 | || |

Choose a reason for hiding this comment

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

Suggested change
|Design autoreborrow internals | \*2 | || |
|Experiment with Reborrow trait design | \*2 | || |

| [MIR move elimination](https://rust-lang.github.io/rust-project-goals/2025h2/mir-move-elimination.html) | | || |
| [Nightly support for Autoreborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | | | | |
| ↳ Design autoreborrow internals | \*2 | || |
| ↳ Implement non-recursive autoreborrowing | || | |

Choose a reason for hiding this comment

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

Suggested change
|Implement non-recursive autoreborrowing | || | |
|Seek feedback for an RFC based on experiment | || | |

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.