Skip to content

Commit ad1cec6

Browse files
committed
Rollup merge of #22277 - pnkfelix:reference-update-feature-gate-list, r=steveklabnik
Added all active features to the list in reference.md. Added a second note about keeping the reference.md list up-to-date to the bottom of the list, since not everyone (including me) reads the big comment at the top of it. :) Ensured that the feature gate list in reference.md is kept in alphabetical order.
2 parents af595a3 + a7d5c3f commit ad1cec6

File tree

2 files changed

+53
-10
lines changed

2 files changed

+53
-10
lines changed

src/doc/reference.md

+52-10
Original file line numberDiff line numberDiff line change
@@ -2377,21 +2377,33 @@ considered off, and using the features will result in a compiler error.
23772377

23782378
The currently implemented features of the reference compiler are:
23792379

2380+
* `advanced_slice_patterns` - see the [match expressions](#match-expressions)
2381+
section for discussion; the exact semantics of
2382+
slice patterns are subject to change.
2383+
23802384
* `asm` - The `asm!` macro provides a means for inline assembly. This is often
23812385
useful, but the exact syntax for this feature along with its
23822386
semantics are likely to change, so this macro usage must be opted
23832387
into.
23842388

2389+
* `associated_types` - Allows type aliases in traits. Experimental.
2390+
2391+
* `box_patterns` - Allows `box` patterns, the exact semantics of which
2392+
is subject to change.
2393+
2394+
* `box_syntax` - Allows use of `box` expressions, the exact semantics of which
2395+
is subject to change.
2396+
23852397
* `concat_idents` - Allows use of the `concat_idents` macro, which is in many
23862398
ways insufficient for concatenating identifiers, and may be
23872399
removed entirely for something more wholesome.
23882400

2389-
* `default_type_params` - Allows use of default type parameters. The future of
2390-
this feature is uncertain.
2391-
23922401
* `intrinsics` - Allows use of the "rust-intrinsics" ABI. Compiler intrinsics
23932402
are inherently unstable and no promise about them is made.
23942403

2404+
* `int_uint` - Allows the use of the `int` and `uint` types, which are deprecated.
2405+
Use `isize` and `usize` instead.
2406+
23952407
* `lang_items` - Allows use of the `#[lang]` attribute. Like `intrinsics`,
23962408
lang items are inherently unstable and no promise about them
23972409
is made.
@@ -2410,12 +2422,33 @@ The currently implemented features of the reference compiler are:
24102422
* `log_syntax` - Allows use of the `log_syntax` macro attribute, which is a
24112423
nasty hack that will certainly be removed.
24122424

2425+
* `main` - Allows use of the `#[main]` attribute, which changes the entry point
2426+
into a Rust program. This capabiilty is subject to change.
2427+
2428+
* `macro_reexport` - Allows macros to be re-exported from one crate after being imported
2429+
from another. This feature was originally designed with the sole
2430+
use case of the Rust standard library in mind, and is subject to
2431+
change.
2432+
24132433
* `non_ascii_idents` - The compiler supports the use of non-ascii identifiers,
24142434
but the implementation is a little rough around the
24152435
edges, so this can be seen as an experimental feature
24162436
for now until the specification of identifiers is fully
24172437
fleshed out.
24182438

2439+
* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
2440+
`extern crate std`. This typically requires use of the unstable APIs
2441+
behind the libstd "facade", such as libcore and libcollections. It
2442+
may also cause problems when using syntax extensions, including
2443+
`#[derive]`.
2444+
2445+
* `on_unimplemented` - Allows the `#[rustc_on_unimplemented]` attribute, which allows
2446+
trait definitions to add specialized notes to error messages
2447+
when an implementation was expected but not found.
2448+
2449+
* `optin_builtin_traits` - Allows the definition of default and negative trait
2450+
implementations. Experimental.
2451+
24192452
* `plugin` - Usage of [compiler plugins][plugin] for custom lints or syntax extensions.
24202453
These depend on compiler internals and are subject to change.
24212454

@@ -2431,8 +2464,15 @@ The currently implemented features of the reference compiler are:
24312464
* `simd` - Allows use of the `#[simd]` attribute, which is overly simple and
24322465
not the SIMD interface we want to expose in the long term.
24332466

2467+
* `simd_ffi` - Allows use of SIMD vectors in signatures for foreign functions.
2468+
The SIMD interface is subject to change.
2469+
24342470
* `staged_api` - Allows usage of stability markers and `#![staged_api]` in a crate
24352471

2472+
* `start` - Allows use of the `#[start]` attribute, which changes the entry point
2473+
into a Rust program. This capabiilty, especially the signature for the
2474+
annotated function, is subject to change.
2475+
24362476
* `struct_inherit` - Allows using struct inheritance, which is barely
24372477
implemented and will probably be removed. Don't use this.
24382478

@@ -2460,18 +2500,20 @@ The currently implemented features of the reference compiler are:
24602500
which is considered wildly unsafe and will be
24612501
obsoleted by language improvements.
24622502

2503+
* `unsafe_no_drop_flag` - Allows use of the `#[unsafe_no_drop_flag]` attribute,
2504+
which removes hidden flag added to a type that
2505+
implements the `Drop` trait. The design for the
2506+
`Drop` flag is subject to change, and this feature
2507+
may be removed in the future.
2508+
24632509
* `unmarked_api` - Allows use of items within a `#![staged_api]` crate
24642510
which have not been marked with a stability marker.
24652511
Such items should not be allowed by the compiler to exist,
24662512
so if you need this there probably is a compiler bug.
24672513

2468-
* `associated_types` - Allows type aliases in traits. Experimental.
2469-
2470-
* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
2471-
`extern crate std`. This typically requires use of the unstable APIs
2472-
behind the libstd "facade", such as libcore and libcollections. It
2473-
may also cause problems when using syntax extensions, including
2474-
`#[derive]`.
2514+
* `visible_private_types` - Allows public APIs to expose otherwise private
2515+
types, e.g. as the return type of a public function.
2516+
This capability may be removed in the future.
24752517

24762518
If a feature is promoted to a language feature, then all existing programs will
24772519
start to receive compilation warnings about #[feature] directives which enabled

src/libsyntax/feature_gate.rs

+1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ static KNOWN_FEATURES: &'static [(&'static str, &'static str, Status)] = &[
134134
// switch to Accepted; see RFC 320)
135135
("unsafe_no_drop_flag", "1.0.0", Active),
136136
];
137+
// (changing above list without updating src/doc/reference.md makes @cmr sad)
137138

138139
enum Status {
139140
/// Represents an active feature that is currently being implemented or

0 commit comments

Comments
 (0)