|
2 | 2 |
|
3 | 3 | > **What is this?**
|
4 | 4 | >
|
5 |
| -> This is a template to use for [stabilization reports](./stabilization_guide.md) of **language features**. 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. |
| 5 | +> This is a template to use for [stabilization reports](./stabilization_guide.md) of **language features**. It consists of a series of questions that aim to provide the information most commonly needed. This helps reviewers to identify potential problems up front. Not all parts of the template will apply to every stabilizations. Put N/A if a question doesn't apply. |
6 | 6 | >
|
7 |
| -> You can copy the following template after the separator and edit it as Markdown, replacing the *TODO* placeholders with answers. |
| 7 | +> Copy the following template after the separator and edit it as Markdown. Replace each *TODO* with answers. |
8 | 8 |
|
9 | 9 | ---
|
10 | 10 |
|
11 | 11 | > ## General design
|
| 12 | +> |
| 13 | +> ### What is the RFC for this feature? |
12 | 14 |
|
13 |
| -> ### What is the RFC for this feature and what changes have occurred to the user-facing design since the RFC was finalized? |
| 15 | +*TODO* |
| 16 | + |
| 17 | +> ### Post-RFC changes |
| 18 | +> |
| 19 | +> What user-visible changes have occurred since the RFC was accepted? |
14 | 20 |
|
15 | 21 | *TODO*
|
16 | 22 |
|
17 |
| -> ### What behavior are we committing to that has been controversial? Summarize the major arguments pro/con. |
| 23 | +> ### Key points |
| 24 | +> |
| 25 | +> What behaviors to be stabilized have been most controversial? Summarize the major arguments on all sides. |
18 | 26 |
|
19 | 27 | *TODO*
|
20 | 28 |
|
21 |
| -> ### Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those? |
| 29 | +> ### Nightly extensions |
| 30 | +> |
| 31 | +> Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those? |
22 | 32 |
|
23 | 33 | *TODO*
|
24 | 34 |
|
25 |
| -> ## Has a Call for Testing period been conducted? If so, what feedback was received? |
| 35 | +> ## Feedback |
26 | 36 | >
|
27 |
| -> Does any OSS nightly users use this feature? For instance, a useful indication might be "search <grep.app> for `#![feature(FEATURE_NAME)]` and had `N` results". |
| 37 | +> ### Call for testing |
| 38 | +> |
| 39 | +> Has a "call for testing" been done? If so, what feedback was received? |
28 | 40 |
|
29 | 41 | *TODO*
|
30 | 42 |
|
31 |
| -> ## Implementation quality |
| 43 | +> ### Nightly use |
| 44 | +> |
| 45 | +> Does any OSS nightly users use this feature? For instance, a useful indication might be "search <grep.app> for `#![feature(FEATURE_NAME)]` and had `N` results". |
32 | 46 |
|
33 | 47 | *TODO*
|
34 | 48 |
|
35 |
| -> ### Summarize the major parts of the implementation and provide links into the code (or to PRs) |
| 49 | +> ## Implementation quality |
| 50 | +> |
| 51 | +> ### Major parts |
| 52 | +> |
| 53 | +> Summarize the major parts of the implementation and provide links into the code (or to PRs). |
36 | 54 | >
|
37 | 55 | > An example for async closures: <https://rustc-dev-guide.rust-lang.org/coroutine-closures.html>.
|
38 | 56 |
|
39 | 57 | *TODO*
|
40 | 58 |
|
41 |
| -> ### Summarize existing test coverage of this feature |
| 59 | +> ### Coverage |
| 60 | +> |
| 61 | +> Summarize existing test coverage of this feature. |
42 | 62 | >
|
43 | 63 | > Consider what the "edges" of this feature are. We're particularly interested in seeing tests that assure us about exactly what nearby things we're not stabilizing.
|
44 | 64 | >
|
|
56 | 76 |
|
57 | 77 | *TODO*
|
58 | 78 |
|
59 |
| -> ### What outstanding bugs in the issue tracker involve this feature? Are they stabilization-blocking? |
| 79 | +> ### Outstanding bugs |
| 80 | +> |
| 81 | +> What outstanding bugs in the issue tracker involve this feature? Are they stabilization-blocking? |
60 | 82 |
|
61 | 83 | *TODO*
|
62 | 84 |
|
63 |
| -> ### What FIXMEs are still in the code for that feature and why is it ok to leave them there? |
| 85 | +> ### Outstanding FIXMEs |
| 86 | +> |
| 87 | +> What FIXMEs are still in the code for that feature and why is it ok to leave them there? |
64 | 88 |
|
65 | 89 | *TODO*
|
66 | 90 |
|
67 |
| -> ### Summarize contributors to the feature by name for recognition and assuredness that people involved in the feature agree with stabilization |
| 91 | +> ### Contributors |
| 92 | +> |
| 93 | +> Summarize contributors to the feature by name for recognition and assuredness that people involved in the feature agree with stabilization. |
68 | 94 |
|
69 | 95 | *TODO*
|
70 | 96 |
|
71 |
| -> ### Which tools need to be adjusted to support this feature. Has this work been done? |
72 |
| -> |
73 |
| -> Consider rustdoc, clippy, rust-analyzer, rustfmt, rustup, docs.rs. |
| 97 | +> ### Tool changes |
| 98 | +> |
| 99 | +> Which tools need to be adjusted to support this feature. Has this work been done? |
| 100 | +> |
| 101 | +> Consider rustdoc (both JSON and HTML), clippy, rust-analyzer, rustfmt, rustup, docs.rs. |
74 | 102 |
|
75 | 103 | *TODO*
|
76 | 104 |
|
77 | 105 | > ## Type system and execution rules
|
78 | 106 |
|
79 |
| -> ### What compilation-time checks are done that are needed to prevent undefined behavior? |
80 |
| -> |
81 |
| -> (Be sure to link to tests demonstrating that these tests are being done.) |
| 107 | +> ### Compile-time checks |
| 108 | +> |
| 109 | +> What compilation-time checks are done that are needed to prevent undefined behavior? |
| 110 | +> |
| 111 | +> (Be sure to link to tests demonstrating that these tests are being done.) |
82 | 112 |
|
83 | 113 | *TODO*
|
84 | 114 |
|
85 |
| -> ### Does the feature's implementation need checks to prevent UB or is it sound by default and needs opt in in places to perform the dangerous/unsafe operations? If it is not sound by default, what is the rationale? |
| 115 | +> ### Sound by default? |
| 116 | +> |
| 117 | +> Does the feature's implementation need checks to prevent UB or is it sound by default and needs opt in in places to perform the dangerous/unsafe operations? If it is not sound by default, what is the rationale? |
86 | 118 |
|
87 | 119 | *TODO*
|
88 | 120 |
|
89 |
| -> ### Can users use this feature to introduce undefined behavior, or use this feature to break the abstraction of Rust and expose the underlying assembly-level implementation? (Describe.) |
| 121 | +> ### Breaks the AM? |
| 122 | +> |
| 123 | +> Can users use this feature to introduce undefined behavior, or use this feature to break the abstraction of Rust and expose the underlying assembly-level implementation? (Describe.) |
90 | 124 |
|
91 | 125 | *TODO*
|
92 | 126 |
|
93 |
| -> ### What updates are needed to the reference/specification? (link to PRs when they exist) |
| 127 | +> ### Reference |
| 128 | +> |
| 129 | +> What updates are needed to the Reference? Link to each PR. |
94 | 130 |
|
95 |
| -*TODO* |
| 131 | +- *TODO* |
96 | 132 |
|
97 | 133 | > ## Common interactions
|
| 134 | +> |
| 135 | +> ### Temporaries |
| 136 | +> |
| 137 | +> Does this feature introduce new expressions that can produce temporaries? What are the lifetimes of those temporaries? |
98 | 138 |
|
99 |
| -> ### Does this feature introduce new expressions and can they produce temporaries? What are the lifetimes of those temporaries? |
| 139 | +*TODO* |
| 140 | + |
| 141 | +> ### Pre-expansion / post-expansion |
| 142 | +> |
| 143 | +> Does this feature raise questions about what should be accepted pre-expansion (e.g. in code covered by `#[cfg(false)]`) versus what should be accepted post-expansion? What decisions were made about this? |
100 | 144 |
|
101 | 145 | *TODO*
|
102 | 146 |
|
103 |
| -> ### What other unstable features may be exposed by this feature? |
| 147 | +> ### SemVer implications |
| 148 | +> |
| 149 | +> Does this feature create any new ways in which library authors must take care to prevent breaking their downstreams when making minor-version releases? Describe these. Are these new hazards "major" or "minor" according to [RFC 1105](https://rust-lang.github.io/rfcs/1105-api-evolution.html)? |
| 150 | +
|
| 151 | +*TODO* |
| 152 | + |
| 153 | +> ### Exposing other features |
| 154 | +> |
| 155 | +> Are there any other unstable features whose behavior may be exposed by this feature in any way? What features present the highest risk of that? |
104 | 156 |
|
105 | 157 | *TODO*
|
0 commit comments