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.

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