Skip to content

initial draft for 2026 project goals#3935

Open
nikomatsakis wants to merge 4 commits intorust-lang:masterfrom
nikomatsakis:rust-project-goals-2026
Open

initial draft for 2026 project goals#3935
nikomatsakis wants to merge 4 commits intorust-lang:masterfrom
nikomatsakis:rust-project-goals-2026

Conversation

@nikomatsakis
Copy link
Copy Markdown
Contributor

@nikomatsakis nikomatsakis commented Mar 25, 2026

Establish the initial round of Rust Project Goals for 2026 along with a set of current roadmaps, which describe multi-year development arcs.

New Rust Project Goals may be added over the course of the year but only if all required resources (champions, funding, etc) are already known.

Important

When responding to RFCs, try to use inline review comments (it is possible to leave an inline review comment for the entire file at the top) instead of direct comments for normal comments and keep normal comments for procedural matters like starting FCPs.

This keeps the discussion more organized.

Rendered

Caution

Concerns (1 active)

Managed by @rustbot—see help for details.

@nikomatsakis
Copy link
Copy Markdown
Contributor Author

nikomatsakis commented Mar 25, 2026

FCP Process

Per our usual process, to be accepted, we require checkboxes from the leads of every team with a "team ask". Checkboxes from other members are encouraged but not required.

book

bootstrap

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

cargo

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

clippy

  • @flip1995 (required, lead)
  • @Manishearth (required, lead)
  • ada4a (optional)
  • Alexendoo (optional)
  • blyxyas (optional)
  • Centri3 (optional)
  • dswij (optional)
  • Jarcho (optional)
  • llogiq (optional)
  • matthiaskrgr (optional)
  • samueltardieu (optional)
  • y21 (optional)

compiler

  • @davidtwco (required, lead)
  • @wesleywiser (required, lead)
  • adwinwhite (optional)
  • alexcrichton (optional)
  • Amanieu (optional)
  • antoyo (optional)
  • apiraino (optional)
  • b-naber (optional)
  • bjorn3 (optional)
  • BoxyUwU (optional)
  • camelid (optional)
  • chenyukang (optional)
  • ChrisDenton (optional)
  • cjgillot (optional)
  • cuviper (optional)
  • dianne (optional)
  • dianqk (optional)
  • dingxiangfei2009 (optional)
  • durin42 (optional)
  • eholk (optional)
  • Enselic (optional)
  • est31 (optional)
  • estebank (optional)
  • fee1-dead (optional)
  • flodiebold (optional)
  • fmease (optional)
  • GuillaumeGomez (optional)
  • jackh726 (optional)
  • jdonszelmann (optional)
  • jieyouxu (optional)
  • JohnTitor (optional)
  • JonathanBrouwer (optional)
  • jswrenn (optional)
  • Kivooeo (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)
  • tiif (optional)
  • tmandry (optional)
  • tmiasko (optional)
  • Urgau (optional)
  • WaffleLapkin (optional)
  • workingjubilee (optional)
  • yaahc (optional)
  • Zalathar (optional)
  • ZuseZ4 (optional)

crate-maintainers

  • Amanieu (optional)
  • Byron (optional)
  • ChrisDenton (optional)
  • JohnTitor (optional)
  • jongiddy (optional)
  • joshtriplett (optional)
  • Kobzol (optional)
  • KodrAus (optional)
  • lcnr (optional)
  • madsmtm (optional)
  • NobodyXu (optional)
  • tgross35 (optional)
  • the8472 (optional)
  • thomcc (optional)
  • workingjubilee (optional)

crates-io

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

edition

fls

  • @PLeVasseur (required, lead)
  • AlexCeleste (optional)
  • kirtchev-adacore (optional)
  • traviscross (optional)
  • tshepang (optional)

infra

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

lang

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

lang-docs

leadership-council

  • ehuss (required)
  • Kobzol (required)
  • lqd (required)
  • m-ou-se (required)
  • oli-obk (required)
  • traviscross (required)

libs

  • @Amanieu (required, lead)
  • cuviper (optional)
  • joshtriplett (optional)
  • the8472 (optional)
  • thomcc (optional)

libs-api

  • Amanieu (optional)
  • BurntSushi (optional)
  • dtolnay (optional)
  • joshtriplett (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)
  • jakos-sec (optional)

rustdoc

  • @GuillaumeGomez (required, lead)
  • aDotInTheVoid (optional)
  • camelid (optional)
  • fmease (optional)
  • lolbinarycat (optional)
  • Manishearth (optional)
  • notriddle (optional)
  • Urgau (optional)
  • yotamofek (optional)

rustfmt

rustup

  • @rami3l (required, lead)
  • ChrisDenton (optional)
  • djc (optional)
  • FranciscoTGouveia (optional)

spec

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

style

  • @calebcartwright (required, lead)
  • joshtriplett (optional)
  • traviscross (optional)

testing-devex

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

types

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

wg-mir-opt

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

wg-parallel-rustc

  • @cjgillot (required, lead)
  • bjorn3 (optional)
  • Kobzol (optional)
  • nnethercote (optional)
  • SparrowLii (optional)

