Rust 1.21.0
Released on October 12, 2017
What's Changed
- [You can now use static references for literals.][43838]
- [Relaxed path syntax. Optional
::before<is now allowed in all contexts.][43540]
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
- [Generate builtin impls for
Clonefor all arrays and tuples that - [
Stdin,Stdout, andStderrnow implementAsRawFd.][43459] - [
RcandArcnow implementFrom<&[T]> where T: Clone,From,
- [You can now call
cargo installwith multiple package names][cargo/4216] - [Cargo commands inside a virtual workspace will now implicitly
- [Added a
[patch]section toCargo.tomlto handle - [
include&excludefields inCargo.tomlnow accept gitignore - [Added the
--all-targetsoption][cargo/4400] - [Using required dependencies as a feature is now deprecated and emits
- [Changes in method matching against higher-ranked types][43880] This may cause
- [rustc's JSON error output's byte position start at top of file.][42973]
- [
unused_resultslint no longer ignores booleans][43728]
- [Cargo docs are moving][43916]
- [The rustdoc book is now available][43863]
- [Added a preview of RLS has been made available through rustup][44204]
- [
std::osdocumentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
Full Changelog
Language
--------
- [You can now use static references for literals.][43838]
Example:
fn main() {
let x: &'static u32 = &0;
}
- [Relaxed path syntax. Optional :: before < is now allowed in all contexts.][43540]
Example:
my_macro!(Vec::new); // Always worked
my_macro!(Vec::::new); // Now works
Compiler
--------
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
This should reduce peak memory usage.
Libraries
---------
- [Generate builtin impls for Clone for all arrays and tuples that
are T: Clone][43690]
- [Stdin, Stdout, and Stderr now implement AsRawFd.][43459]
- [Rc and Arc now implement From<&[T]> where T: Clone, From,
From, From> where T: ?Sized , and From> .][42565]
Stabilized APIs
---------------
[std::mem::discriminant]
Cargo
-----
- [You can now call cargo install with multiple package names][cargo/4216]
- [Cargo commands inside a virtual workspace will now implicitly
pass --all][cargo/4335]
- [Added a [patch] section to Cargo.toml to handle
prepublication dependencies][cargo/4123] [RFC 1969]
- [include & exclude fields in Cargo.toml now accept gitignore
like patterns][cargo/4270]
- [Added the --all-targets option][cargo/4400]
- [Using required dependencies as a feature is now deprecated and emits
a warning][cargo/4364]
Misc
----
- [Cargo docs are moving][43916]
- [The rustdoc book is now available][43863]
- [Added a preview of RLS has been made available through rustup][44204]
Install with rustup component add rls-preview
- [std::os documentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
Previously only showed std::os::unix.
Compatibility Notes
-------------------
- [Changes in method matching against higher-ranked types][43880] This may cause
breakage in subtyping corner cases. [A more in-depth explanation is available.][info/43880]
- [rustc's JSON error output's byte position start at top of file.][42973]
Was previously relative to the rustc's internal CodeMap struct which
required the unstable library libsyntax to correctly use.
- [unused_results lint no longer ignores booleans][43728]
[42565]: https://github.com/rust-lang/rust/pull/42565
[42973]: https://github.com/rust-lang/rust/pull/42973
[43348]: https://github.com/rust-lang/rust/pull/43348
[43459]: https://github.com/rust-lang/rust/pull/43459
[43506]: https://github.com/rust-lang/rust/pull/43506
[43540]: https://github.com/rust-lang/rust/pull/43540
[43690]: https://github.com/rust-lang/rust/pull/43690
[43728]: https://github.com/rust-lang/rust/pull/43728
[43838]: https://github.com/rust-lang/rust/pull/43838
[43863]: https://github.com/rust-lang/rust/pull/43863
[43880]: https://github.com/rust-lang/rust/pull/43880
[43911]: https://github.com/rust-lang/rust/pull/43911
[43916]: https://github.com/rust-lang/rust/pull/43916
[43917]: https://github.com/rust-lang/rust/pull/43917
[44204]: https://github.com/rust-lang/rust/pull/44204
[cargo/4123]: https://github.com/rust-lang/cargo/pull/4123
[cargo/4216]: https://github.com/rust-lang/cargo/pull/4216
[cargo/4270]: https://github.com/rust-lang/cargo/pull/4270
[cargo/4335]: https://github.com/rust-lang/cargo/pull/4335
[cargo/4364]: https://github.com/rust-lang/cargo/pull/4364
[cargo/4400]: https://github.com/rust-lang/cargo/pull/4400
[RFC 1969]: https://github.com/rust-lang/rfcs/pull/1969
[info/43880]: https://github.com/rust-lang/rust/issues/44224#issuecomment-330058902
[std::mem::discriminant]: https://doc.rust-lang.org/std/mem/fn.discriminant.html