From c04b0a0c12b21f7f80693becaab51b985f5e7df0 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 7 Aug 2024 05:11:30 -0400 Subject: [PATCH 01/22] Rust project goals public post --- posts/2024-08-07-Project-goals.md | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 posts/2024-08-07-Project-goals.md diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md new file mode 100644 index 000000000..d217986b5 --- /dev/null +++ b/posts/2024-08-07-Project-goals.md @@ -0,0 +1,89 @@ +--- +layout: post +title: "Rust Project goals for 2024" +author: Niko Matsakis +team: Leadership Council +--- + +With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to Linux building on stable Rust. As the year progress we'll be posting regular updates on these 3 flagship goals along with the 23 others. + +[RFC #3672]: https://github.com/rust-lang/rfcs/pull/3672#issuecomment-2254599176 +[RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 + +## Rust’s mission + +Ultimately, all the goals selected are intended to further Rust's mission of **empowering everyone to build reliable and efficient software**. Rust targets programs that prioritize + +* reliability and robustness; +* performance, memory usage, and resource consumption; and +* long-term maintenance and extensibility. + +We consider "any two out of the three" as the right heuristic for projects where Rust is a strong contender or possibly the best option. + +## Why these particular flagship goals? + +**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The changes planned for the 2024 edition will (1) support `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permit (async) generators to be added in the future by reserving the `gen` keyword; and (3) alter fallback for the `!` type. The [plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). + +**Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is a crucial growth area, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. + +**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL.com] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the largest gaps that block support, such as + +[RFL.com]: https://rust-for-linux.com/ +[RFL#2]: https://github.com/Rust-for-Linux/linux/issues/2 + +## Highlights from the other goals + +In addition to the flagship goals, the roadmap defines [23 other goals][]. Here is a subset to give you a flavor: + +* [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2024h2/cargo-script.html), allowing singe-file Rust scripts that embed dependencies; owned by [Ed Page](https://github.com/epage). +* [Scalable Polonius support on nightly](https://rust-lang.github.io/rust-project-goals/2024h2/Polonius.html), improving Rust's borrow checker to [support conditional returns and other patterns](https://blog.rust-lang.org/inside-rust/2023/10/06/polonius-update.html); owned by [Rémy Rakic](https://github.com/lqd). +* [Move parallel front end closer to stability](https://rust-lang.github.io/rust-project-goals/2024h2/parallel-front-end.html), improving Rust compilation times by as much as 20%; owned by [Sparrow Li](https://github.com/SparrowLii). +* [Ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html), reducing the syntactic overhead of working with reference-counted data; owned by [Jonathan Kelley](https://github.com/jkelleyrtp). +* [Implementing "merged doctests"](https://rust-lang.github.io/rust-project-goals/2024h2/merged-doctests.html), which combine doctest files into one test to save testing time; owned by [Guillaume Gomez](https://github.com/GuillaumeGomez). + +Check out [the whole list][23 other goals]! (Go ahead, we'll wait, but come back here afterwards!) + +[23 other goals]:https://rust-lang.github.io/rust-project-goals/2024h2/index.html#project-goals + +## How to track progress + +Each of the proposed project goals has a dedicated tracking issue on the [rust-lang/rust-project-goals][] repository; these tracking issues are collected in the [2024h2 milestone][]; the assignee of those issues indicates the [owner][] for that particular work. The issues will receive regular status updates from their respective owners, and we will collate these updates into public blog posts. + +[rust-lang/rust-project-goals]: https://rust-lang.github.io/rust-project-goals/ +[2024h2 milestone]: https://github.com/rust-lang/rust-project-goals/milestone/2 +[owner]: https://rust-lang.github.io/rust-project-goals/about/owners.html + +It's worth stating up front: **we don't expect all of these goals to be completed**. Many of them were proposed and owned by volunteers, and it's normal and expected that things don't always work out as planned. In the event that a goal seems to stall out, we can either look for a new owner or just consider the goal again in the next round of goal planning. + +## How we selected project goals + +This **project goal** process started as an experiment, proposed in [RFC #3614][], to be run with nikomatsakis (myself) as the overall owner. Now that we've done it once, my intent is to author a follow-up RFC that describes the process we ended up with and codifies it for the future. + +The project goal process began with a [public call for proposals in early May][pcp]. Each proposal was phrased as a Pull Request (PR) against the [rust-lang/rust-project-goals][] repository. Goal proposal PRs follow a [goal template][] that describes the motivation and a high level sketch of the work that is planned for 2024; it's kind of like the "first half" of an RFC. + +[RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 +[pcp]: https://blog.rust-lang.org/inside-rust/2024/05/07/announcing-project-goals.html +[goal template]: https://rust-lang.github.io/rust-project-goals/TEMPLATE.html + +Each goal represents a contract between the **owner** -- the person who will ensure the work gets done, and typically the person opening the PR -- and the **Rust team**. The owner is promising to put their own resources (time, money, expertise) into driving the work forward, and the team is giving their approval and commiting to support the owner in the ways requested (e.g., reviews, meetings, etc). + +The details of who precisely will do what are giving in the ["Ownership and team asks"][] section, which takes the place of the "detailed design" you might find in an RFC. In some cases, the only ask of the team is "discussion and moral support", meaning that the goal owner is mostly looking for official approval that this is something the team would like to see get done. But other goals included asks like "standard reviews" for the resulting implementation work, pre-allocated "design meetings" for the team to review the intended design and give feedback, or "RFC decision" if an RFC will be required. + +["Ownership and team asks"]: https://rust-lang.github.io/rust-project-goals/TEMPLATE.html#ownership-and-team-asks + +As each PR comes in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. + +## Project goals: a "front door" for Rust + +To me, the most exciting thing about the Project Goals program has been seeing the [goals][1] [coming][2] [from][3] [outside][4] the existing Rust maintainers. My hope is that the Project Goal process can supplement RFCs as an effective "front door" for the project, offering people who have the resources and skill to drive changes a way to float that idea and get feedback from the RUst teams *before* they begin to work on it. + +[1]: https://rust-lang.github.io/rust-project-goals/2024h2/cargo-semver-checks.html +[2]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-for-SciComp.html +[3]: https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html +[4]: https://rust-lang.github.io/rust-project-goals/2024h2/std-verification.html + +Project Goals will help ensure the sustainability of the Rust open source community. In the past, it was difficult to tell when starting work on a project whether it would be well-received by the Rust maintainers. This was an obstacle for those who would like to fund efforts to improve Rust, as people only like to fund work if they have some reasonable confidence it will succeed. Project goals are a way for project maintainers to "bless" a particular project and indicate their belief that it will be helpful to Rust. The Rust Foundation is using project goals as one of their criteria when considering [fellowship applications](https://foundation.rust-lang.org/grants/fellowships/), for example, and I expect over time other grant programs will do the same. But project goals are useful for others, too: having an approved project goal can help someone convince their employer to give them time to work on Rust open source efforts, for example, or give contractors the confidence they need to ensure their customer they'll be able to get the work done. + +## Follow progress at whatever level of detail is best with you + +As the year progresses, you can follow along with the progress on Rust project goals just by looking for our regular blog posts. If you'd like to see more detail, then subscribe the various [tracking issues for the Project Goals that interest you][m], or monitor the [#project-goals channel](https://rust-lang.zulipchat.com/#narrow/stream/435869-project-goals) on the [rust-lang Zulip](https://rust-lang.zulipchat.com). See you there! From 3b8b5b4e0d357c371e8906ee1fef25a79cf3714d Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 00:47:45 -0400 Subject: [PATCH 02/22] correct typos --- posts/2024-08-07-Project-goals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index d217986b5..6547126c4 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -65,7 +65,7 @@ The project goal process began with a [public call for proposals in early May][p [pcp]: https://blog.rust-lang.org/inside-rust/2024/05/07/announcing-project-goals.html [goal template]: https://rust-lang.github.io/rust-project-goals/TEMPLATE.html -Each goal represents a contract between the **owner** -- the person who will ensure the work gets done, and typically the person opening the PR -- and the **Rust team**. The owner is promising to put their own resources (time, money, expertise) into driving the work forward, and the team is giving their approval and commiting to support the owner in the ways requested (e.g., reviews, meetings, etc). +Each goal represents a contract between the **owner** -- the person who will ensure the work gets done, and typically the person opening the PR -- and the **Rust team**. The owner is promising to put their own resources (time, money, expertise) into driving the work forward, and the team is giving their approval and committing to support the owner in the ways requested (e.g., reviews, meetings, etc). The details of who precisely will do what are giving in the ["Ownership and team asks"][] section, which takes the place of the "detailed design" you might find in an RFC. In some cases, the only ask of the team is "discussion and moral support", meaning that the goal owner is mostly looking for official approval that this is something the team would like to see get done. But other goals included asks like "standard reviews" for the resulting implementation work, pre-allocated "design meetings" for the team to review the intended design and give feedback, or "RFC decision" if an RFC will be required. @@ -75,7 +75,7 @@ As each PR comes in, the goals were socialized with the teams. This process some ## Project goals: a "front door" for Rust -To me, the most exciting thing about the Project Goals program has been seeing the [goals][1] [coming][2] [from][3] [outside][4] the existing Rust maintainers. My hope is that the Project Goal process can supplement RFCs as an effective "front door" for the project, offering people who have the resources and skill to drive changes a way to float that idea and get feedback from the RUst teams *before* they begin to work on it. +To me, the most exciting thing about the Project Goals program has been seeing the [goals][1] [coming][2] [from][3] [outside][4] the existing Rust maintainers. My hope is that the Project Goal process can supplement RFCs as an effective "front door" for the project, offering people who have the resources and skill to drive changes a way to float that idea and get feedback from the Rust teams *before* they begin to work on it. [1]: https://rust-lang.github.io/rust-project-goals/2024h2/cargo-semver-checks.html [2]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-for-SciComp.html From ce7af5c7e0417436085e8abfa688907fe25ddc5b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 00:48:09 -0400 Subject: [PATCH 03/22] fix [m] link --- posts/2024-08-07-Project-goals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 6547126c4..c8292c9bf 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -47,10 +47,10 @@ Check out [the whole list][23 other goals]! (Go ahead, we'll wait, but come back ## How to track progress -Each of the proposed project goals has a dedicated tracking issue on the [rust-lang/rust-project-goals][] repository; these tracking issues are collected in the [2024h2 milestone][]; the assignee of those issues indicates the [owner][] for that particular work. The issues will receive regular status updates from their respective owners, and we will collate these updates into public blog posts. +Each of the proposed project goals has a dedicated tracking issue on the [rust-lang/rust-project-goals][] repository; these tracking issues are collected in the [2024h2 milestone][m]; the assignee of those issues indicates the [owner][] for that particular work. The issues will receive regular status updates from their respective owners, and we will collate these updates into public blog posts. [rust-lang/rust-project-goals]: https://rust-lang.github.io/rust-project-goals/ -[2024h2 milestone]: https://github.com/rust-lang/rust-project-goals/milestone/2 +[m]: https://github.com/rust-lang/rust-project-goals/milestone/2 [owner]: https://rust-lang.github.io/rust-project-goals/about/owners.html It's worth stating up front: **we don't expect all of these goals to be completed**. Many of them were proposed and owned by volunteers, and it's normal and expected that things don't always work out as planned. In the event that a goal seems to stall out, we can either look for a new owner or just consider the goal again in the next round of goal planning. From b8aa9b207ae0ad17f4e958d8ed18fff48e814c29 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 00:51:40 -0400 Subject: [PATCH 04/22] add [plan] link --- posts/2024-08-07-Project-goals.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index c8292c9bf..ab05d0602 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -22,7 +22,9 @@ We consider "any two out of the three" as the right heuristic for projects where ## Why these particular flagship goals? -**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The changes planned for the 2024 edition will (1) support `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permit (async) generators to be added in the future by reserving the `gen` keyword; and (3) alter fallback for the `!` type. The [plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). +**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The changes planned for the 2024 edition will (1) support `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permit (async) generators to be added in the future by reserving the `gen` keyword; and (3) alter fallback for the `!` type. The [plan][2024plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). + +[2024plan]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-2024-Edition.html#milestones **Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is a crucial growth area, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. From dc2cfb0728f2a04c92cc0775d43fe525b2c81da3 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 00:53:15 -0400 Subject: [PATCH 05/22] add link for gaps --- posts/2024-08-07-Project-goals.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index ab05d0602..ce43298ac 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -28,10 +28,11 @@ We consider "any two out of the three" as the right heuristic for projects where **Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is a crucial growth area, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. -**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL.com] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the largest gaps that block support, such as +**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL.com] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. [RFL.com]: https://rust-for-linux.com/ [RFL#2]: https://github.com/Rust-for-Linux/linux/issues/2 +[rflgaps]: https://rust-lang.github.io/rust-project-goals/2024h2/rfl_stable.html#the-next-six-months ## Highlights from the other goals From 57762716c04fa4612458a1ed8f0de6bd263c54f9 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 01:16:04 -0400 Subject: [PATCH 06/22] avoid getting into the weeds of what a goal is --- posts/2024-08-07-Project-goals.md | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index ce43298ac..43e364b0c 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -18,7 +18,7 @@ Ultimately, all the goals selected are intended to further Rust's mission of **e * performance, memory usage, and resource consumption; and * long-term maintenance and extensibility. -We consider "any two out of the three" as the right heuristic for projects where Rust is a strong contender or possibly the best option. +We consider "any two out of the three" as the right heuristic for projects where Rust is a strong contender or possibly the best option, and we chose our goals in part so as to help ensure this is true. ## Why these particular flagship goals? @@ -50,33 +50,19 @@ Check out [the whole list][23 other goals]! (Go ahead, we'll wait, but come back ## How to track progress -Each of the proposed project goals has a dedicated tracking issue on the [rust-lang/rust-project-goals][] repository; these tracking issues are collected in the [2024h2 milestone][m]; the assignee of those issues indicates the [owner][] for that particular work. The issues will receive regular status updates from their respective owners, and we will collate these updates into public blog posts. +As the year progresses, we will be posting regular blog posts summarizing the progress on the various goals. If you'd like to see more detail, the [2024h2 milestone][m] on the [rust-lang/rust-project-goals][] repository has tracking issues for each of the goals. Each issue is assigned to the [owner(s)][o] of that particular goal. You can subscribe to the issue to receive regular updates, or monitor the [#project-goals channel](https://rust-lang.zulipchat.com/#narrow/stream/435869-project-goals) on the [rust-lang Zulip](https://rust-lang.zulipchat.com). [rust-lang/rust-project-goals]: https://rust-lang.github.io/rust-project-goals/ [m]: https://github.com/rust-lang/rust-project-goals/milestone/2 -[owner]: https://rust-lang.github.io/rust-project-goals/about/owners.html +[o]: https://rust-lang.github.io/rust-project-goals/about/owners.html It's worth stating up front: **we don't expect all of these goals to be completed**. Many of them were proposed and owned by volunteers, and it's normal and expected that things don't always work out as planned. In the event that a goal seems to stall out, we can either look for a new owner or just consider the goal again in the next round of goal planning. ## How we selected project goals -This **project goal** process started as an experiment, proposed in [RFC #3614][], to be run with nikomatsakis (myself) as the overall owner. Now that we've done it once, my intent is to author a follow-up RFC that describes the process we ended up with and codifies it for the future. +Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR comes in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. -The project goal process began with a [public call for proposals in early May][pcp]. Each proposal was phrased as a Pull Request (PR) against the [rust-lang/rust-project-goals][] repository. Goal proposal PRs follow a [goal template][] that describes the motivation and a high level sketch of the work that is planned for 2024; it's kind of like the "first half" of an RFC. - -[RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 -[pcp]: https://blog.rust-lang.org/inside-rust/2024/05/07/announcing-project-goals.html -[goal template]: https://rust-lang.github.io/rust-project-goals/TEMPLATE.html - -Each goal represents a contract between the **owner** -- the person who will ensure the work gets done, and typically the person opening the PR -- and the **Rust team**. The owner is promising to put their own resources (time, money, expertise) into driving the work forward, and the team is giving their approval and committing to support the owner in the ways requested (e.g., reviews, meetings, etc). - -The details of who precisely will do what are giving in the ["Ownership and team asks"][] section, which takes the place of the "detailed design" you might find in an RFC. In some cases, the only ask of the team is "discussion and moral support", meaning that the goal owner is mostly looking for official approval that this is something the team would like to see get done. But other goals included asks like "standard reviews" for the resulting implementation work, pre-allocated "design meetings" for the team to review the intended design and give feedback, or "RFC decision" if an RFC will be required. - -["Ownership and team asks"]: https://rust-lang.github.io/rust-project-goals/TEMPLATE.html#ownership-and-team-asks - -As each PR comes in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. - -## Project goals: a "front door" for Rust +## Conclusion: Project Goals as a "front door" for Rust To me, the most exciting thing about the Project Goals program has been seeing the [goals][1] [coming][2] [from][3] [outside][4] the existing Rust maintainers. My hope is that the Project Goal process can supplement RFCs as an effective "front door" for the project, offering people who have the resources and skill to drive changes a way to float that idea and get feedback from the Rust teams *before* they begin to work on it. @@ -85,8 +71,5 @@ To me, the most exciting thing about the Project Goals program has been seeing t [3]: https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html [4]: https://rust-lang.github.io/rust-project-goals/2024h2/std-verification.html -Project Goals will help ensure the sustainability of the Rust open source community. In the past, it was difficult to tell when starting work on a project whether it would be well-received by the Rust maintainers. This was an obstacle for those who would like to fund efforts to improve Rust, as people only like to fund work if they have some reasonable confidence it will succeed. Project goals are a way for project maintainers to "bless" a particular project and indicate their belief that it will be helpful to Rust. The Rust Foundation is using project goals as one of their criteria when considering [fellowship applications](https://foundation.rust-lang.org/grants/fellowships/), for example, and I expect over time other grant programs will do the same. But project goals are useful for others, too: having an approved project goal can help someone convince their employer to give them time to work on Rust open source efforts, for example, or give contractors the confidence they need to ensure their customer they'll be able to get the work done. - -## Follow progress at whatever level of detail is best with you +Project Goals also help ensure the sustainability of the Rust open source community. In the past, it was difficult to tell when starting work on a project whether it would be well-received by the Rust maintainers. This was an obstacle for those who would like to fund efforts to improve Rust, as people don't like to fund work without reasonable confidence it will succeed. Project goals are a way for project maintainers to "bless" a particular project and indicate their belief that it will be helpful to Rust. The Rust Foundation is using project goals as one of their criteria when considering [fellowship applications](https://foundation.rust-lang.org/grants/fellowships/), for example, and I expect over time other grant programs will do the same. But project goals are useful for others, too: having an approved project goal can help someone convince their employer to give them time to work on Rust open source efforts, for example, or give contractors the confidence they need to ensure their customer they'll be able to get the work done. -As the year progresses, you can follow along with the progress on Rust project goals just by looking for our regular blog posts. If you'd like to see more detail, then subscribe the various [tracking issues for the Project Goals that interest you][m], or monitor the [#project-goals channel](https://rust-lang.zulipchat.com/#narrow/stream/435869-project-goals) on the [rust-lang Zulip](https://rust-lang.zulipchat.com). See you there! From d247fa0c587f72b3bd2d554b53a16d067627a65e Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 01:19:04 -0400 Subject: [PATCH 07/22] Update posts/2024-08-07-Project-goals.md Co-authored-by: Mark Rousskov --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 43e364b0c..bbe65883a 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -5,7 +5,7 @@ author: Niko Matsakis team: Leadership Council --- -With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to Linux building on stable Rust. As the year progress we'll be posting regular updates on these 3 flagship goals along with the 23 others. +With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to the Linux kernel building on stable Rust. As the year progress we'll be posting regular updates on these 3 flagship goals along with the 23 others. [RFC #3672]: https://github.com/rust-lang/rfcs/pull/3672#issuecomment-2254599176 [RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 From 33b0b2e7e58585c44349d42fe42cc8c034fbb8d0 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 01:21:59 -0400 Subject: [PATCH 08/22] RFL --- posts/2024-08-07-Project-goals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index bbe65883a..a887d0c7d 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -28,9 +28,9 @@ We consider "any two out of the three" as the right heuristic for projects where **Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is a crucial growth area, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. -**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL.com] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. +**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. -[RFL.com]: https://rust-for-linux.com/ +[RFL]: https://rust-for-linux.com/ [RFL#2]: https://github.com/Rust-for-Linux/linux/issues/2 [rflgaps]: https://rust-lang.github.io/rust-project-goals/2024h2/rfl_stable.html#the-next-six-months From 656bfd55b6510f092962a12861caaf6a8955e32c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 01:22:26 -0400 Subject: [PATCH 09/22] s/growth area/widely used/ --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index a887d0c7d..f4774bb67 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -26,7 +26,7 @@ We consider "any two out of the three" as the right heuristic for projects where [2024plan]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-2024-Edition.html#milestones -**Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is a crucial growth area, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. +**Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is widely used, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. **Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. From 2d77ac796dd9f2ba2b167a4c6929e9b06358db39 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:32:14 +0300 Subject: [PATCH 10/22] fix tense --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index f4774bb67..dc6c0d402 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -60,7 +60,7 @@ It's worth stating up front: **we don't expect all of these goals to be complete ## How we selected project goals -Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR comes in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. +Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR came in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. ## Conclusion: Project Goals as a "front door" for Rust From 08dd49d97d12f6b5ef1b1d96df02ef641f03cb31 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:34:25 +0300 Subject: [PATCH 11/22] fix tense --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index dc6c0d402..18c7ffb61 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -5,7 +5,7 @@ author: Niko Matsakis team: Leadership Council --- -With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to the Linux kernel building on stable Rust. As the year progress we'll be posting regular updates on these 3 flagship goals along with the 23 others. +With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to the Linux kernel building on stable Rust. As the year progresses we'll be posting regular updates on these 3 flagship goals along with the 23 others. [RFC #3672]: https://github.com/rust-lang/rfcs/pull/3672#issuecomment-2254599176 [RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 From 928f0daa671829d7e86a22d55f05512e4af0dcc7 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:35:05 +0300 Subject: [PATCH 12/22] reword mission section to read better --- posts/2024-08-07-Project-goals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 18c7ffb61..054fde59a 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -12,13 +12,13 @@ With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 ## Rust’s mission -Ultimately, all the goals selected are intended to further Rust's mission of **empowering everyone to build reliable and efficient software**. Rust targets programs that prioritize +All the goals selected ultimately further Rust's mission of **empowering everyone to build reliable and efficient software**. Rust targets programs that prioritize * reliability and robustness; * performance, memory usage, and resource consumption; and * long-term maintenance and extensibility. -We consider "any two out of the three" as the right heuristic for projects where Rust is a strong contender or possibly the best option, and we chose our goals in part so as to help ensure this is true. +We consider "any two out of the three" to be the right heuristic for projects where Rust is a strong contender or possibly the best option, and we chose our goals in part so as to help ensure this is true. ## Why these particular flagship goals? From 2fc4dae5d8d2b8645e9a33ee1932354188180828 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:36:48 +0300 Subject: [PATCH 13/22] fix edition details --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 054fde59a..ddcd3d2af 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -22,7 +22,7 @@ We consider "any two out of the three" to be the right heuristic for projects wh ## Why these particular flagship goals? -**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The changes planned for the 2024 edition will (1) support `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permit (async) generators to be added in the future by reserving the `gen` keyword; and (3) alter fallback for the `!` type. The [plan][2024plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). +**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The [changes planned](https://github.com/rust-lang/rust/issues?q=label%3AC-tracking-issue+label%3AA-edition-2024) for the 2024 edition include (1) supporting `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permitting (async) generators to be added in the future by reserving the `gen` keyword; and (3) altering fallback for the `!` type. The [plan][2024plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). [2024plan]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-2024-Edition.html#milestones From e9ba5391a6b6d26825b2d00bbf1fc3fca9e87b72 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:38:20 +0300 Subject: [PATCH 14/22] indicate that this is a 6 month repeating process --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index ddcd3d2af..45eed39ff 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -60,7 +60,7 @@ It's worth stating up front: **we don't expect all of these goals to be complete ## How we selected project goals -Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR came in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. +Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR came in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. We expect to repeat this process every six months. ## Conclusion: Project Goals as a "front door" for Rust From 9a49fbd169a1aee15343ad73ffc129bb25df3c34 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:40:12 +0300 Subject: [PATCH 15/22] close with what comes next --- posts/2024-08-07-Project-goals.md | 1 + 1 file changed, 1 insertion(+) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 45eed39ff..9d7bf3904 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -73,3 +73,4 @@ To me, the most exciting thing about the Project Goals program has been seeing t Project Goals also help ensure the sustainability of the Rust open source community. In the past, it was difficult to tell when starting work on a project whether it would be well-received by the Rust maintainers. This was an obstacle for those who would like to fund efforts to improve Rust, as people don't like to fund work without reasonable confidence it will succeed. Project goals are a way for project maintainers to "bless" a particular project and indicate their belief that it will be helpful to Rust. The Rust Foundation is using project goals as one of their criteria when considering [fellowship applications](https://foundation.rust-lang.org/grants/fellowships/), for example, and I expect over time other grant programs will do the same. But project goals are useful for others, too: having an approved project goal can help someone convince their employer to give them time to work on Rust open source efforts, for example, or give contractors the confidence they need to ensure their customer they'll be able to get the work done. +The next round of goal planning will be targeting 2025H1 and is expected to start in October. We look forward to seeing what great ideas are proposed! From b9e087719a0c535df2b07dacc6a3b4bdab48495b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 08:43:35 +0300 Subject: [PATCH 16/22] this sentence seems "extra" now --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 9d7bf3904..07fe69db7 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -60,7 +60,7 @@ It's worth stating up front: **we don't expect all of these goals to be complete ## How we selected project goals -Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR came in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. We expect to repeat this process every six months. +Each project goal began as a PR against the [rust-lang/rust-project-goals][] repository. As each PR came in, the goals were socialized with the teams. This process sometimes resulted in edits to the goals or in breaking up larger goals into smaller chunks (e.g., a far-reaching goal for ["higher level Rust"](https://github.com/rust-lang/rust-project-goals/pull/10) was broken into two specific deliverables, a [user-wide build cache](https://rust-lang.github.io/rust-project-goals/2024h2/user-wide-cache.html) and [ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html)). Finally, the goals were collated into [RFC #3672][], which listed each goals as well as all the asks from the team. This RFC was approved by all the teams that are being asked for support or other requests. ## Conclusion: Project Goals as a "front door" for Rust From b54c2efff06892dfdcc5bafbdc3b0be36c5c9804 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 18:05:33 +0300 Subject: [PATCH 17/22] Update 2024-08-07-Project-goals.md --- posts/2024-08-07-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-07-Project-goals.md index 07fe69db7..3da83fe63 100644 --- a/posts/2024-08-07-Project-goals.md +++ b/posts/2024-08-07-Project-goals.md @@ -38,7 +38,7 @@ We consider "any two out of the three" to be the right heuristic for projects wh In addition to the flagship goals, the roadmap defines [23 other goals][]. Here is a subset to give you a flavor: -* [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2024h2/cargo-script.html), allowing singe-file Rust scripts that embed dependencies; owned by [Ed Page](https://github.com/epage). +* [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2024h2/cargo-script.html), allowing single-file Rust scripts that embed dependencies; owned by [Ed Page](https://github.com/epage). * [Scalable Polonius support on nightly](https://rust-lang.github.io/rust-project-goals/2024h2/Polonius.html), improving Rust's borrow checker to [support conditional returns and other patterns](https://blog.rust-lang.org/inside-rust/2023/10/06/polonius-update.html); owned by [Rémy Rakic](https://github.com/lqd). * [Move parallel front end closer to stability](https://rust-lang.github.io/rust-project-goals/2024h2/parallel-front-end.html), improving Rust compilation times by as much as 20%; owned by [Sparrow Li](https://github.com/SparrowLii). * [Ergonomic ref counting](https://rust-lang.github.io/rust-project-goals/2024h2/ergonomic-rc.html), reducing the syntactic overhead of working with reference-counted data; owned by [Jonathan Kelley](https://github.com/jkelleyrtp). From f9698e9180a0bccbb91e5ca8d6591bfe86557a0f Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 8 Aug 2024 18:08:12 +0300 Subject: [PATCH 18/22] Rename 2024-08-07-Project-goals.md to 2024-08-09-Project-goals.md --- .../{2024-08-07-Project-goals.md => 2024-08-09-Project-goals.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename posts/{2024-08-07-Project-goals.md => 2024-08-09-Project-goals.md} (100%) diff --git a/posts/2024-08-07-Project-goals.md b/posts/2024-08-09-Project-goals.md similarity index 100% rename from posts/2024-08-07-Project-goals.md rename to posts/2024-08-09-Project-goals.md From 610f1673123175ded63e45168a2bfca138ba67de Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 9 Aug 2024 07:14:04 +0300 Subject: [PATCH 19/22] small suggestions from ojeda --- posts/2024-08-09-Project-goals.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/posts/2024-08-09-Project-goals.md b/posts/2024-08-09-Project-goals.md index 3da83fe63..721e8c6de 100644 --- a/posts/2024-08-09-Project-goals.md +++ b/posts/2024-08-09-Project-goals.md @@ -22,13 +22,13 @@ We consider "any two out of the three" to be the right heuristic for projects wh ## Why these particular flagship goals? -**2024 Edition.** 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://rust-lang.github.io/rust-project-goals/2024h2/https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The [changes planned](https://github.com/rust-lang/rust/issues?q=label%3AC-tracking-issue+label%3AA-edition-2024) for the 2024 edition include (1) supporting `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permitting (async) generators to be added in the future by reserving the `gen` keyword; and (3) altering fallback for the `!` type. The [plan][2024plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (released to beta 2025-01-03 and to stable on 2025-02-20). +[**2024 Edition.**](https://rust-lang.github.io/rust-project-goals/2024h2/Rust-2024-Edition.html) 2024 will mark the 4th Rust edition, following on the 2015, 2018, and 2021 editions. Similar to the [2021 edition](https://github.com/nikomatsakis/rfcs/blob/rfl-project-goal/text/3085-edition-2021.html), the 2024 edition is not a "major marketing push" but rather an opportunity to correct small ergonomic issues with Rust that will make it overall much easier to use. The [changes planned](https://github.com/rust-lang/rust/issues?q=label%3AC-tracking-issue+label%3AA-edition-2024) for the 2024 edition include (1) supporting `-> impl Trait` and `async fn` in traits by aligning capture behavior; (2) permitting (async) generators to be added in the future by reserving the `gen` keyword; and (3) altering fallback for the `!` type. The [plan][2024plan] is to finalize development of 2024 features this year; the Edition itself is planned for Rust v1.85 (to be released to beta 2025-01-03 and to stable on 2025-02-20). [2024plan]: https://rust-lang.github.io/rust-project-goals/2024h2/Rust-2024-Edition.html#milestones -**Async.** In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is widely used, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. +[**Async.**](https://rust-lang.github.io/rust-project-goals/2024h2/async.html) In 2024 we plan to deliver several critical async Rust building block features, most notably support for *async closures* and *`Send` bounds*. This is part of a multi-year program aiming to raise the experience of authoring "async Rust" to the same level of quality as "sync Rust". Async Rust is widely used, with 52% of the respondents in the [2023 Rust survey](https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Survey-2023-results.html) indicating that they use Rust to build server-side or backend applications. -**Rust for Linux.** The [experimental support for Rust development in the Linux kernel][RFL] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. +[**Rust for Linux.**](https://rust-lang.github.io/rust-project-goals/2024h2/rfl_stable.html) The [experimental support for Rust development in the Linux kernel][RFL] is a watershed moment for Rust, demonstrating to the world that Rust is indeed capable of targeting all manner of low-level systems applications. And yet today that support rests on a [number of unstable features][RFL#2], blocking the effort from ever going beyond experimental status. For 2024H2 we will work to close the [largest gaps that block support][rflgaps]. [RFL]: https://rust-for-linux.com/ [RFL#2]: https://github.com/Rust-for-Linux/linux/issues/2 From 40eded74046110b7193c299acb3eed89c8038b31 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Aug 2024 08:30:35 +0300 Subject: [PATCH 20/22] Update posts/2024-08-09-Project-goals.md --- posts/2024-08-09-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-09-Project-goals.md b/posts/2024-08-09-Project-goals.md index 721e8c6de..f0b176571 100644 --- a/posts/2024-08-09-Project-goals.md +++ b/posts/2024-08-09-Project-goals.md @@ -50,7 +50,7 @@ Check out [the whole list][23 other goals]! (Go ahead, we'll wait, but come back ## How to track progress -As the year progresses, we will be posting regular blog posts summarizing the progress on the various goals. If you'd like to see more detail, the [2024h2 milestone][m] on the [rust-lang/rust-project-goals][] repository has tracking issues for each of the goals. Each issue is assigned to the [owner(s)][o] of that particular goal. You can subscribe to the issue to receive regular updates, or monitor the [#project-goals channel](https://rust-lang.zulipchat.com/#narrow/stream/435869-project-goals) on the [rust-lang Zulip](https://rust-lang.zulipchat.com). +As the year progresses, we will be posting regular blog posts summarizing the progress on the various goals. If you'd like to see more detail, the [2024h2 milestone][m] on the [rust-lang/rust-project-goals][] repository has tracking issues for each of the goals. Each issue is assigned to the [owner(s)][o] of that particular goal. You can subscribe to the issue to receive regular updates, or monitor the [#project-goals channel](https://rust-lang.zulipchat.com/#narrow/stream/435869-project-goals) on the [rust-lang Zulip](https://rust-lang.zulipchat.com). Over time we will likely create other ways to follow along, such as a page on rust-lang.org to visualize progress (if you'd like to help with that, reach out to @nikomatsakis, thanks!). [rust-lang/rust-project-goals]: https://rust-lang.github.io/rust-project-goals/ [m]: https://github.com/rust-lang/rust-project-goals/milestone/2 From 172f61c93d8f5ccad8fd1502236658760d7304c9 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Aug 2024 08:31:07 +0300 Subject: [PATCH 21/22] Update posts/2024-08-09-Project-goals.md --- posts/2024-08-09-Project-goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2024-08-09-Project-goals.md b/posts/2024-08-09-Project-goals.md index f0b176571..c8a68a170 100644 --- a/posts/2024-08-09-Project-goals.md +++ b/posts/2024-08-09-Project-goals.md @@ -5,7 +5,7 @@ author: Niko Matsakis team: Leadership Council --- -With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to the Linux kernel building on stable Rust. As the year progresses we'll be posting regular updates on these 3 flagship goals along with the 23 others. +With the merging of [RFC #3672][], the Rust project has selected a **slate of 26 Project Goals** for the second half of 2024 (2024H2). This is our first time running an [experimental new roadmapping process][RFC #3614]; assuming all goes well, we expect to be running the process roughly every six months. Of these goals, we have designated three of them as our **flagship goals**, representing our most ambitious and most impactful efforts: (1) finalize preparations for the Rust 2024 edition; (2) bring the Async Rust experience closer to parity with sync Rust; and (3) resolve the biggest blockers to the Linux kernel building on stable Rust. As the year progresses we'll be posting regular updates on these 3 flagship goals along with the 23 others. [RFC #3672]: https://github.com/rust-lang/rfcs/pull/3672#issuecomment-2254599176 [RFC #3614]: https://github.com/rust-lang/rfcs/pull/3614 From 1b4b5e09e1bb0082598ad2cec2634b22a975e756 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Aug 2024 08:31:49 +0300 Subject: [PATCH 22/22] Rename 2024-08-09-Project-goals.md to 2024-08-12-Project-goals.md --- .../{2024-08-09-Project-goals.md => 2024-08-12-Project-goals.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename posts/{2024-08-09-Project-goals.md => 2024-08-12-Project-goals.md} (100%) diff --git a/posts/2024-08-09-Project-goals.md b/posts/2024-08-12-Project-goals.md similarity index 100% rename from posts/2024-08-09-Project-goals.md rename to posts/2024-08-12-Project-goals.md