|
1 | 1 | # Stabilization report template
|
2 | 2 |
|
3 |
| -> **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. |
| 3 | +> **What is this?** |
| 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. |
| 6 | +> |
| 7 | +> You can copy the following template after the separator and edit it as Markdown, replacing the *TODO* placeholders with answers. |
4 | 8 |
|
5 |
| -## General design |
| 9 | +--- |
6 | 10 |
|
7 |
| -### What is the RFC for this feature and what changes have occurred to the user-facing design since the RFC was finalized? |
| 11 | +> ## General design |
8 | 12 |
|
9 |
| -### What behavior are we committing to that has been controversial? Summarize the major arguments pro/con. |
| 13 | +> ### What is the RFC for this feature and what changes have occurred to the user-facing design since the RFC was finalized? |
10 | 14 |
|
11 |
| -### Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those? |
| 15 | +*TODO* |
12 | 16 |
|
13 |
| -## Has a call-for-testing period been conducted? If so, what feedback was received? |
| 17 | +> ### What behavior are we committing to that has been controversial? Summarize the major arguments pro/con. |
14 | 18 |
|
15 |
| -## Implementation quality |
| 19 | +*TODO* |
16 | 20 |
|
17 |
| -### Summarize the major parts of the implementation and provide links into the code (or to PRs) |
| 21 | +> ### Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those? |
18 | 22 |
|
19 |
| -An example for async closures: https://rustc-dev-guide.rust-lang.org/coroutine-closures.html |
| 23 | +*TODO* |
20 | 24 |
|
21 |
| -### Summarize existing test coverage of this feature |
| 25 | +> ## Has a Call for Testing period been conducted? If so, what feedback was received? |
| 26 | +> |
| 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". |
22 | 28 |
|
23 |
| -- What does the test coverage landscape for this feature look like? |
24 |
| - - (Positive/negative) Behavioral tests? |
25 |
| - - (Positive/negative) Interface tests? (e.g. compiler cli interface) |
26 |
| - - Maybe link to test folders or individual tests (ui/codegen/assembly/run-make tests, etc.) |
27 |
| - - Are there any (intentional/unintentional) gaps in test coverage? |
| 29 | +*TODO* |
28 | 30 |
|
29 |
| -### What outstanding bugs in the issue tracker involve this feature? Are they stabilization-blocking? |
| 31 | +> ## Implementation quality |
30 | 32 |
|
31 |
| -### What FIXMEs are still in the code for that feature and why is it ok to leave them there? |
| 33 | +*TODO* |
32 | 34 |
|
33 |
| -### Summarize contributors to the feature by name for recognition and assuredness that people involved in the feature agree with stabilization |
| 35 | +> ### Summarize the major parts of the implementation and provide links into the code (or to PRs) |
| 36 | +> |
| 37 | +> An example for async closures: <https://rustc-dev-guide.rust-lang.org/coroutine-closures.html>. |
34 | 38 |
|
35 |
| -### Which tools need to be adjusted to support this feature. Has this work been done? |
| 39 | +*TODO* |
36 | 40 |
|
37 |
| -*Consider rustdoc, clippy, rust-analyzer, rustfmt, rustup, docs.rs.* |
| 41 | +> ### Summarize existing test coverage of this feature |
| 42 | +> |
| 43 | +> 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 | +> |
| 45 | +> Within each test, include a comment at the top describing the purpose of the test and what set of invariants it intends to demonstrate. This is a great help to those reviewing the tests at stabilization time. |
| 46 | +> |
| 47 | +> - What does the test coverage landscape for this feature look like? |
| 48 | +> - Tests for compiler errors when you use the feature wrongly or make mistakes? |
| 49 | +> - Tests for the feature itself: |
| 50 | +> - Limits of the feature (so failing compilation) |
| 51 | +> - Exercises of edge cases of the feature |
| 52 | +> - Tests that checks the feature works as expected (where applicable, `//@ run-pass`). |
| 53 | +> - Are there any intentional gaps in test coverage? |
| 54 | +> |
| 55 | +> Link to test folders or individual tests (ui/codegen/assembly/run-make tests, etc.). |
38 | 56 |
|
39 |
| -## Type system and execution rules |
| 57 | +*TODO* |
40 | 58 |
|
41 |
| -### What compilation-time checks are done that are needed to prevent undefined behavior? |
| 59 | +> ### What outstanding bugs in the issue tracker involve this feature? Are they stabilization-blocking? |
42 | 60 |
|
43 |
| -(Be sure to link to tests demonstrating that these tests are being done.) |
| 61 | +*TODO* |
44 | 62 |
|
45 |
| -### 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.) |
| 63 | +> ### What FIXMEs are still in the code for that feature and why is it ok to leave them there? |
46 | 64 |
|
47 |
| -### What updates are needed to the reference/specification? (link to PRs when they exist) |
| 65 | +*TODO* |
48 | 66 |
|
49 |
| -## Common interactions |
| 67 | +> ### Summarize contributors to the feature by name for recognition and assuredness that people involved in the feature agree with stabilization |
50 | 68 |
|
51 |
| -### Does this feature introduce new expressions and can they produce temporaries? What are the lifetimes of those temporaries? |
| 69 | +*TODO* |
52 | 70 |
|
53 |
| -### What other unstable features may be exposed by this feature? |
| 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. |
54 | 74 |
|
| 75 | +*TODO* |
| 76 | + |
| 77 | +> ## Type system and execution rules |
| 78 | +
|
| 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.) |
| 82 | +
|
| 83 | +*TODO* |
| 84 | + |
| 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? |
| 86 | +
|
| 87 | +*TODO* |
| 88 | + |
| 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.) |
| 90 | +
|
| 91 | +*TODO* |
| 92 | + |
| 93 | +> ### What updates are needed to the reference/specification? (link to PRs when they exist) |
| 94 | +
|
| 95 | +*TODO* |
| 96 | + |
| 97 | +> ## Common interactions |
| 98 | +
|
| 99 | +> ### Does this feature introduce new expressions and can they produce temporaries? What are the lifetimes of those temporaries? |
| 100 | +
|
| 101 | +*TODO* |
| 102 | + |
| 103 | +> ### What other unstable features may be exposed by this feature? |
| 104 | +
|
| 105 | +*TODO* |
0 commit comments