You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|[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][]) |
42
-
|[Continue Experimentation with Pin Ergonomics](https://rust-lang.github.io/rust-project-goals/2025h2/pin-ergonomics.html)|[@frank-king][]|[compiler] ([Oliver Scherer][]), [lang] ([TC][]) |
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.
46
46
47
-
The "Beyond the `&`" initiative aims `&`'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.
47
+
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.
48
48
49
49
### "Unblocking dormant traits"
50
50
@@ -59,9 +59,9 @@ The "Beyond the `&`" initiative aims `&`'s special capabilities, allowing librar
59
59
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:
60
60
61
61
*[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.
62
-
* 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.
63
-
* 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.
64
-
* 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.
62
+
* 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.
63
+
* 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.
64
+
* 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.
65
65
*[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.
66
66
67
67
### "Flexible, fast(er) compilation"
@@ -103,14 +103,14 @@ The full slate of project goals are as follows. These goals all have identified
103
103
|[Getting Rust for Linux into stable Rust: compiler features](https://rust-lang.github.io/rust-project-goals/2025h2/Rust-for-Linux-compiler.html)|[Tomas Sedovic][]|[compiler] ([Wesley Wiser][]) |
104
104
|[Getting Rust for Linux into stable Rust: language features](https://rust-lang.github.io/rust-project-goals/2025h2/Rust-for-Linux-language.html)|[Tomas Sedovic][]|[lang] ([Josh Triplett][]), [lang-docs] ([TC][]) |
105
105
|[Borrow checking in a-mir-formality](https://rust-lang.github.io/rust-project-goals/2025h2/a-mir-formality.html)|[Niko Matsakis][]|[types] ([Niko Matsakis][]) |
|[Rework Cargo Build Dir Layout](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-dir-layout.html)|[@ranger-ross][]|[cargo] ([Weihang Lo][]) |
109
+
|[Rework Cargo Build Dir Layout](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-dir-layout.html)|[Ross Sullivan][]|[cargo] ([Weihang Lo][]) |
110
110
|[Prototype a new set of Cargo "plumbing" commands](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-plumbing.html)|![Help Wanted][]|[cargo]|
|[Stabilizable Polonius support on nightly](https://rust-lang.github.io/rust-project-goals/2025h2/polonius.html)|[Rémy Rakic][]|[types] ([Jack Huey][]) |
130
130
|[Production-ready cranelift backend](https://rust-lang.github.io/rust-project-goals/2025h2/production-ready-cranelift.html)|[Folkert de Vries][]|[compiler], [wg-compiler-performance]|
|[Add a team charter for rustdoc team](https://rust-lang.github.io/rust-project-goals/2025h2/rustdoc-team-charter.html)|[Guillaume Gomez][]|[rustdoc] ([Guillaume Gomez][]) |
139
139
|[SVE and SME on AArch64](https://rust-lang.github.io/rust-project-goals/2025h2/scalable-vectors.html)|[David Wood][]|[compiler] ([David Wood][]), [lang] ([Niko Matsakis][]), [libs] ([Amanieu d'Antras][]), [types]|
140
-
|[Rust Stabilization of MemorySanitizer and ThreadSanitizer Support](https://rust-lang.github.io/rust-project-goals/2025h2/stabilization-of-sanitizer-support.html)|[@jakos-sec][]|[bootstrap], [compiler], [infra], [project-exploit-mitigations]|
140
+
|[Rust Stabilization of MemorySanitizer and ThreadSanitizer Support](https://rust-lang.github.io/rust-project-goals/2025h2/stabilization-of-sanitizer-support.html)|[Jakob Koschel][]|[bootstrap], [compiler], [infra], [project-exploit-mitigations]|
141
141
|[Type System Documentation](https://rust-lang.github.io/rust-project-goals/2025h2/typesystem-docs.html)|[Boxy][]|[types] ([Boxy][]) |
0 commit comments