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
Once the implementation is complete, the feature will be available to nightly users, but not yet part of stable Rust. This is a good time to write a blog post on [one of the Rust blogs](https://github.com/rust-lang/blog.rust-lang.org/) and issue a call for testing (here are two example [blog](https://blog.rust-lang.org/inside-rust/2024/08/09/async-closures-call-for-testing.html)[posts](https://blog.rust-lang.org/2024/09/05/impl-trait-capture-rules.html) to give you the idea). The post should highlight how the feature works, what areas you'd like people to play with, and how they can supply feedback.
211
+
212
+
## Affiliated work
213
+
214
+
Once the feature is supported by rustc, there is other associated work that needs to be done to give users a complete experience:
215
+
216
+
* Extending rustfmt to format any new syntax;
217
+
* Extending rust-analyzer;
218
+
* Documenting the feature in the Rust reference;
219
+
* ...
220
+
221
+
## Stabilization
222
+
223
+
The final step in the feature lifecycle is [stabilization][stab], which is when the feature becomes available to all Rust users. At this point, backwards incompatible changes are no longer permitted (modulo soundness bugs and inference changes; see the lang team's [defined semver policies](https://rust-lang.github.io/rfcs/1122-language-semver.html) for full details). To learn more about stabilization, see the [stabilization guide][stab].
If any member of the team responsible for tracking this
75
-
feature agrees with stabilizing this feature, they will
76
-
start the FCP (final-comment-period) process by commenting
46
+
Author a stabilization report using the [template found in this repository][srt].
47
+
Stabilization reports summarize the work that has been done since the RFC.
48
+
The [template][srt] includes a series of questions that aim to surface interconnections between this feature and the various Rust teams (lang, types, etc) and also to identify items that are commonly overlooked.
77
49
78
-
```text
79
-
@rfcbot fcp merge
80
-
```
50
+
[srt]: ./stabilization_report_template.md
81
51
82
-
The rest of the team members will review the proposal. If the final
83
-
decision is to stabilize, we proceed to do the actual code modification.
52
+
The stabilization report is typically posted as the main comment on the stabilization PR (see the next section).
53
+
If you'd like to develop the stabilization report incrementally, we recommend adding it to
84
54
85
55
## Stabilization PR
86
56
@@ -194,3 +164,23 @@ if something { /* XXX */ }
194
164
[Rust by Example]: https://github.com/rust-lang/rust-by-example
When you feel the PR is ready for consideration by the lang team, you can [nominate the PR](https://lang-team.rust-lang.org/how_to/nominate.html) to get it on the list for discussion in the next meeting. You should also cc the other interacting teams to review the report:
171
+
172
+
*`@rust-lang/types`, to look for type system interactions
173
+
*`@rust-lang/compiler`, to vouch for implementation quality
174
+
*`@rust-lang/opsem`, but only if this feature interacts with unsafe code and can create undefined behavior
175
+
*`@rust-lang/libs-api`, but only if there are additions to the standard library
176
+
177
+
## FCP proposed on the PR
178
+
179
+
Finally, some member of the team responsible for tracking this feature agrees with stabilizing this feature, will
180
+
start the FCP (final-comment-period) process by commenting
181
+
182
+
```text
183
+
@rfcbot fcp merge
184
+
```
185
+
186
+
The rest of the team members will review the proposal. If the final decision is to stabilize, the PR will be reviewed by the compiler team like any other PR.
> **What is this?** This is a template to use for [stabilization reports](./stabilization_guide.md). It consists of a series of questions that aim to provide the information most commonly needed and to help reviewers be more likely to identify potential problems up front. Not all parts of the template will apply to all stabilizations. Feel free to put N/A if a question doesn't seem to apply to your case.
4
+
5
+
## General design
6
+
7
+
### What is the RFC for this feature and what changes have occurred to the user-facing design since the RFC was finalized?
8
+
9
+
### What behavior are we committing to that has been controversial? Summarize the major arguments pro/con.
10
+
11
+
### Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those?
12
+
13
+
## Has a call-for-testing period been conducted? If so, what feedback was received?
14
+
15
+
## Implementation quality
16
+
17
+
### Summarize the major parts of the implementation and provide links into the code (or to PRs)
18
+
19
+
An example for async closures: https://rustc-dev-guide.rust-lang.org/coroutine-closures.html
20
+
21
+
### Summarize existing test coverage of this feature
22
+
23
+
- What does the test coverage landscape for this feature look like?
0 commit comments