|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +title: State Of Rust |
| 4 | +--- |
| 5 | + |
| 6 | +This document is intended to document the current state of Rust's various |
| 7 | +unstable features, their current status and what's required next to |
| 8 | +be completed. |
| 9 | + |
| 10 | +| Team | Feature | Status | What's next | |
| 11 | +| ---- | ------- | ------ | ----------- | |
| 12 | +| T-compiler | [RFC amendment #1384][30450] | Implemented | Blocked on promotion to error | |
| 13 | +| T-compiler | [Specialization and lifetime dispatch][40582] | Unimplemented | Blocked on specialisation | |
| 14 | +| T-compiler | [The "ptx-kernel" ABI][38788] | Implemented | Blocked on decision to stabilise | |
| 15 | +| T-compiler | [The `#[wasm_custom_section]` attribute][51088] | Implemented | Blocked decision to change to a more general solution | |
| 16 | +| T-compiler | [The `#[wasm_import_module]` attribute][52090] | Implemented | Blocked on documentation and small design consideration | |
| 17 | +| T-compiler | [The `msp430-interrupt` calling convention/ABI][38487] | Implemented | Blocked on decision to stabilise | |
| 18 | +| T-compiler | [The `thiscall` calling convention][42202] | Implemented | Blocked on decision to stabilise | |
| 19 | +| T-compiler | [The `x86-interrupt` calling convention][40180] | Implemented | Blocked on LLVM bugs | |
| 20 | +| T-compiler | [Trait bounds not checked on specializable associated types][33017] | Unimplemented | Blocked on implementation | |
| 21 | +| T-compiler | [`#[may_dangle]`, a refined dropck escape hatch (RFC 1327)][34761] | Implemented | Blocked on decision to stabilise | |
| 22 | +| T-compiler | [`arbitrary_self_types`][44874] | Implemented | Blocked on RFC | |
| 23 | +| T-compiler | [`incoherent_fundamental_impls` compatibility lint][46205] | Implemented | Hard error PR blocked on second crater run | |
| 24 | +| T-compiler | [`legacy_directory_ownership` future-compatibility warnings][37872] | Implemented | Blocked on making the lint deny by default | |
| 25 | +| T-compiler | [`parenthesized_params_in_types_and_modules` future-compatibility warnings][42238] | Implemented | Blocked on making the lint a hard error | |
| 26 | +| T-compiler | [`safe_packed_borrows` compatibility lint][46043] | Implemented | Blocked on making the lint hard error | |
| 27 | +| T-compiler | [`underscore_literal_suffix` future-compatibility warnings][42326] | Implemented | Blocked on making the lint a hard error | |
| 28 | +| T-compiler | [`where_clauses_object_safety` future compatibility lint][51443] | Implemented | Blocked on making the lint deny by default | |
| 29 | +| T-compiler | [🔬 generic associated types (GAT)][44265] | Unimplemented | Blocked on implementation | |
| 30 | +| T-dev-tools + T-rustdoc | [`rustdoc --display-warnings`][41574] | Implemented | Blocked on decision to stabilise | |
| 31 | +| T-dev-tools | [Sanitizer support][39699] | Implemented | Blocked on decision to stabilise | |
| 32 | +| T-dev-tools | [Stabilise `-Zsave-analysis`][43606] | Unimplemented | Blocked on whether a new approach supersedes this | |
| 33 | +| T-dev-tools | [`#[link(kind)]` connecting libraries on Windows][37403] | Implemented | Blocked on name decision and stabilisation | |
| 34 | +| T-dev-tools | [`--print target-spec-json`][38338] | Implemented | Blocked on decision to stabilise | |
| 35 | +| T-dev-tools | [`-Z profile` ][42524] | Implemented | Blocked on decision to stabilise | |
| 36 | +| T-dev-tools | [libtest JSON output][49359] | Implemented | Blocked on decision to stabilise | |
| 37 | +| T-lang + T-libs | ["macro naming and modularisation" (RFC #1561)][35896] | Implementation in progress | Blocked on unresolved design decisions | |
| 38 | +| T-lang + T-libs | [RFC 1566: Procedural macros][38356] | Implementation in progress | Blocked on macros 1.2 stabilisation | |
| 39 | +| T-lang | ['Allow `Self` to appear in the where clause of trait impls'][38864] | Implemented | Blocked on [#35237] | |
| 40 | +| T-lang | [128-bit integer support (RFC 1504)][35118] | Implementation in progress | Blocked on enums with 128 discriminant | |
| 41 | +| T-lang | [Allocator traits and std::heap][32838] | Implementation in progress | Blocked on audit and design decisions | |
| 42 | +| T-lang | [Allow all literals in attributes (Tracking Issue for RFC #1559)][34981] | Implemented | Blocked on decision to stabilise | |
| 43 | +| T-lang | [Allowing overlapping implementations for marker trait.][29864] | Implemented | Blocked on documentation | |
| 44 | +| T-lang | [Exclusive range patterns][37854] | Implemented | Blocked on decision to stabilise | |
| 45 | +| T-lang | [Exhaustive integer patterns tracking issue][50907] | Implementation in progress | Blocked implementation being merged | |
| 46 | +| T-lang | [Naked fns (RFC #1201)][32408] | Implemented | Blocked on design feedback and the inline assembly feature. | |
| 47 | +| T-lang | [Option::xor][50512] | Implemented | Blocked on decision to stable | |
| 48 | +| T-lang | [Patterns in functions without body][35203] | Implemented | Blocked on making lint deny by default | |
| 49 | +| T-lang | [Promoting `!` to a type (RFC 1216)][35121] | Implementation in progress | Blocked on decision around coercion | |
| 50 | +| T-lang | [RFC 1872: `exhaustive_patterns`][51085] | Implemented | Blocked on the never type | |
| 51 | +| T-lang | [RFC 554: `pattern_parentheses` ][51087] | Implemented | Blocked on stabilisation PR | |
| 52 | +| T-lang | [The `#[used]` attribute][40289] | Implemented | Blocked on decision to stabilise | |
| 53 | +| T-lang | [The `lifetime` specifier for `macro_rules!`][34303] | Implemented | Waiting on 1.28.0 stable release | |
| 54 | +| T-lang | [Tracking issue for `fundamental` feature][29635] | Unimplemented | Blocked on further dicussion | |
| 55 | +| T-lang | [Tracking issue for `no_core` stabilization][29639] | Implemented | Blocked on lang items | |
| 56 | +| T-lang | [Tracking issue: declarative macros 2.0][39412] | Implementation in progress | Blocked on macro 2.0 hygiene RFC | |
| 57 | +| T-lang | [Trait aliases][41517] | Unimplemented | Blocked on implementation | |
| 58 | +| T-lang | [Tweaks to object safety (RFC 2027)][43561] | Unimplemented | Blocked on implementation | |
| 59 | +| T-lang | [Unsized tuple coercion][42877] | Implemented | Blocked on decision to stabilise | |
| 60 | +| T-lang | [Untagged unions (RFC 1444)][32836] | Unimplemented | Blocked on unresolved questions. | |
| 61 | +| T-lang | [`#[repr(packed = "N")]` (RFC 1399)][33158] | Unimplemented | Blocked on unresolved questions | |
| 62 | +| T-lang | [`:vis` macro matcher][41022] | Implemented | Blocked on `crate` becoming a keyword | |
| 63 | +| T-lang | [`?` macro repetition][48075] | Implemented | Blocked on decision around edition dependent behaviour | |
| 64 | +| T-lang | [`?` operator and `catch` expressions (RFC 243, `question_mark`)][31436] | Implemented | Blocked on reservation of `try` operator. | |
| 65 | +| T-lang | [`asm` (inline assembly)][29722] | Implemented | Blocked on unclear stability guarantees | |
| 66 | +| T-lang | [`box_patterns`][29641] | Implemented | Blocked on `box_syntax` feature | |
| 67 | +| T-lang | [`cfg_target_vendor`][29718] | Implemented | Blocked on decision for stabilisation | |
| 68 | +| T-lang | [`custom_attribute` & `rustc_attrs`][29642] | Unimplemented | Blocked on decision for deprecation or stabilisation | |
| 69 | +| T-lang | [`custom_derive`][29644] | Deprecated | Blocked on rocket for removal | |
| 70 | +| T-lang | [`illegal_floating_point_literal_pattern` compatibility lint][41620] | Implemented | Blocked on making the lint deny by default | |
| 71 | +| T-lang | [`impl Trait` (RFC 1522, RFC 1951, RFC 2071)][34511] | Implementation in progress | Blocked elision, error messages, and `abstract type` | |
| 72 | +| T-lang | [`invalid_type_param_default` compatibility lint][36887] | Implemented | Blocked on making the lint a hard error | |
| 73 | +| T-lang | [`legacy_constructor_visibility` compatibility lint][39207] | Implemented | Blocked on making the lint a hard error | |
| 74 | +| T-lang | [`literal` fragment specifier (RFC 1576)][35625] | Implemented | Waiting on 1.28.0 stable release | |
| 75 | +| T-lang | [`private_in_public` compatibility lint.][34537] | Implemented | Blocked on PR to make lint deny by default | |
| 76 | +| T-lang | [`resolve_trait_on_defaulted_unit` compatibility lint][39216] | Implemented | Blocked on making the lint a hard error | |
| 77 | +| T-lang | [`safe_extern_statics` compatibility lint][36247] | Implemented | Blocked on making the lint a hard error | |
| 78 | +| T-lang | [`use $crate;` compatibility warning][37390] | Implemented | Blocked on making the lint deny by default | |
| 79 | +| T-lang | [`{Range, RangeFrom, RangeTo}::contains`][32311] | Implemented | Blocked on [unresolved questions][range_questions] | |
| 80 | +| T-lang | | [`associated_type_defaults`][29661] | Unimplemented | Blocked on decision on deprecation or semantic change | |
| 81 | +| T-libes | [Specialization (RFC 1210)][31844] | Implemented | Blocked on restrictions of lifetime dispatch | |
| 82 | +| T-libs | [API convention for blocking-, timeout-, and/or deadline-related functions][46316] | Unimplemented | Blocked on FCP | |
| 83 | +| T-libs | [Add `is_empty` function to `ExactSizeIterator`][35428] | Unimplemented | Blocked on unresolved design decisions | |
| 84 | +| T-libs | [Adding more atomic integer types][32976] | Implementation in progress | Blocked on atomic `128` bit integers. | |
| 85 | +| T-libs | [Allow a `HashMap` and `BTreeMap` entry to be replaced.][44286] | Implemented | Blocked on decision to stabilise | |
| 86 | +| T-libs | [Cell::update][50186] | Implemented | Blocked on unresolved questions | |
| 87 | +| T-libs | [Custom allocators in standard collections][42774] | Implementation in progress | Blocked on [#47043] and [#50882] | |
| 88 | +| T-libs | [IP constructors][44582] | Implementation in progress | Blocked on moving the implementation to use associated consts | |
| 89 | +| T-libs | [Integer methods for Wrapping][32463] | Implementation in progress | Some methods are still missing implementations. | |
| 90 | +| T-libs | [Path/PathBuf normalization methods][47402] | Unimplemented | Blocked on implementation | |
| 91 | +| T-libs | [Pluggable panic implementations (RFC 1513)][32837] | Unimplemented | Blocked on unresolved design decisions | |
| 92 | +| T-libs | [RFC 2045: improving `#[target_feature]`][44839] | Implemented | Blocked on documentation and stabilisation | |
| 93 | +| T-libs | [Reversing the bit pattern in an integer][48763] | Implemented | Blocked on decision to stabilise | |
| 94 | +| T-libs | [Tracking Issue: Duration::{as_nanos, as_micros, as_millis}][50202] | Implemented | Blocked on decision to stable | |
| 95 | +| T-libs | [TrustedLen (`trusted_len`)][37572] | Implemented | Blocked on specialisation | |
| 96 | +| T-libs | [TryFrom/TryInto traits][33417] | Implemented | Blocked on the `!`/never type | |
| 97 | +| T-libs | [UnicodeVersion and UNICODE_VERSION][49726] | Implemented | Blocked on concerns on whether updating const values is a breaking change | |
| 98 | +| T-libs | [Vec::remove_item][40062] | Implemented | Blocked on unresolved concerns | |
| 99 | +| T-libs | [Vec::resize_default][41758] | Implemented | Blocked on decision to stabilise | |
| 100 | +| T-libs | [`Box::into_raw_non_null`][47336] | Implemented | Blocked on decision to stabilise | |
| 101 | +| T-libs | [`Read::initializer`][42788] | Implemented | Blocked on design decisions | |
| 102 | +| T-libs | [`Result<Option>` and `Option<Result>` Conversion][47338] | Implemented | Blocked on unresolved questions | |
| 103 | +| T-libs | [`ToOwned::clone_into`][41263] | Implemented | Blocked on concerns | |
| 104 | +| T-libs | [`Vec::drain_filter` and `LinkedList::drain_filter`][43244] | Implemented | Blocked on design decisions | |
| 105 | +| T-libs | [`exact_chunks,exact_chunks_mut`][47115] | Implemented | Blocked on unresolved questions | |
| 106 | +| T-libs | [`ops::Try`][42327] | Implemented? | Unclear on what is required next | |
| 107 | +| T-libs | [`ptr::offset_to`][41079] | Deprecated | Blocked on removal | |
| 108 | +| T-libs | [`std::io::{set_panic, set_print}`][31343] | Implemented | Blocked on decision to stabilise | |
| 109 | +| T-libs | [`step_trait` stabilization][42168] | Implementation in progress | Blocked on replacement methods and `TrustedLen` | |
| 110 | +| T-libs | [`sync::Once` poisoning][33577] | Implemented | Blocked on inactivity | |
| 111 | +| T-libs | [write_all_at/read_exact_at convenience methods ][51984] | Implemented | Blocked on decision to stabilise | |
| 112 | + |
| 113 | + |
| 114 | +[29639]: https://github.com/rust-lang/rust/issues/29639 |
| 115 | +[29635]: https://github.com/rust-lang/rust/issues/29635 |
| 116 | +[29641]: https://github.com/rust-lang/rust/issues/29641 |
| 117 | +[29642]: https://github.com/rust-lang/rust/issues/29642 |
| 118 | +[29644]: https://github.com/rust-lang/rust/issues/29644 |
| 119 | +[29661]: https://github.com/rust-lang/rust/issues/29661 |
| 120 | +[29718]: https://github.com/rust-lang/rust/issues/29718 |
| 121 | +[29722]: https://github.com/rust-lang/rust/issues/29722 |
| 122 | +[29864]: https://github.com/rust-lang/rust/issues/29864 |
| 123 | +[30450]: https://github.com/rust-lang/rust/issues/30450 |
| 124 | +[31343]: https://github.com/rust-lang/rust/issues/31343 |
| 125 | +[31436]: https://github.com/rust-lang/rust/issues/31436 |
| 126 | +[31844]: https://github.com/rust-lang/rust/issues/31844 |
| 127 | +[32311]: https://github.com/rust-lang/rust/issues/32311 |
| 128 | +[32408]: https://github.com/rust-lang/rust/issues/32408 |
| 129 | +[32463]: https://github.com/rust-lang/rust/issues/32463 |
| 130 | +[32836]: https://github.com/rust-lang/rust/issues/32836 |
| 131 | +[32837]: https://github.com/rust-lang/rust/issues/32837 |
| 132 | +[32838]: https://github.com/rust-lang/rust/issues/32838 |
| 133 | +[32976]: https://github.com/rust-lang/rust/issues/32976 |
| 134 | +[33017]: https://github.com/rust-lang/rust/issues/33017 |
| 135 | +[33158]: https://github.com/rust-lang/rust/issues/33158 |
| 136 | +[33417]: https://github.com/rust-lang/rust/issues/33417 |
| 137 | +[33577]: https://github.com/rust-lang/rust/issues/33577 |
| 138 | +[34303]: https://github.com/rust-lang/rust/issues/34303 |
| 139 | +[34511]: https://github.com/rust-lang/rust/issues/34511 |
| 140 | +[34537]: https://github.com/rust-lang/rust/issues/34537 |
| 141 | +[34761]: https://github.com/rust-lang/rust/issues/34761 |
| 142 | +[34981]: https://github.com/rust-lang/rust/issues/34981 |
| 143 | +[35118]: https://github.com/rust-lang/rust/issues/35118 |
| 144 | +[35121]: https://github.com/rust-lang/rust/issues/35121 |
| 145 | +[35203]: https://github.com/rust-lang/rust/issues/35203 |
| 146 | +[35428]: https://github.com/rust-lang/rust/issues/35428 |
| 147 | +[35625]: https://github.com/rust-lang/rust/issues/35625 |
| 148 | +[35896]: https://github.com/rust-lang/rust/issues/35896 |
| 149 | +[36247]: https://github.com/rust-lang/rust/issues/36247 |
| 150 | +[36887]: https://github.com/rust-lang/rust/issues/36887 |
| 151 | +[37390]: https://github.com/rust-lang/rust/issues/37390 |
| 152 | +[37403]: https://github.com/rust-lang/rust/issues/37403 |
| 153 | +[37572]: https://github.com/rust-lang/rust/issues/37572 |
| 154 | +[37854]: https://github.com/rust-lang/rust/issues/37854 |
| 155 | +[37872]: https://github.com/rust-lang/rust/issues/37872 |
| 156 | +[38338]: https://github.com/rust-lang/rust/issues/38338 |
| 157 | +[38356]: https://github.com/rust-lang/rust/issues/38356 |
| 158 | +[38487]: https://github.com/rust-lang/rust/issues/38487 |
| 159 | +[38788]: https://github.com/rust-lang/rust/issues/38788 |
| 160 | +[38864]: https://github.com/rust-lang/rust/issues/38864 |
| 161 | +[39207]: https://github.com/rust-lang/rust/issues/39207 |
| 162 | +[39216]: https://github.com/rust-lang/rust/issues/39216 |
| 163 | +[39412]: https://github.com/rust-lang/rust/issues/39412 |
| 164 | +[39699]: https://github.com/rust-lang/rust/issues/39699 |
| 165 | +[40062]: https://github.com/rust-lang/rust/issues/40062 |
| 166 | +[40180]: https://github.com/rust-lang/rust/issues/40180 |
| 167 | +[40289]: https://github.com/rust-lang/rust/issues/40289 |
| 168 | +[40582]: https://github.com/rust-lang/rust/issues/40582 |
| 169 | +[41022]: https://github.com/rust-lang/rust/issues/41022 |
| 170 | +[41079]: https://github.com/rust-lang/rust/issues/41079 |
| 171 | +[41263]: https://github.com/rust-lang/rust/issues/41263 |
| 172 | +[41517]: https://github.com/rust-lang/rust/issues/41517 |
| 173 | +[41574]: https://github.com/rust-lang/rust/issues/41574 |
| 174 | +[41620]: https://github.com/rust-lang/rust/issues/41620 |
| 175 | +[41758]: https://github.com/rust-lang/rust/issues/41758 |
| 176 | +[42168]: https://github.com/rust-lang/rust/issues/42168 |
| 177 | +[42202]: https://github.com/rust-lang/rust/issues/42202 |
| 178 | +[42238]: https://github.com/rust-lang/rust/issues/42238 |
| 179 | +[42326]: https://github.com/rust-lang/rust/issues/42326 |
| 180 | +[42327]: https://github.com/rust-lang/rust/issues/42327 |
| 181 | +[42524]: https://github.com/rust-lang/rust/issues/42524 |
| 182 | +[42774]: https://github.com/rust-lang/rust/issues/42774 |
| 183 | +[42788]: https://github.com/rust-lang/rust/issues/42788 |
| 184 | +[42877]: https://github.com/rust-lang/rust/issues/42877 |
| 185 | +[43244]: https://github.com/rust-lang/rust/issues/43244 |
| 186 | +[43561]: https://github.com/rust-lang/rust/issues/43561 |
| 187 | +[43606]: https://github.com/rust-lang/rust/issues/43606 |
| 188 | +[44265]: https://github.com/rust-lang/rust/issues/44265 |
| 189 | +[44286]: https://github.com/rust-lang/rust/issues/44286 |
| 190 | +[44582]: https://github.com/rust-lang/rust/issues/44582 |
| 191 | +[44839]: https://github.com/rust-lang/rust/issues/44839 |
| 192 | +[44874]: https://github.com/rust-lang/rust/issues/44874 |
| 193 | +[46043]: https://github.com/rust-lang/rust/issues/46043 |
| 194 | +[46205]: https://github.com/rust-lang/rust/issues/46205 |
| 195 | +[46316]: https://github.com/rust-lang/rust/issues/46316 |
| 196 | +[47115]: https://github.com/rust-lang/rust/issues/47115 |
| 197 | +[47336]: https://github.com/rust-lang/rust/issues/47336 |
| 198 | +[47338]: https://github.com/rust-lang/rust/issues/47338 |
| 199 | +[47402]: https://github.com/rust-lang/rust/issues/47402 |
| 200 | +[48075]: https://github.com/rust-lang/rust/issues/48075 |
| 201 | +[48763]: https://github.com/rust-lang/rust/issues/48763 |
| 202 | +[49359]: https://github.com/rust-lang/rust/issues/49359 |
| 203 | +[49726]: https://github.com/rust-lang/rust/issues/49726 |
| 204 | +[50186]: https://github.com/rust-lang/rust/issues/50186 |
| 205 | +[50202]: https://github.com/rust-lang/rust/issues/50202 |
| 206 | +[50512]: https://github.com/rust-lang/rust/issues/50512 |
| 207 | +[50907]: https://github.com/rust-lang/rust/issues/50907 |
| 208 | +[51085]: https://github.com/rust-lang/rust/issues/51085 |
| 209 | +[51087]: https://github.com/rust-lang/rust/issues/51087 |
| 210 | +[51088]: https://github.com/rust-lang/rust/issues/51088 |
| 211 | +[51443]: https://github.com/rust-lang/rust/issues/51443 |
| 212 | +[51984]: https://github.com/rust-lang/rust/issues/51984 |
| 213 | +[52090]: https://github.com/rust-lang/rust/issues/52090 |
| 214 | +[range_questions]: https://github.com/rust-lang/rust/issues/32311#issuecomment-312388435 |
| 215 | +[#35237]: https://github.com/rust-lang/rust/issues/35237 |
| 216 | +[#47043]: https://github.com/rust-lang/rust/issues/47043 |
| 217 | +[#50882]: https://github.com/rust-lang/rust/issues/50882 |
| 218 | + |
| 219 | + |
0 commit comments