Skip to content

Commit 6a987dd

Browse files
author
Aaron Power
committed
Added State Of Rust document
1 parent 5e76f10 commit 6a987dd

File tree

2 files changed

+220
-0
lines changed

2 files changed

+220
-0
lines changed

index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ PRs against [rust-lang-nursery/rust-forge].
3737
* [Beta backporting](beta-backporting.html). The mystery of the oft-misinterpreted `beta-nominated` / `beta-accepted` tags finally revealed.
3838
* [Bots, websites and infrastructure](infrastructure.html). A catalog of the IRC bots, websites and other infrastructure used by the project, what they do, and who maintains them (i.e. who to contact when they malfunction and go on a bot rampage).
3939
* [Homu/Bors Syntax](https://buildbot2.rust-lang.org/homu/)
40+
* [State Of Rust](state-of-rust.html). Links and information about the current status of unstable features.
4041

4142
### Meta-processes: managing the RFC repo, teams, etc
4243

state-of-rust.md

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
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

Comments
 (0)