This post is a wiki. Anybody can edit it! Make your best guesses.
Hey there. I just finished some unstable feature triage. It seems like there’s a lot cooking. Lately I’ve been anxious about filling the feature pipeline, and making sure we have big-ticket things to crow about in release announcements, so I’ve projected forward a few releases the things that seem like they are in the works.
So here’s all the stuff on my radar right now, with wild guesses as to when they will arrive. Are there any other high-impact features in the works that seem on-target to land in the next 6 months or so?
Any counter-opinions about where these will land?
I hope that having these layed out will make it clearer what to prioritize, to recognize what needs to happen to get a feature on the trains before its beta branches.
1.23 - January 04 (2018), branches November 21
- ???
1.24 - February 15 (2018), branches January 02
- ???
Horizon
These are features actively being worked on, that have some sort of pressure to stabilize, or that are otherwise something to emphasize during releases.
- Incremental compilation
- Up-to-date reference
- Android host builds
- cargo 1.0
- AVR
- Macro
use
and reexport - ! as a type
- Inclusive ranges
- Sanitizers
- cfg target_feature
- specialization https://github.com/rust-lang/rust/issues/31844
- drop_types_in_const https://github.com/rust-lang/rust/issues/33156
- const_fn https://github.com/rust-lang/rust/issues/24111
- simd
- allocators https://github.com/rust-lang/rust/issues/32838
- rustfmt
- clippy
- i128
- wasm
- Attribute Proc Macros
- catch
- slice patterns
- try_trait
- non-lexical lifetimes
- impl Trait
- step_by
- deprecate derive(RustcEncodable)
Past milestones
1.22 - November 23, branches October 12
-
std::mem::discriminant
(RFC 1696) ```compile_fail
doc tests-
Underscore in Unicode escape (
'\u{1_23_45}'
) ?
-on-Option
1.21 - October 12, branches August 31
- Calling const_fn (not defining)
- nonstandard_style
- rustdoc CommonMark backend
- Rvalue static promotion
- RLS
- Compatibility notes:
- …
1.20 - August 31, branches July 20
- Unicode 10
- ManuallyDrop
- More inner methods on Take / Chain
- sort_unstable
- Safe float to int conversions
- Utf8Error::error_len
- CString, OsString, PathBuf methods
- Associated_consts
- struct field attributes
- Option Entry API
- Path prefix remapping
- Compatibility notes:
- …
1.19 - July 20, branches June 8
- Unused macro lint
- Gate unstable compiler flags
- cmp::Reverse
- ThreadId
- OsString::shrink_to_fit
- Command::envs
- Collection ranges
- Break with value
- MSVC 2017 compat
- Untagged unions
- Numeric field names
- Custom CRT linkage
- Prettier backtraces
- rustup xz compression
- coercing non-capturing closures to function pointers
- Compatibility notes:
1.18 - June 8, branches April 27
- struct layout optimization
- pub(restricted)
- Windows subsystem support
- overlapping_inherent_impls error
- New book
- Compatibility notes:
- …
1.17 - April 27, branches March 16
- Field init shorthand
- process::abort
- read_unaligned
- Rc::into_raw etc
- static recursion
- collections ranges
- transmute fn error
- “here are some functions which might fulfill your needs”
- breaking soundness fix for “Unsound projection when late-bound-region appears only in return type”
- Improved backtraces
- docs by default
- Compatibility notes:
- Android libc changed a C typedef on some tier-low arch
hr_lifetime_in_assoc_type
future-compatibility warnings- Rust broken with VS 2017
1.16 - March 16, branches Feb 2
cargo check
- Redox support
- Default static lifetime in statics
- Self and assoc types in struct expressions
- Self in impl headers
- crates.io improvements: 1 2
- SPARC
- Typo correction improvements
- Matching of uninhabited types is breaking subtly. https://github.com/rust-lang/rust/issues/40250 and others
1.15 - Feb 2
- Macros 1.1
- Empty tuple structs
- Name resolution cleanup
- Improved sorting algo
- rustbuild
- tokio 0.1 - we probably can’t talk about this in release announcement unless we rationalize a format for highlighting community projects