@@ -2377,21 +2377,33 @@ considered off, and using the features will result in a compiler error.
2377
2377
2378
2378
The currently implemented features of the reference compiler are:
2379
2379
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
+
2380
2384
* ` asm ` - The ` asm! ` macro provides a means for inline assembly. This is often
2381
2385
useful, but the exact syntax for this feature along with its
2382
2386
semantics are likely to change, so this macro usage must be opted
2383
2387
into.
2384
2388
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
+
2385
2397
* ` concat_idents ` - Allows use of the ` concat_idents ` macro, which is in many
2386
2398
ways insufficient for concatenating identifiers, and may be
2387
2399
removed entirely for something more wholesome.
2388
2400
2389
- * ` default_type_params ` - Allows use of default type parameters. The future of
2390
- this feature is uncertain.
2391
-
2392
2401
* ` intrinsics ` - Allows use of the "rust-intrinsics" ABI. Compiler intrinsics
2393
2402
are inherently unstable and no promise about them is made.
2394
2403
2404
+ * ` int_uint ` - Allows the use of the ` int ` and ` uint ` types, which are deprecated.
2405
+ Use ` isize ` and ` usize ` instead.
2406
+
2395
2407
* ` lang_items ` - Allows use of the ` #[lang] ` attribute. Like ` intrinsics ` ,
2396
2408
lang items are inherently unstable and no promise about them
2397
2409
is made.
@@ -2410,12 +2422,33 @@ The currently implemented features of the reference compiler are:
2410
2422
* ` log_syntax ` - Allows use of the ` log_syntax ` macro attribute, which is a
2411
2423
nasty hack that will certainly be removed.
2412
2424
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
+
2413
2433
* ` non_ascii_idents ` - The compiler supports the use of non-ascii identifiers,
2414
2434
but the implementation is a little rough around the
2415
2435
edges, so this can be seen as an experimental feature
2416
2436
for now until the specification of identifiers is fully
2417
2437
fleshed out.
2418
2438
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
+
2419
2452
* ` plugin ` - Usage of [ compiler plugins] [ plugin ] for custom lints or syntax extensions.
2420
2453
These depend on compiler internals and are subject to change.
2421
2454
@@ -2431,8 +2464,15 @@ The currently implemented features of the reference compiler are:
2431
2464
* ` simd ` - Allows use of the ` #[simd] ` attribute, which is overly simple and
2432
2465
not the SIMD interface we want to expose in the long term.
2433
2466
2467
+ * ` simd_ffi ` - Allows use of SIMD vectors in signatures for foreign functions.
2468
+ The SIMD interface is subject to change.
2469
+
2434
2470
* ` staged_api ` - Allows usage of stability markers and ` #![staged_api] ` in a crate
2435
2471
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
+
2436
2476
* ` struct_inherit ` - Allows using struct inheritance, which is barely
2437
2477
implemented and will probably be removed. Don't use this.
2438
2478
@@ -2460,18 +2500,20 @@ The currently implemented features of the reference compiler are:
2460
2500
which is considered wildly unsafe and will be
2461
2501
obsoleted by language improvements.
2462
2502
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
+
2463
2509
* ` unmarked_api ` - Allows use of items within a ` #![staged_api] ` crate
2464
2510
which have not been marked with a stability marker.
2465
2511
Such items should not be allowed by the compiler to exist,
2466
2512
so if you need this there probably is a compiler bug.
2467
2513
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.
2475
2517
2476
2518
If a feature is promoted to a language feature, then all existing programs will
2477
2519
start to receive compilation warnings about #[ feature] directives which enabled
0 commit comments