1+ Version 1.55.0 (2021-09-09)
2+ ============================
3+
4+ Language
5+ --------
6+ - [You can now write open "from" range patterns (`X..`), which will start at `X` and
7+ will end at the maximum value of the integer.][83918]
8+ - [You can now explicitly import the prelude of different editions
9+ through `std::prelude` (e.g. `use std::prelude::rust_2021::*;`).][86294]
10+
11+ Compiler
12+ --------
13+ - [Added tier 3\* support for `powerpc64le-unknown-freebsd`.][83572]
14+
15+ \* Refer to Rust's [platform support page][platform-support-doc] for more
16+ information on Rust's tiered platform support.
17+
18+ Libraries
19+ ---------
20+
21+ - [Updated std's float parsing to use the Eisel-Lemire algorithm.][86761]
22+ These improvements should in general provide faster string parsing of floats,
23+ no longer reject certain valid floating point values, and reduce
24+ the produced code size for non-stripped artifacts.
25+ - [`string::Drain` now implements `AsRef<str>` and `AsRef<[u8]>`.][86858]
26+
27+ Stabilised APIs
28+ ---------------
29+
30+ - [`Bound::cloned`]
31+ - [`Drain::as_str`]
32+ - [`IntoInnerError::into_error`]
33+ - [`IntoInnerError::into_parts`]
34+ - [`MaybeUninit::assume_init_mut`]
35+ - [`MaybeUninit::assume_init_ref`]
36+ - [`MaybeUninit::write`]
37+ - [`array::map`]
38+ - [`ops::ControlFlow`]
39+ - [`x86::_bittest`]
40+ - [`x86::_bittestandcomplement`]
41+ - [`x86::_bittestandreset`]
42+ - [`x86::_bittestandset`]
43+ - [`x86_64::_bittest64`]
44+ - [`x86_64::_bittestandcomplement64`]
45+ - [`x86_64::_bittestandreset64`]
46+ - [`x86_64::_bittestandset64`]
47+
48+ The following previously stable functions are now `const`.
49+
50+ - [`str::from_utf8_unchecked`]
51+ - [`mem::transmute`]
52+
53+
54+ Cargo
55+ -----
56+ - [Cargo will now deduplicate compiler diagnostics to the terminal when invoking
57+ rustc in parallel such as when using `cargo test`.][cargo/9675]
58+ - [The package definition in `cargo metadata` now includes the `"default_run"`
59+ field from the manifest.][cargo/9550]
60+ - [Added `cargo d` as an alias for `cargo doc`.][cargo/9680]
61+ - [Added `{lib}` as formatting option for `cargo tree` to print the `"lib_name"`
62+ of packages.][cargo/9663]
63+
64+ Rustdoc
65+ -------
66+ - [Added "Go to item on exact match" search option.][85876]
67+ - [The "Implementors" section on traits no longer shows redundant
68+ method definitions.][85970]
69+ - [Trait implementations are toggled open by default.][86260] This should make the
70+ implementations more searchable by tools like `CTRL+F` in your browser.
71+ - [Intra-doc links should now correctly resolve associated items (e.g. methods)
72+ through type aliases.][86334]
73+ - [Traits which are marked with `#[doc(hidden)]` will no longer appear in the
74+ "Trait Implementations" section.][86513]
75+
76+
77+ Compatibility Notes
78+ -------------------
79+ - [std functions that return an `io::Error` will no longer use the
80+ `ErrorKind::Other` variant.][85746] This is to better reflect that these
81+ kinds of errors could be categorised [into newer more specific `ErrorKind`
82+ variants][79965], and that they do not represent a user error.
83+ - [Using environment variable names with `process::Command` on Windows now
84+ behaves as expected.][85270] Previously using envionment variables with
85+ `Command` would cause them to be ASCII-uppercased.
86+ - [Rustdoc will now warn on using rustdoc lints that aren't prefixed
87+ with `rustdoc::`][86849]
88+
89+ [86849]: https://github.com/rust-lang/rust/pull/86849
90+ [86513]: https://github.com/rust-lang/rust/pull/86513
91+ [86334]: https://github.com/rust-lang/rust/pull/86334
92+ [86260]: https://github.com/rust-lang/rust/pull/86260
93+ [85970]: https://github.com/rust-lang/rust/pull/85970
94+ [85876]: https://github.com/rust-lang/rust/pull/85876
95+ [83572]: https://github.com/rust-lang/rust/pull/83572
96+ [86294]: https://github.com/rust-lang/rust/pull/86294
97+ [86858]: https://github.com/rust-lang/rust/pull/86858
98+ [86761]: https://github.com/rust-lang/rust/pull/86761
99+ [85769]: https://github.com/rust-lang/rust/pull/85769
100+ [85746]: https://github.com/rust-lang/rust/pull/85746
101+ [85305]: https://github.com/rust-lang/rust/pull/85305
102+ [85270]: https://github.com/rust-lang/rust/pull/85270
103+ [84111]: https://github.com/rust-lang/rust/pull/84111
104+ [83918]: https://github.com/rust-lang/rust/pull/83918
105+ [79965]: https://github.com/rust-lang/rust/pull/79965
106+ [87370]: https://github.com/rust-lang/rust/pull/87370
107+ [87298]: https://github.com/rust-lang/rust/pull/87298
108+ [cargo/9663]: https://github.com/rust-lang/cargo/pull/9663
109+ [cargo/9675]: https://github.com/rust-lang/cargo/pull/9675
110+ [cargo/9550]: https://github.com/rust-lang/cargo/pull/9550
111+ [cargo/9680]: https://github.com/rust-lang/cargo/pull/9680
112+ [cargo/9663]: https://github.com/rust-lang/cargo/pull/9663
113+ [`array::map`]: https://doc.rust-lang.org/stable/std/primitive.array.html#method.map
114+ [`Bound::cloned`]: https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.cloned
115+ [`Drain::as_str`]: https://doc.rust-lang.org/stable/std/string/struct.Drain.html#method.as_str
116+ [`IntoInnerError::into_error`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_error
117+ [`IntoInnerError::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_parts
118+ [`MaybeUninit::assume_init_mut`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_mut
119+ [`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref
120+ [`MaybeUninit::write`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write
121+ [`Seek::rewind`]: https://doc.rust-lang.org/stable/std/io/trait.Seek.html#method.rewind
122+ [`mem::transmute`]: https://doc.rust-lang.org/stable/std/mem/fn.transmute.html
123+ [`ops::ControlFlow`]: https://doc.rust-lang.org/stable/std/ops/enum.ControlFlow.html
124+ [`str::from_utf8_unchecked`]: https://doc.rust-lang.org/stable/std/str/fn.from_utf8_unchecked.html
125+ [`x86::_bittest`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittest.html
126+ [`x86::_bittestandcomplement`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandcomplement.html
127+ [`x86::_bittestandreset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandreset.html
128+ [`x86::_bittestandset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandset.html
129+ [`x86_64::_bittest64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittest64.html
130+ [`x86_64::_bittestandcomplement64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandcomplement64.html
131+ [`x86_64::_bittestandreset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandreset64.html
132+ [`x86_64::_bittestandset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandset64.html
133+
134+
1135Version 1.54.0 (2021-07-29)
2136============================
3137
4138Language
5139-----------------------
6140
7- - [You can now use macros for values in built-in attribute macros .][83366]
8- While a seemingly minor addition on its own, this enables a lot of
9- powerful functionality when combined correctly. Most notably you can
10- now include external documentation in your crate by writing the following.
141+ - [You can now use macros for values in some built-in attributes .][83366]
142+ This primarily allows you to call macros within the `#[doc]` attribute. For
143+ example, to include external documentation in your crate, you can now write
144+ the following:
11145 ```rust
12146 #![doc = include_str!("README.md")]
13147 ```
14- You can also use this to include auto-generated modules:
15- ```rust
16- #[path = concat!(env!("OUT_DIR"), "/generated.rs")]
17- mod generated;
18- ```
19148
20149- [You can now cast between unsized slice types (and types which contain
21150 unsized slices) in `const fn`.][85078]
@@ -37,6 +166,7 @@ Compiler
37166- [Improved debugger output for enums on Windows MSVC platforms.][85292]
38167- [Added tier 3\* support for `bpfel-unknown-none`
39168 and `bpfeb-unknown-none`.][79608]
169+ - [`-Zmutable-noalias=yes`][82834] is enabled by default when using LLVM 12 or above.
40170
41171\* Refer to Rust's [platform support page][platform-support-doc] for more
42172 information on Rust's tiered platform support.
@@ -106,6 +236,7 @@ Compatibility Notes
106236[83366]: https://github.com/rust-lang/rust/pull/83366
107237[83278]: https://github.com/rust-lang/rust/pull/83278
108238[85292]: https://github.com/rust-lang/rust/pull/85292
239+ [82834]: https://github.com/rust-lang/rust/pull/82834
109240[cargo/9520]: https://github.com/rust-lang/cargo/pull/9520
110241[cargo/9499]: https://github.com/rust-lang/cargo/pull/9499
111242[cargo/9488]: https://github.com/rust-lang/cargo/pull/9488
@@ -168,7 +299,7 @@ Libraries
168299- [`leading_zeros`, and `trailing_zeros` are now available on all
169300 `NonZero` integer types.][84082]
170301- [`{f32, f64}::from_str` now parse and print special values
171- (`NaN`, `-0`) according to IEEE RFC 754.][78618]
302+ (`NaN`, `-0`) according to IEEE 754.][78618]
172303- [You can now index into slices using `(Bound<usize>, Bound<usize>)`.][77704]
173304- [Add the `BITS` associated constant to all numeric types.][82565]
174305
0 commit comments