This document is intended to document the current state of Rust’s various unstable features, their current status and what’s required next to be completed. It should be kept in sync with the State of Rust board.
Team | Feature | Status | What’s next | Last update |
---|---|---|---|---|
compiler + lang | repr(packed) allows invalid unaligned loads | Implemented | Blocked on safe_packed_borrows |
2018-07-14 |
compiler | Implement likely/unlikely intrinsic (tracking issue for RFC 1131) | Implemented | Blocked on decision to deprecate or redesign | 2018-07-14 |
compiler | RFC amendment #1384 | Implemented | Blocked on promotion to error | 2018-07-14 |
compiler | Specialization and lifetime dispatch | Unimplemented | Blocked on specialisation | 2018-07-14 |
compiler | The “ptx-kernel” ABI | Implemented | Blocked on decision to stabilise | 2018-07-14 |
compiler | The #[wasm_custom_section] attribute |
Implemented | Blocked decision to change to a more general solution | 2018-07-14 |
compiler | The #[wasm_import_module] attribute |
Implemented | Blocked on documentation and small design consideration | 2018-07-14 |
compiler | The msp430-interrupt calling convention/ABI |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
compiler | The thiscall calling convention |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
compiler | The x86-interrupt calling convention |
Implemented | Blocked on LLVM bugs | 2018-07-14 |
compiler | Trait bounds not checked on specializable associated types | Unimplemented | Blocked on implementation | 2018-07-14 |
compiler | #[may_dangle] , a refined dropck escape hatch (RFC 1327) |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
compiler | arbitrary_self_types |
Implemented | Blocked on RFC | 2018-07-14 |
compiler | incoherent_fundamental_impls compatibility lint |
Implemented | Hard error PR blocked on second crater run | 2018-07-14 |
compiler | legacy_directory_ownership future-compatibility warnings |
Implemented | Blocked on making the lint deny by default | 2018-07-14 |
compiler | parenthesized_params_in_types_and_modules future-compatibility warnings |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
compiler | safe_packed_borrows compatibility lint |
Implemented | Blocked on making the lint hard error | 2018-07-14 |
compiler | underscore_literal_suffix future-compatibility warnings |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
compiler | where_clauses_object_safety future compatibility lint |
Implemented | Blocked on making the lint deny by default | 2018-07-14 |
compiler | 🔬 generic associated types (GAT) | Unimplemented | Blocked on implementation | 2018-07-14 |
dev-tools + rustdoc | rustdoc --display-warnings |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
dev-tools | Sanitizer support | Implemented | Blocked on decision to stabilise | 2018-07-14 |
dev-tools | Stabilise -Zsave-analysis |
Unimplemented | Blocked on whether a new approach supersedes this | 2018-07-14 |
dev-tools | #[link(kind)] connecting libraries on Windows |
Implemented | Blocked on name decision and stabilisation | 2018-07-14 |
dev-tools | --print target-spec-json |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
dev-tools | -Z profile |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
dev-tools | libtest JSON output | Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang + libs | “macro naming and modularisation” (RFC #1561) | Implementation in progress | Blocked on unresolved design decisions | 2018-07-14 |
lang + libs | RFC 1566: Procedural macros | Implementation in progress | Blocked on macros 1.2 stabilisation | 2018-07-14 |
lang + libs | DST coercions (coerce_unsized, unsize) | Unimplemented | Blocked on creation of custom DST RFC | 2018-07-14 |
lang + libs | Fn traits (unboxed_closures feature) |
Implemented | Blocked on unresolved design decisions | 2018-07-14 |
lang + libs | concat_idents |
Implemented | Blocked on macro improvements | 2018-07-14 |
lang + libs | std::raw |
Unimplemented | Blocked on deprecation implementation | 2018-07-14 |
lang | ‘Allow Self to appear in the where clause of trait impls’ |
Implemented | Blocked on #35237 | 2018-07-14 |
lang | 128-bit integer support (RFC 1504) | Implementation in progress | Blocked on enums with 128 discriminant | 2018-07-14 |
lang | Allocator traits and std::heap | Implementation in progress | Blocked on audit and design decisions | 2018-07-14 |
lang | Allow all literals in attributes (Tracking Issue for RFC #1559) | Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | Allowing overlapping implementations for marker trait. | Implemented | Blocked on documentation | 2018-07-14 |
lang | Exclusive range patterns | Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | Exhaustive integer patterns tracking issue | Implementation in progress | Blocked implementation being merged | 2018-07-14 |
lang | Naked fns (RFC #1201) | Implemented | Blocked on design feedback and the inline assembly feature. | 2018-07-14 |
lang | Nonparametric dropck (tracking issue for RFC 1238) | Implemented | Blocked on #[may_dangle] and dropck_parametricity |
2018-07-14 |
lang | Opt-in built-in bounds traits RFC tracker (optin_builtin_traits) | Implementation in progress | Blocked on conditional negative implements implementation | 2018-07-14 |
lang | Option::xor | Implemented | Blocked on decision to stable | 2018-07-14 |
lang | Patterns in functions without body | Implemented | Blocked on making lint deny by default | 2018-07-14 |
lang | Promoting ! to a type (RFC 1216) |
Implementation in progress | Blocked on decision around coercion | 2018-07-14 |
lang | RFC #495 (features slice_patterns and advanced_slice_patterns ) |
Implemented | Blocked on NLL | 2018-07-14 |
lang | RFC 1872: exhaustive_patterns |
Implemented | Blocked on the never type | 2018-07-14 |
lang | RFC 554: pattern_parentheses |
Implemented | Blocked on stabilisation PR | 2018-07-14 |
lang | The #[used] attribute |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | The lifetime specifier for macro_rules! |
Implemented | Waiting on 1.28.0 stable release | 2018-07-14 |
lang | Tracking Issue for RFC 213: Default Type Parameter Fallback | Implemented | Blocked on unresolved design decisions | 2018-07-14 |
lang | Tracking issue: declarative macros 2.0 | Implementation in progress | Blocked on macro 2.0 hygiene RFC | 2018-07-14 |
lang | Trait aliases | Unimplemented | Blocked on implementation | 2018-07-14 |
lang | Tweaks to object safety (RFC 2027) | Unimplemented | Blocked on implementation | 2018-07-14 |
lang | Type ascription (tracking issue for RFC 803) | Implementation in progress | Blocked on decision to deprecate or redesign | 2018-07-14 |
lang | Unsized tuple coercion | Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | Untagged unions (RFC 1444) | Unimplemented | Blocked on unresolved questions. | 2018-07-14 |
lang | #[link_args] |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | #[repr(packed = "N")] (RFC 1399) |
Unimplemented | Blocked on unresolved questions | 2018-07-14 |
lang | #[thread_local] |
Implemented | Blocked on Unsoundness with generators | 2018-07-14 |
lang | :vis macro matcher |
Implemented | Blocked on crate becoming a keyword |
2018-07-14 |
lang | ? macro repetition |
Implemented | Blocked on decision around edition dependent behaviour | 2018-07-14 |
lang | ? operator and catch expressions (RFC 243, question_mark ) |
Implemented | Blocked on reservation of try operator. |
2018-07-14 |
lang | asm (inline assembly) |
Implemented | Blocked on unclear stability guarantees | 2018-07-14 |
lang | box_patterns |
Implemented | Blocked on box_syntax feature |
2018-07-14 |
lang | cfg_target_vendor |
Implemented | Blocked on decision for stabilisation | 2018-07-14 |
lang | custom_attribute & rustc_attrs |
Unimplemented | Blocked on decision for deprecation or stabilisation | 2018-07-14 |
lang | custom_derive |
Deprecated | Blocked on rocket for removal | 2018-07-14 |
lang | fundamental feature |
Unimplemented | Blocked on further dicussion | 2018-07-14 |
lang | illegal_floating_point_literal_pattern compatibility lint |
Implemented | Blocked on making the lint deny by default | 2018-07-14 |
lang | impl Trait (RFC 1522, RFC 1951, RFC 2071) |
Implementation in progress | Blocked elision, error messages, and abstract type |
2018-07-14 |
lang | invalid_type_param_default compatibility lint |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
lang | legacy_constructor_visibility compatibility lint |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
lang | link_llvm_intrinsics |
Implemented | Apparently permanently unstable | 2018-07-14 |
lang | literal fragment specifier (RFC 1576) |
Implemented | Waiting on 1.28.0 stable release | 2018-07-14 |
lang | log_syntax , trace_macros |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | main feature |
Implemented | Blocked on unclear direction | 2018-07-14 |
lang | no_core stabilization |
Implemented | Blocked on lang items | 2018-07-14 |
lang | on_unimplemented feature |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | plugin , plugin_registrar features |
Implemented | Blocked on macros 2.0 | 2018-07-14 |
lang | private_in_public compatibility lint. |
Implemented | Blocked on PR to make lint deny by default | 2018-07-14 |
lang | quote feature |
Implemented | Blocked on deprecation by macros 2.0 | 2018-07-14 |
lang | resolve_trait_on_defaulted_unit compatibility lint |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
lang | safe_extern_statics compatibility lint |
Implemented | Blocked on making the lint a hard error | 2018-07-14 |
lang | use $crate; compatibility warning |
Implemented | Blocked on making the lint deny by default | 2018-07-14 |
lang | {Range, RangeFrom, RangeTo}::contains |
Implemented | Blocked on unresolved questions | 2018-07-14 |
lang | const fn tracking issue (RFC 911) | Implemented | Blocked on unresolved design decisions | 2018-07-14 |
lang | constant prop not causing add’l errors (RFC #1229) | Unimplemented | Currently unclear on what is required next | 2018-07-14 |
lang | non-ASCII identifiers (feature “non_ascii_idents”) | Implemented | Blocked on allow non-ASCII RFC decision | 2018-07-14 |
lang | stmt_expr_attributes: Add attributes to expressions, etc. | Implemented | Blocked on stabilisation of attributes on expressions and blocks | 2018-07-14 |
lang | the linkage feature |
Implemented | Blocked on #18804 | 2018-07-14 |
lang | the start feature |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
lang | associated_type_defaults |
Unimplemented | Blocked on decision on deprecation or semantic change | 2018-07-14 |
libes | Specialization (RFC 1210) | Implemented | Blocked on restrictions of lifetime dispatch | 2018-07-14 |
libs | API convention for blocking-, timeout-, and/or deadline-related functions | Unimplemented | Blocked on FCP | 2018-07-14 |
libs | Add is_empty function to ExactSizeIterator |
Unimplemented | Blocked on unresolved design decisions | 2018-07-14 |
libs | Adding more atomic integer types | Implementation in progress | Blocked on atomic 128 bit integers. |
2018-07-14 |
libs | Allow a HashMap and BTreeMap entry to be replaced. |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | Cell::update | Implemented | Blocked on unresolved questions | 2018-07-14 |
libs | Custom allocators in standard collections | Implementation in progress | Blocked on #47043 and #50882 | 2018-07-14 |
libs | FixedSizeArray trait | Implemented | Blocked on const generics | 2018-07-14 |
libs | FnBox() | Unimplemented | Blocked on issues with the borrow checker | 2018-07-14 |
libs | IP constructors | Implementation in progress | Blocked on moving the implementation to use associated consts | 2018-07-14 |
libs | Integer methods for Wrapping | Implementation in progress | Some methods are still missing implementations. | 2018-07-14 |
libs | Ipv{4,6}Addr convenience methods | Implementation in progress | Blocked on #51832 | 2018-07-14 |
libs | Path/PathBuf normalization methods | Unimplemented | Blocked on implementation | 2018-07-14 |
libs | Pluggable panic implementations (RFC 1513) | Unimplemented | Blocked on unresolved design decisions | 2018-07-14 |
libs | RFC 2045: improving #[target_feature] |
Implemented | Blocked on documentation and stabilisation | 2018-07-14 |
libs | Reversing the bit pattern in an integer | Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | SIMD support | Implementation in progress | Blocked on implementation | 2018-07-14 |
libs | Tracking Issue: Duration::{as_nanos, as_micros, as_millis} | Implemented | Blocked on decision to stable | 2018-07-14 |
libs | TrustedLen (trusted_len ) |
Implemented | Blocked on specialisation | 2018-07-14 |
libs | TryFrom/TryInto traits | Implemented | Blocked on the ! /never type |
2018-07-14 |
libs | UnicodeVersion and UNICODE_VERSION | Implemented | Blocked on concerns on whether updating const values is a breaking change | 2018-07-14 |
libs | Vec::remove_item | Implemented | Blocked on unresolved concerns | 2018-07-14 |
libs | Vec::resize_default | Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | #[bench] and benchmarking support |
Implemented | Blocked on black_box RFC |
2018-07-14 |
libs | Box::into_raw_non_null |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | Read::initializer |
Implemented | Blocked on design decisions | 2018-07-14 |
libs | Result<Option> and Option<Result> Conversion |
Implemented | Blocked on unresolved questions | 2018-07-14 |
libs | ToOwned::clone_into |
Implemented | Blocked on concerns | 2018-07-14 |
libs | Vec::drain_filter and LinkedList::drain_filter |
Implemented | Blocked on design decisions | 2018-07-14 |
libs | exact_chunks,exact_chunks_mut |
Implemented | Blocked on unresolved questions | 2018-07-14 |
libs | ops::Try |
Implemented? | Unclear on what is required next | 2018-07-14 |
libs | ptr::offset_to |
Deprecated | Blocked on removal | 2018-07-14 |
libs | slice_concat_ext |
Implemented | Blocked on documentation and decision to stabilise | 2018-07-14 |
libs | std::io::{set_panic, set_print} |
Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | step_trait stabilization |
Implementation in progress | Blocked on replacement methods and TrustedLen |
2018-07-14 |
libs | sync::Once poisoning |
Implemented | Blocked on inactivity | 2018-07-14 |
libs | channel selection | Implemented | Blocked on decision to stabilise the select! macro |
2018-07-14 |
libs | crates that are compiler dependencies | Unimplemented | Blocked on unclear direction | 2018-07-14 |
libs | extra linked list methods | Implemented | Blocked on decision to stabilise | 2018-07-14 |
libs | location of facade crates | Implementation in progress | Blocked on RFC 2480 | 2018-07-14 |
libs | str escaping | Implemented | Blocked on stabilisation PR | 2018-07-14 |
libs | string patterns | Unimplemented | Blocked on RFC 2295 | 2018-07-14 |
libs | type_id | Implemented | Blocked on FCP confusion | 2018-07-14 |
libs | write_all_at/read_exact_at convenience methods | Implemented | Blocked on decision to stabilise | 2018-07-14 |