| | | [lang][] | [Tyler Mandry][] |
| | | [compiler][] | *n/a* |
| | | [libs][] | *n/a* |
| | | [opsem][] | *n/a* |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It's still unclear to us what the opsem ask even is here. This doesn't sound like a goal that has opsem aspects.

| [Continue resolving `cargo-semver-checks` blockers for merging into cargo](https://rust-lang.github.io/rust-project-goals/2026/cargo-semver-checks.html) | [Predrag Gruevski][] | [cargo][] | *n/a* |
| | | [rustdoc][] | *n/a* |
| [Improving Unsafe Code Documentation in the Rust Standard Library](https://rust-lang.github.io/rust-project-goals/2026/improve-std-unsafe.html) | @hxuhack | [libs][] | *n/a* |
| | | [opsem][] | *n/a* |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The opsem ask was unclear to us here, this seems to be mostly about library documentation. Without a libs champion, is this goal even happening?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The asks are all Small, so the goal doesn't need champions

| [C++/Rust Interop Problem Space Mapping](https://rust-lang.github.io/rust-project-goals/2026/interop-problem-map.html) | [teor][] | [compiler][] | *n/a* |
| | | [lang][] | *n/a* |
| | | [libs-api][] | *n/a* |
| | | [opsem][] | *n/a* |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We haven't found someone who's able to dedicate substantial amounts of time for this. The usual kind of opsem questions/feedback we handle on Zulip are fine of course.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

That's alright because the ask is Small.


## How these goals were selected

Goal proposals were accepted during the month of January. Many of the goals are continuing goals that are carried over from the previous year, but others goal are new.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Goal proposals were accepted during the month of January. Many of the goals are continuing goals that are carried over from the previous year, but others goal are new.
Goal proposals were collected during the month of January. Many of the goals are continuing goals that are carried over from the previous year, but others goal are new.

Accepting a proposal sounds ambiguos, did we accept the fact that as a proposal or did we accept the proposal as something we should do.


Polonius Alpha is part of a larger roadmap called [the Borrow-Checker Within](https://rust-lang.github.io/rust-project-goals/2026/roadmap-borrow-checker-within.html) that we expect to be driving over the next few years. This year, another part of that work is including Polonius Alpha in [a-mir-formality](https://github.com/rust-lang/a-mir-formality/), the [types team's](https://rust-lang.org/governance/teams/compiler/#team-types) (in-progress) specification for how the Rust type system works. As part of another goal, we are planning to [integrate a-mir-formality into the Rust reference](https://rust-lang.github.io/rust-project-goals/2026/a-mir-formality.html). This would make Polonius the first version of the borrow checker whose behavior is specified outside of the Rust compiler.

## Extending const evaluation to *structs/enums*, *traits*, and *reflection*
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
## Extending const evaluation to *structs/enums*, *traits*, and *reflection*
## Change const evaluation to support *traits*, and *reflection*, allow *structs/enums* as const parameter types

I have no idea what "Extending const evaluation to structs/enums" should mean

This year, the Rust types team plans to stabilize the [next-generation trait solver](https://rust-lang.github.io/rust-project-goals/2026/next-solver.html). This solver is a ground-up rewrite of the core engine that decides whether types satisfy trait bounds, normalizes associated types, and more. The types team has been working on it since late 2022, and it already powers coherence checking as of Rust 1.84. The goal for this year is to stabilize it for use across all of Rust and remove the old implementation.

This goal may not *sound* like it's going to impact your life, but finishing the new solver unblocks a *lot* of stuff. To start, it allows us to make progress on the [Project Zero](https://rust-lang.github.io/rust-project-goals/2026/roadmap-project-zero.html) roadmap, which aims to fix every known type system soundness bug. It also unblocks long-desired features like implied bounds, cyclic trait matching, and features needed by the [Just add async](https://rust-lang.github.io/rust-project-goals/2026/roadmap-just-add-async.html) roadmap.
Roadmaps offer a "zoomed out" view of the Rust project direction. Each roadmap collects a set of related project goals into a coherent theme. A typical roadmap takes several years to drive to completion, so when you look at the roadmap, you'll see not only the work we expect to do this year, but a preview of the work we expect in future years (to the extent we know that).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This line feels odd as part of the "## Closing soundness bugs and supporting new lang features with a new trait solver" header

maybe start with either another --- or add a Roadmaps header

| [Arbitrary Self Types](https://rust-lang.github.io/rust-project-goals/2026/arbitrary-self-types.html) | Large | [Jack Huey][] | \*3 |
| [Full Const Generics](https://rust-lang.github.io/rust-project-goals/2026/const-generics.html) | Large | [Boxy][] | \*4 |
| [Stabilize and model Polonius Alpha](https://rust-lang.github.io/rust-project-goals/2026/polonius.html) | Large | [Jack Huey][] | \*5 |
| [Stabilize concrete type specialization](https://rust-lang.github.io/rust-project-goals/2026/specialization.html) | Large | [Jack Huey][] | \*6 |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@rustbot concern specialization-goal

The types team does not accept this goal as is. We've talked about adjusting it, but until then, I consider this blocking.

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.

6 participants