@@ -44,12 +44,8 @@ prevents breaking dependencies by leveraging Cargo's lint capping.
44
44
[ rustc bug ] : https://github.com/rust-lang/rust/issues/15702
45
45
46
46
## stable
47
-
48
47
The ` #[stable(feature = "foo", "since = "1.420.69")] ` attribute explicitly
49
- marks an item as stabilized. To do this, follow the instructions in
50
- [ Stabilizing Features] ( ./stabilization_guide.md ) .
51
-
52
- Note that stable functions may use unstable things in their body.
48
+ marks an item as stabilized. Note that stable functions may use unstable things in their body.
53
49
54
50
## rustc_const_unstable
55
51
@@ -72,6 +68,24 @@ even on an `unstable` function, if that function is called from another
72
68
Furthermore this attribute is needed to mark an intrinsic as callable from
73
69
` rustc_const_stable ` functions.
74
70
71
+ ## Stabilizing a library feature
72
+
73
+ To stabilize a feature, follow these steps:
74
+
75
+ 0 . Ask a ** @T-libs ** member to start an FCP on the tracking issue and wait for
76
+ the FCP to complete (with ` disposition-merge ` ).
77
+ 1 . Change ` #[unstable(...)] ` to ` #[stable(since = "version")] ` .
78
+ ` version ` should be the * current nightly* , i.e. stable+2. You can see which version is
79
+ the current nightly [ on Forge] ( https://forge.rust-lang.org/#current-release-versions ) .
80
+ 2 . Remove ` #![feature(...)] ` from any test or doc-test for this API. If the feature is used in the
81
+ compiler or tools, remove it from there as well.
82
+ 3 . If applicable, change ` #[rustc_const_unstable(...)] ` to
83
+ ` #[rustc_const_stable(since = "version")] ` .
84
+ 4 . Open a PR against ` rust-lang/rust ` .
85
+ - Add the appropriate labels: ` @rustbot modify labels: +T-libs ` .
86
+ - Link to the tracking issue and say "Closes #XXXXX".
87
+
88
+ You can see an example of stabilizing a feature at [ #75132 ] ( https://github.com/rust-lang/rust/pull/75132 ) .
75
89
76
90
## allow_internal_unstable
77
91
@@ -130,35 +144,4 @@ default `allow`, but most of the standard library raises it to a warning with
130
144
` #![warn(deprecated_in_future)] ` .
131
145
132
146
[ `deprecated` attribute ] : https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-deprecated-attribute
133
-
134
- ## -Z force-unstable-if-unmarked
135
-
136
- The ` -Z force-unstable-if-unmarked ` flag has a variety of purposes to help
137
- enforce that the correct crates are marked as unstable. It was introduced
138
- primarily to allow rustc and the standard library to link to arbitrary crates
139
- on crates.io which do not themselves use ` staged_api ` . ` rustc ` also relies on
140
- this flag to mark all of its crates as unstable with the ` rustc_private `
141
- feature so that each crate does not need to be carefully marked with
142
- ` unstable ` .
143
-
144
- This flag is automatically applied to all of ` rustc ` and the standard library
145
- by the bootstrap scripts. This is needed because the compiler and all of its
146
- dependencies are shipped in the sysroot to all users.
147
-
148
- This flag has the following effects:
149
-
150
- - Marks the crate as "unstable" with the ` rustc_private ` feature if it is not
151
- itself marked as stable or unstable.
152
- - Allows these crates to access other forced-unstable crates without any need
153
- for attributes. Normally a crate would need a ` #![feature(rustc_private)] `
154
- attribute to use other unstable crates. However, that would make it
155
- impossible for a crate from crates.io to access its own dependencies since
156
- that crate won't have a ` feature(rustc_private) ` attribute, but * everything*
157
- is compiled with ` -Z force-unstable-if-unmarked ` .
158
-
159
- Code which does not use ` -Z force-unstable-if-unmarked ` should include the
160
- ` #![feature(rustc_private)] ` crate attribute to access these force-unstable
161
- crates. This is needed for things that link ` rustc ` , such as ` miri ` , ` rls ` , or
162
- ` clippy ` .
163
-
164
147
[ blog ] : https://www.ralfj.de/blog/2018/07/19/const.html
0 commit comments