Skip to content

Commit a252853

Browse files
authored
Merge pull request #419 from lqd/more-rotation
more goal rotation
2 parents 3d23d90 + cdf325e commit a252853

File tree

2 files changed

+143
-20
lines changed

2 files changed

+143
-20
lines changed

src/README.md

Lines changed: 139 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,154 @@
22

33
This repo tracks the effort to set and track goals for the Rust project.
44

5-
## Current goal period (2025H1)
5+
## Current goal period (2025H2)
66

7-
The 2025H1 goal period runs from Jan 1 to Jun 30. We have identified three flagship goals for 2025H1:
7+
The 2025H2 goal period runs from Sept 1 to Dec 31. We have identified 12 flagship goals, broken out into four themes:
88

9-
* Continue making Rust easier to use for network systems by [**bringing the Async Rust experience closer to parity with sync Rust**](./async.md). In 2025H1 we plan to:
10-
* tell a complete story for the use of async fn in traits, unblocking wide ecosystem adoption;
11-
* improve the ergonomics of `Pin`, which is frequently used in low-level async code; and
12-
* prepare to support asynchronous (and synchronous) generators in the language.
13-
* Continue helping Rust support low-level projects by [**stabilizing compiler options and tooling used by the Rust-for-Linux project**](./rfl.md). In 2025H1 we plan to:
14-
* implement [RFC #3716] to allow stabilizing ABI-modifying compiler flags to control code generation, sanitizer integration, and so forth;
15-
* taking the first step towards stabilizing [`build-std`](https://rust-lang.github.io/rust-project-goals/2025h1/https://doc.rust-lang.org/cargo/reference/unstable.html#build-std) by [creating a stable way to rebuild core with specific compiler options](./build-std.html);
16-
* add rustdoc features to extract and customize rustdoc tests (`--extract-doctests`);
17-
* stabilize clippy configuration like `.clippy.toml` and `CLIPPY_CONF_DIR`;
18-
* stabilize compiler flags to extract dependency info (e.g., as via `-Zbinary-dep-depinfo=y`) and to configure no-std without requiring it in the source file (e.g., as via `-Zcrate-attr`);
19-
* Address the biggest concerns raised by Rust maintainers, lack of face-to-face interaction, by [**organizing the Rust All-Hands 2025**](./all-hands.md). In 2025H1 we plan to:
20-
* convene Rust maintainers to celebrate Rust's tenth birthday at [RustWeek 2025](https://2025.rustweek.org) (co-organized with [RustNL](https://2025.rustweek.org/about/));
21-
* author a first draft for a [Rust vision doc](./rust-vision-doc.md) and gather feedback.
9+
* [Beyond the `&`](#beyond-the-), making it possible to create user-defined smart pointers that are as ergonomic as Rust's built-in references `&`.
10+
* [Unblocking dormant traits](#unblocking-dormant-traits), extending the core capabilities of Rust's trait system to unblock long-desired features for language interop, lending iteration, and more.
11+
* [Flexible, fast(er) compilation](#flexible-faster-rust-compilation), making it faster to build Rust programs and improving support for specialized build scenarios like embedded usage and sanitizers.
12+
* [Higher-level Rust](#higher-level-rust), making higher-level usage patterns in Rust easier.
2213

23-
[The full list of 2025H1 goals is available here.](./2025h1/goals.md) We author monthly blog posts about our overall status, but you can also follow the tracking issue for a [particular goal](./2025h1/goals.md) to get updates specific to that goal.
24-
## Next goal period (2025H2)
14+
### "Beyond the `&`"
2515

26-
The next goal period will be 2025H2, running from July 1 to December 30. We are currently in the process of assembling goals. [Click here](./2025h2/goals.md) to see the current list. If you'd like to propose a goal, [instructions can be found here](./how_to/propose_a_goal.md).
16+
| Goal | Point of contact | Team(s) and Champion(s) |
17+
| :-- | :-- | :-- |
18+
| [Reborrow traits](https://rust-lang.github.io/rust-project-goals/2025h2/autoreborrow-traits.html) | [Aapo Alasuutari][] | [compiler] ([Oliver Scherer][]), [lang] ([Tyler Mandry][]) |
19+
| [Design a language feature to solve Field Projections](https://rust-lang.github.io/rust-project-goals/2025h2/field-projections.html) | [Benno Lossin][] | [lang] ([Tyler Mandry][]) |
20+
| [Continue Experimentation with Pin Ergonomics](https://rust-lang.github.io/rust-project-goals/2025h2/pin-ergonomics.html) | [Frank King][] | [compiler] ([Oliver Scherer][]), [lang] ([TC][]) |
21+
22+
23+
One of Rust's core value propositions is that it's a "library-based language"—libraries can build abstractions that feel built-in to the language even when they're not. Smart pointer types like `Rc` and `Arc` are prime examples, implemented purely in the standard library yet feeling like native language features. However, Rust's built-in reference types (`&T` and `&mut T`) have special capabilities that user-defined smart pointers cannot replicate. This creates a "second-class citizen" problem where custom pointer types can't provide the same ergonomic experience as built-in references.
24+
25+
The "Beyond the `&`" initiative aims to share `&`'s special capabilities, allowing library authors to create smart pointers that are truly indistinguishable from built-in references in terms of syntax and ergonomics. This will enable more ergonomic smart pointers for use in cross-language interop (e.g., references to objects in other languages like C++ or Python) and for low-level projects like Rust for Linux which use smart pointers to express particular data structures.
26+
27+
### "Unblocking dormant traits"
28+
29+
| Goal | Point of contact | Team(s) and Champion(s) |
30+
| :-- | :-- | :-- |
31+
| [Evolving trait hierarchies](https://rust-lang.github.io/rust-project-goals/2025h2/evolving-traits.html) | [Taylor Cramer][] | [compiler], [lang] ([Taylor Cramer][]), [libs-api], [types] ([Oliver Scherer][]) |
32+
| [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html) | [Alice Ryhl][] | [lang] ([Taylor Cramer][]) |
33+
| [Next-generation trait solver](https://rust-lang.github.io/rust-project-goals/2025h2/next-solver.html) | [lcnr][] | [types] ([lcnr][]) |
34+
| [Stabilizable Polonius support on nightly](https://rust-lang.github.io/rust-project-goals/2025h2/polonius.html) | [Rémy Rakic][] | [types] ([Jack Huey][]) |
35+
36+
37+
Rust's trait system is one of its most powerful features, but it has a number of longstanding limitations that are preventing us from adopting new patterns. The goals in this category unblock a number of new capabilities:
38+
39+
* [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.
40+
* 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.
41+
* 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.
42+
* 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] and [RFC #3838], authored in previous project goal periods.
43+
* [In-place initialization](https://rust-lang.github.io/rust-project-goals/2025h2/./in-place-initialization.html) allows creating structs and values that are tied to a particular place in memory. While useful directly for projects doing advanced C interop, it also unblocks expanding `dyn Trait` to support for `async fn` and `-> impl Trait` methods, as compiling such methods requires the ability for the callee to return a future whose size is not known to the caller.
44+
45+
### "Flexible, fast(er) compilation"
46+
47+
| Goal | Point of contact | Team(s) and Champion(s) |
48+
| :-- | :-- | :-- |
49+
| [build-std](https://rust-lang.github.io/rust-project-goals/2025h2/build-std.html) | [David Wood][] | [cargo] ([Eric Huss][]), [compiler] ([David Wood][]), [libs] ([Amanieu d'Antras][]) |
50+
| [Promoting Parallel Front End](https://rust-lang.github.io/rust-project-goals/2025h2/parallel-front-end.html) | [Sparrow Li][] | [compiler] |
51+
| [Production-ready cranelift backend](https://rust-lang.github.io/rust-project-goals/2025h2/production-ready-cranelift.html) | [Folkert de Vries][] | [compiler], [wg-compiler-performance] |
52+
53+
54+
The "Flexible, fast(er) compilation" initiative focuses on improving Rust's build system to better serve both specialized use cases and everyday development workflows:
55+
56+
* We are improving compilation performance through (1) [parallel compilation in the compiler front-end](https://rust-lang.github.io/rust-project-goals/2025h2/./parallel-front-end.html), which delivers 20-30% faster builds, and (2) [making the Cranelift backend production-ready for development use](https://rust-lang.github.io/rust-project-goals/2025h2/./production-ready-cranelift.html), offering roughly 20% faster code generation compared to LLVM for debug builds.
57+
* We are working to [stabilize a core MVP of the `-Zbuild-std` feature](https://rust-lang.github.io/rust-project-goals/2025h2/./build-std.html), which allows developers to rebuild the standard library from source with custom compiler flags. This unblocks critical use cases for embedded developers and low-level projects like Rust for Linux, while also enabling improvements like using sanitizers with the standard library or building `std` with debug information.
58+
59+
### "Higher-level Rust"
60+
61+
| Goal | Point of contact | Team(s) and Champion(s) |
62+
| :-- | :-- | :-- |
63+
| [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][]) |
64+
| [Ergonomic ref-counting: RFC decision and preview](https://rust-lang.github.io/rust-project-goals/2025h2/ergonomic-rc.html) | [Niko Matsakis][] | [compiler] ([Santiago Pastorino][]), [lang] ([Niko Matsakis][]) |
65+
66+
67+
People generally start using Rust for foundational use cases, where the requirements for performance or reliability make it an obvious choice. But once they get used to it, they often find themselves turning to Rust even for higher-level use cases, like scripting, web services, or even GUI applications. Rust is often "surprisingly tolerable" for these high-level use cases -- except for some specific pain points that, while they impact everyone using Rust, hit these use cases particularly hard. We plan two flagship goals this period in this area:
68+
69+
* We aim to stabilize [cargo script](https://rust-lang.github.io/rust-project-goals/2025h2/./cargo-script.html), a feature that allows single-file Rust programs that embed their dependencies, making it much easier to write small utilities, share code examples, and create reproducible bug reports without the overhead of full Cargo projects.
70+
* We aim to finalize the design of [ergonomic ref-counting](https://rust-lang.github.io/rust-project-goals/2025h2/./ergonomic-rc.html) and to finalize the experimental impl feature so it is ready for beta testing. Ergonomic ref counting makes it less cumbersome to work with ref-counted types like `Rc` and `Arc`, particularly in closures.
71+
72+
[The full list of 2025H2 goals is available here.](./2025h2/goals.md) We author monthly blog posts about our overall status, but you can also follow the tracking issue for a [particular goal](./2025h2/goals.md) to get updates specific to that goal.
73+
74+
[cargo]: https://github.com/rust-lang/cargo
75+
[clippy]: https://github.com/rust-lang/rust-clippy
76+
[compiler]: http://github.com/rust-lang/compiler-team
77+
[crates-io]: https://github.com/rust-lang/crates.io
78+
[docs-rs]: https://github.com/rust-lang/docs.rs
79+
[edition]: http://github.com/rust-lang/edition-team
80+
[infra]: https://github.com/rust-lang/infra-team
81+
[lang]: http://github.com/rust-lang/lang-team
82+
[leadership-council]: https://github.com/rust-lang/leadership-council
83+
[libs]: https://github.com/rust-lang/libs-team
84+
[libs-api]: https://www.rust-lang.org/governance/teams
85+
[miri]: https://github.com/rust-lang/miri
86+
[opsem]: https://github.com/rust-lang/opsem-team
87+
[ospp]: https://www.rust-lang.org/governance/teams
88+
[rust-analyzer]: https://github.com/rust-lang/rust-analyzer
89+
[rust-for-linux]: https://www.rust-lang.org/governance/teams
90+
[rustdoc]: https://github.com/rust-lang/rust
91+
[rustfmt]: https://github.com/rust-lang/rustfmt
92+
[rustup]: https://github.com/rust-lang/rustup
93+
[spec]: https://github.com/rust-lang/spec
94+
[style]: https://github.com/rust-lang/style-team
95+
[types]: https://github.com/rust-lang/types-team
96+
[Bastian Kersting]: https://github.com/1c3t3a
97+
[Amanieu d'Antras]: https://github.com/Amanieu
98+
[Benno Lossin]: https://github.com/BennoLossin
99+
[Boxy]: https://github.com/BoxyUwU
100+
[Alice Ryhl]: https://github.com/Darksonn
101+
[Guillaume Gomez]: https://github.com/GuillaumeGomez
102+
[James]: https://github.com/Jamesbarford
103+
[Pete LeVasseur]: https://github.com/PLeVasseur
104+
[Ralf Jung]: https://github.com/RalfJung
105+
[Sparrow Li]: https://github.com/SparrowLii
106+
[Wesley Wiser]: https://github.com/WesleyWiser
107+
[Manuel Drehwald]: https://github.com/ZuseZ4
108+
[Aapo Alasuutari]: https://github.com/aapoalas
109+
[Alona Enraght-Moony]: https://github.com/adotinthevoid
110+
[b-naber]: https://github.com/b-naber
111+
[Jon Bauman]: https://github.com/baumanj
112+
[Boxy]: https://github.com/boxyuwu
113+
[Carol Nichols]: https://github.com/carols10cents
114+
[Taylor Cramer]: https://github.com/cramertj
115+
[David Wood]: https://github.com/davidtwco
116+
[Ding Xiang Fei]: https://github.com/dingxiangfei2009
117+
[David Tolnay]: https://github.com/dtolnay
118+
[Eric Huss]: https://github.com/ehuss
119+
[Ed Page]: https://github.com/epage
120+
[Folkert de Vries]: https://github.com/folkertdev
121+
[Frank King]: https://github.com/frank-king
122+
[Ian McCormack]: https://github.com/icmccorm
123+
[Jack Huey]: https://github.com/jackh726
124+
[Jakob Koschel]: https://github.com/jakos-sec
125+
[Josh Triplett]: https://github.com/joshtriplett
126+
[Jack Wrenn]: https://github.com/jswrenn
127+
[Jakub Beránek]: https://github.com/kobzol
128+
[lcnr]: https://github.com/lcnr
129+
[Rémy Rakic]: https://github.com/lqd
130+
[Marco Ieni]: https://github.com/marcoieni
131+
[Niko Matsakis]: https://github.com/nikomatsakis
132+
[Predrag Gruevski]: https://github.com/obi1kenobi
133+
[Oliver Scherer]: https://github.com/oli-obk
134+
[Vadim Petrochenkov]: https://github.com/petrochenkov
135+
[Ross Sullivan]: https://github.com/ranger-ross
136+
[Ben Kimock]: https://github.com/saethlin
137+
[Scott McMurray]: https://github.com/scottmcm
138+
[Santiago Pastorino]: https://github.com/spastorino
139+
[Tyler Mandry]: https://github.com/tmandry
140+
[Tomas Sedovic]: https://github.com/tomassedovic
141+
[TC]: https://github.com/traviscross
142+
[Weihang Lo]: https://github.com/weihanglo
143+
[Jane Lusby]: https://github.com/yaahc
144+
145+
## Next goal period (2026H1)
146+
147+
The next goal period will be 2026H1. We will start the process of assembling goals soon. If you'd like to propose a goal, [instructions can be found here](./how_to/propose_a_goal.md).
27148

28149
## About the process
29150

30151
Want to learn more? Check out some of the following:
31152

32153
* [RFC #3614, which describes the overall goals and plan](https://github.com/rust-lang/rfcs/blob/master/text/3614-project-goals.md)
33-
* The currently [proposed goals for 2024H2](./2024h2/slate.md)
34154
* [How to propose a goal of your own](./how_to/propose_a_goal.md)
35155
* [What it means to be a goal point of contact](./about/owners.md)

src/SUMMARY.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
# ⚙️ 2025H2 goal process
66

77
- [Overview](./2025h2/README.md)
8-
- [Proposed goals](./2025h2/goals.md)
8+
- [Goals](./2025h2/goals.md)
99
- [Goals not accepted](./2025h2/not_accepted.md)
1010
- [Reports](./2025h2/reports.md)
1111

12+
# ⏳ 2026H1 goal process
13+
- [Not yet started]()
14+
1215
# 📖 Learn about
1316

1417
- [Goal motivations](./about/motivation.md)

0 commit comments

Comments
 (0)