1
+ Version 1.51.0 (2021-03-25)
2
+ ============================
3
+
4
+ Language
5
+ --------
6
+ - [ You can now parameterize items such as functions, traits, and ` struct ` s by constant
7
+ values in addition to by types and lifetimes.] [ 79135 ] Also known as "const generics"
8
+ E.g. you can now write the following. Note: Only values of primitive integers,
9
+ ` bool ` , or ` char ` types are currently permitted.
10
+ ``` rust
11
+ struct GenericArray <T , const LENGTH : usize > {
12
+ inner : [T ; LENGTH ]
13
+ }
14
+
15
+ impl <T , const LENGTH : usize > GenericArray <T , LENGTH > {
16
+ const fn last (& self ) -> Option <& T > {
17
+ if LENGTH == 0 {
18
+ None
19
+ } else {
20
+ Some (& self . inner[LENGTH - 1 ])
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+
27
+ Compiler
28
+ --------
29
+
30
+ - [ Added the ` -Csplit-debuginfo ` codegen option for macOS platforms.] [ 79570 ]
31
+ This option controls whether debug information is split across multiple files
32
+ or packed into a single file. ** Note** This option is unstable on other platforms.
33
+ - [ Added tier 3\* support for ` aarch64_be-unknown-linux-gnu ` ,
34
+ ` aarch64-unknown-linux-gnu_ilp32 ` , and ` aarch64_be-unknown-linux-gnu_ilp32 ` targets.] [ 81455 ]
35
+ - [ Added tier 3 support for ` i386-unknown-linux-gnu ` and ` i486-unknown-linux-gnu ` targets.] [ 80662 ]
36
+ - [ The ` target-cpu=native ` option will now detect individual features of CPUs.] [ 80749 ]
37
+ - [ Rust now uses ` inline-asm ` for stack probes when used with LLVM 11.0.1+] [ 77885 ]
38
+
39
+ \* Refer to Rust's [ platform support page] [ forge-platform-support ] for more
40
+ information on Rust's tiered platform support.
41
+
42
+ Libraries
43
+ ---------
44
+
45
+ - [ ` Box::downcast ` is now also implemented for any ` dyn Any + Send + Sync ` object.] [ 80945 ]
46
+ - [ ` str ` now implements ` AsMut<str> ` .] [ 80279 ]
47
+ - [ ` u64 ` and ` u128 ` now implement ` From<char> ` .] [ 79502 ]
48
+ - [ ` Error ` is now implemented for ` &T ` where ` T ` implements ` Error ` .] [ 75180 ]
49
+ - [ ` Poll::{map_ok, map_err} ` are now implemented for ` Poll<Option<Result<T, E>>> ` .] [ 80968 ]
50
+ - [ ` unsigned_abs ` is now implemented for all signed integer types.] [ 80959 ]
51
+ - [ ` io::Empty ` now implements ` io::Seek ` .] [ 78044 ]
52
+ - [ ` rc::Weak<T> ` and ` sync::Weak<T> ` 's methods such as ` as_ptr ` are now implemented for
53
+ ` T: ?Sized ` types.] [ 80764 ]
54
+
55
+ Stabilized APIs
56
+ ---------------
57
+
58
+ - [ ` Arc::decrement_strong_count ` ]
59
+ - [ ` Arc::increment_strong_count ` ]
60
+ - [ ` Once::call_once_force ` ]
61
+ - [ ` Peekable::next_if_eq ` ]
62
+ - [ ` Peekable::next_if ` ]
63
+ - [ ` Seek::stream_position ` ]
64
+ - [ ` array::IntoIter ` ]
65
+ - [ ` panic::panic_any ` ]
66
+ - [ ` ptr::addr_of! ` ]
67
+ - [ ` ptr::addr_of_mut! ` ]
68
+ - [ ` slice::fill_with ` ]
69
+ - [ ` slice::split_inclusive_mut ` ]
70
+ - [ ` slice::split_inclusive ` ]
71
+ - [ ` slice::strip_prefix ` ]
72
+ - [ ` slice::strip_suffix ` ]
73
+ - [ ` str::split_inclusive ` ]
74
+ - [ ` sync::OnceState ` ]
75
+ - [ ` task::Wake ` ]
76
+
77
+ Cargo
78
+ -----
79
+ - [ Added the ` split-debuginfo ` profile option to control the -Csplit-debuginfo
80
+ codegen option.] [ cargo/9112 ]
81
+ - [ Added the ` resolver ` field to ` Cargo.toml ` to enable the new feature resolver
82
+ and CLI option behavior.] [ cargo/8997 ] Version 2 of the feature resolver will try
83
+ to avoid unifying features of dependencies where that unification could be unwanted.
84
+ Such as using the same dependency with a ` std ` feature in a build scripts and
85
+ proc-macros, while using the ` no-std ` feature in the final binary. See the
86
+ [ Cargo book documentation
] [ [email protected] ] for more information on the feature.
87
+
88
+ Rustdoc
89
+ -------
90
+
91
+ - [ Rustdoc will now include documentation for methods available from ` Deref ` traits.] [ 80653 ]
92
+ - [ You can now provide a ` --default-theme ` flag which sets the default theme to use for
93
+ documentation.] [ 79642 ]
94
+
95
+ Various improvements to intra-doc links:
96
+
97
+ - [ You can link to non-path primitives such as ` slice ` .] [ 80181 ]
98
+ - [ You can link to associated items.] [ 74489 ]
99
+ - [ You can now include generic parameters when linking to items, like ` Vec<T> ` .] [ 76934 ]
100
+
101
+ Misc
102
+ ----
103
+ - [ You can now pass ` --include-ignored ` to tests (e.g. with
104
+ ` cargo test -- --include-ignored ` ) to include testing tests marked ` #[ignore] ` .] [ 80053 ]
105
+
106
+ Compatibility Notes
107
+ -------------------
108
+
109
+ - [ WASI platforms no longer use the ` wasm-bindgen ` ABI, and instead use the wasm32 ABI.] [ 79998 ]
110
+ - [ ` rustc ` no longer promotes division, modulo and indexing operations to ` const ` that
111
+ could fail.] [ 80579 ]
112
+ - [ The minimum version of glibc for the following platforms has been bumped to version 2.31
113
+ for the distributed artifacts.] [ 81521 ]
114
+ - ` armv5te-unknown-linux-gnueabi `
115
+ - ` sparc64-unknown-linux-gnu `
116
+ - ` thumbv7neon-unknown-linux-gnueabihf `
117
+ - ` armv7-unknown-linux-gnueabi `
118
+ - ` x86_64-unknown-linux-gnux32 `
119
+
120
+ Internal Only
121
+ -------------
122
+
123
+ - [ Consistently avoid constructing optimized MIR when not doing codegen] [ 80718 ]
124
+
125
+ [ 79135 ] : https://github.com/rust-lang/rust/pull/79135
126
+ [ 74489 ] : https://github.com/rust-lang/rust/pull/74489
127
+ [ 76934 ] : https://github.com/rust-lang/rust/pull/76934
128
+ [ 79570 ] : https://github.com/rust-lang/rust/pull/79570
129
+ [ 80181 ] : https://github.com/rust-lang/rust/pull/80181
130
+ [ 79642 ] : https://github.com/rust-lang/rust/pull/79642
131
+ [ 80945 ] : https://github.com/rust-lang/rust/pull/80945
132
+ [ 80279 ] : https://github.com/rust-lang/rust/pull/80279
133
+ [ 80053 ] : https://github.com/rust-lang/rust/pull/80053
134
+ [ 79502 ] : https://github.com/rust-lang/rust/pull/79502
135
+ [ 75180 ] : https://github.com/rust-lang/rust/pull/75180
136
+ [ 79135 ] : https://github.com/rust-lang/rust/pull/79135
137
+ [ 81521 ] : https://github.com/rust-lang/rust/pull/81521
138
+ [ 80968 ] : https://github.com/rust-lang/rust/pull/80968
139
+ [ 80959 ] : https://github.com/rust-lang/rust/pull/80959
140
+ [ 80718 ] : https://github.com/rust-lang/rust/pull/80718
141
+ [ 80653 ] : https://github.com/rust-lang/rust/pull/80653
142
+ [ 80579 ] : https://github.com/rust-lang/rust/pull/80579
143
+ [ 79998 ] : https://github.com/rust-lang/rust/pull/79998
144
+ [ 78044 ] : https://github.com/rust-lang/rust/pull/78044
145
+ [ 81455 ] : https://github.com/rust-lang/rust/pull/81455
146
+ [ 80764 ] : https://github.com/rust-lang/rust/pull/80764
147
+ [ 80749 ] : https://github.com/rust-lang/rust/pull/80749
148
+ [ 80662 ] : https://github.com/rust-lang/rust/pull/80662
149
+ [ 77885 ] : https://github.com/rust-lang/rust/pull/77885
150
+ [ cargo/8997 ] : https://github.com/rust-lang/cargo/pull/8997
151
+ [ cargo/9112 ] : https://github.com/rust-lang/cargo/pull/9112
152
+ [ [email protected] ] :
https://doc.rust-lang.org/nightly/cargo/reference/features.html#feature-resolver-version-2
153
+ [ `Once::call_once_force` ] : https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.call_once_force
154
+ [ `sync::OnceState` ] : https://doc.rust-lang.org/stable/std/sync/struct.OnceState.html
155
+ [ `panic::panic_any` ] : https://doc.rust-lang.org/stable/std/panic/fn.panic_any.html
156
+ [ `slice::strip_prefix` ] : https://doc.rust-lang.org/stable/std/primitive.slice.html#method.strip_prefix
157
+ [ `slice::strip_suffix` ] : https://doc.rust-lang.org/stable/std/primitive.slice.html#method.strip_prefix
158
+ [ `Arc::increment_strong_count` ] : https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.increment_strong_count
159
+ [ `Arc::decrement_strong_count` ] : https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.decrement_strong_count
160
+ [ `slice::fill_with` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.fill_with
161
+ [ `ptr::addr_of!` ] : https://doc.rust-lang.org/nightly/std/ptr/macro.addr_of.html
162
+ [ `ptr::addr_of_mut!` ] : https://doc.rust-lang.org/nightly/std/ptr/macro.addr_of_mut.html
163
+ [ `array::IntoIter` ] : https://doc.rust-lang.org/nightly/std/array/struct.IntoIter.html
164
+ [ `slice::split_inclusive` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_inclusive
165
+ [ `slice::split_inclusive_mut` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_inclusive_mut
166
+ [ `str::split_inclusive` ] : https://doc.rust-lang.org/nightly/std/primitive.str.html#method.split_inclusive
167
+ [ `task::Wake` ] : https://doc.rust-lang.org/nightly/std/task/trait.Wake.html
168
+ [ `Seek::stream_position` ] : https://doc.rust-lang.org/nightly/std/io/trait.Seek.html#method.stream_position
169
+ [ `Peekable::next_if` ] : https://doc.rust-lang.org/nightly/std/iter/struct.Peekable.html#method.next_if
170
+ [ `Peekable::next_if_eq` ] : https://doc.rust-lang.org/nightly/std/iter/struct.Peekable.html#method.next_if_eq
171
+
1
172
Version 1.50.0 (2021-02-11)
2
173
============================
3
174
@@ -12,7 +183,6 @@ Compiler
12
183
- [ Added tier 3\* support for the ` armv5te-unknown-linux-uclibceabi ` target.] [ 78142 ]
13
184
- [ Added tier 3 support for the ` aarch64-apple-ios-macabi ` target.] [ 77484 ]
14
185
- [ The ` x86_64-unknown-freebsd ` is now built with the full toolset.] [ 79484 ]
15
- - [ Dropped support for all cloudabi targets.] [ 78439 ]
16
186
17
187
\* Refer to Rust's [ platform support page] [ forge-platform-support ] for more
18
188
information on Rust's tiered platform support.
@@ -43,23 +213,6 @@ The following previously stable methods are now `const`.
43
213
44
214
- [ ` IpAddr::is_ipv4 ` ]
45
215
- [ ` IpAddr::is_ipv6 ` ]
46
- - [ ` IpAddr::is_unspecified ` ]
47
- - [ ` IpAddr::is_loopback ` ]
48
- - [ ` IpAddr::is_multicast ` ]
49
- - [ ` Ipv4Addr::octets ` ]
50
- - [ ` Ipv4Addr::is_loopback ` ]
51
- - [ ` Ipv4Addr::is_private ` ]
52
- - [ ` Ipv4Addr::is_link_local ` ]
53
- - [ ` Ipv4Addr::is_multicast ` ]
54
- - [ ` Ipv4Addr::is_broadcast ` ]
55
- - [ ` Ipv4Addr::is_documentation ` ]
56
- - [ ` Ipv4Addr::to_ipv6_compatible ` ]
57
- - [ ` Ipv4Addr::to_ipv6_mapped ` ]
58
- - [ ` Ipv6Addr::segments ` ]
59
- - [ ` Ipv6Addr::is_unspecified ` ]
60
- - [ ` Ipv6Addr::is_loopback ` ]
61
- - [ ` Ipv6Addr::is_multicast ` ]
62
- - [ ` Ipv6Addr::to_ipv4 ` ]
63
216
- [ ` Layout::size ` ]
64
217
- [ ` Layout::align ` ]
65
218
- [ ` Layout::from_size_align ` ]
@@ -68,7 +221,7 @@ The following previously stable methods are now `const`.
68
221
- ` saturating_pow ` for all integer types.
69
222
- ` wrapping_pow ` for all integer types.
70
223
- ` next_power_of_two ` for all unsigned integer types.
71
- - ` checked_next_power_of_two ` for all unsigned integer types.
224
+ - ` checked_power_of_two ` for all unsigned integer types.
72
225
73
226
Cargo
74
227
-----------------------
@@ -95,6 +248,7 @@ Compatibility Notes
95
248
- [ ` #![test] ` as an inner attribute is now considered unstable like other inner macro
96
249
attributes, and reports an error by default through the ` soft_unstable ` lint.] [ 79003 ]
97
250
- [ Overriding a ` forbid ` lint at the same level that it was set is now a hard error.] [ 78864 ]
251
+ - [ Dropped support for all cloudabi targets.] [ 78439 ]
98
252
- [ You can no longer intercept ` panic! ` calls by supplying your own macro.] [ 78343 ] It's
99
253
recommended to use the ` #[panic_handler] ` attribute to provide your own implementation.
100
254
- [ Semi-colons after item statements (e.g. ` struct Foo {}; ` ) now produce a warning.] [ 78296 ]
@@ -121,23 +275,6 @@ Compatibility Notes
121
275
[ cargo/8725 ] : https://github.com/rust-lang/cargo/pull/8725
122
276
[ `IpAddr::is_ipv4` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv4
123
277
[ `IpAddr::is_ipv6` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv6
124
- [ `IpAddr::is_unspecified` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_unspecified
125
- [ `IpAddr::is_loopback` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_loopback
126
- [ `IpAddr::is_multicast` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_multicast
127
- [ `Ipv4Addr::octets` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.octets
128
- [ `Ipv4Addr::is_loopback` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_loopback
129
- [ `Ipv4Addr::is_private` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_private
130
- [ `Ipv4Addr::is_link_local` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_link_local
131
- [ `Ipv4Addr::is_multicast` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_multicast
132
- [ `Ipv4Addr::is_broadcast` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_broadcast
133
- [ `Ipv4Addr::is_documentation` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.is_documentation
134
- [ `Ipv4Addr::to_ipv6_compatible` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.to_ipv6_compatible
135
- [ `Ipv4Addr::to_ipv6_mapped` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.to_ipv6_mapped
136
- [ `Ipv6Addr::segments` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.segments
137
- [ `Ipv6Addr::is_unspecified` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.is_unspecified
138
- [ `Ipv6Addr::is_loopback` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.is_loopback
139
- [ `Ipv6Addr::is_multicast` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.is_multicast
140
- [ `Ipv6Addr::to_ipv4` ] : https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.to_ipv4
141
278
[ `Layout::align` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align
142
279
[ `Layout::from_size_align` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.from_size_align
143
280
[ `Layout::size` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.size
0 commit comments