1
+ Version 1.50.0 (2021-02-11)
2
+ ============================
3
+
4
+ Language
5
+ -----------------------
6
+ - [ You can now use ` const ` values for ` x ` in ` [x; N] ` array expressions.] [ 79270 ]
7
+ This has been technically possible since 1.38.0, as it was unintentionally stabilized.
8
+ - [ Assignments to ` ManuallyDrop<T> ` union fields are now considered safe.] [ 78068 ]
9
+
10
+ Compiler
11
+ -----------------------
12
+ - [ Added tier 3\* support for the ` armv5te-unknown-linux-uclibceabi ` target.] [ 78142 ]
13
+ - [ Added tier 3 support for the ` aarch64-apple-ios-macabi ` target.] [ 77484 ]
14
+ - [ The ` x86_64-unknown-freebsd ` is now built with the full toolset.] [ 79484 ]
15
+
16
+ \* Refer to Rust's [ platform support page] [ forge-platform-support ] for more
17
+ information on Rust's tiered platform support.
18
+
19
+ Libraries
20
+ -----------------------
21
+
22
+ - [ ` proc_macro::Punct ` now implements ` PartialEq<char> ` .] [ 78636 ]
23
+ - [ ` ops::{Index, IndexMut} ` are now implemented for fixed sized arrays of any length.] [ 74989 ]
24
+ - [ On Unix platforms, the ` std::fs::File ` type now has a "niche" of ` -1 ` .] [ 74699 ]
25
+ This value cannot be a valid file descriptor, and now means ` Option<File> ` takes
26
+ up the same amount of space as ` File ` .
27
+
28
+ Stabilized APIs
29
+ ---------------
30
+
31
+ - [ ` bool::then ` ]
32
+ - [ ` btree_map::Entry::or_insert_with_key ` ]
33
+ - [ ` f32::clamp ` ]
34
+ - [ ` f64::clamp ` ]
35
+ - [ ` hash_map::Entry::or_insert_with_key ` ]
36
+ - [ ` Ord::clamp ` ]
37
+ - [ ` RefCell::take ` ]
38
+ - [ ` slice::fill ` ]
39
+ - [ ` UnsafeCell::get_mut ` ]
40
+
41
+ The following previously stable methods are now ` const ` .
42
+
43
+ - [ ` IpAddr::is_ipv4 ` ]
44
+ - [ ` IpAddr::is_ipv6 ` ]
45
+ - [ ` Layout::size ` ]
46
+ - [ ` Layout::align ` ]
47
+ - [ ` Layout::from_size_align ` ]
48
+ - ` pow ` for all integer types.
49
+ - ` checked_pow ` for all integer types.
50
+ - ` saturating_pow ` for all integer types.
51
+ - ` wrapping_pow ` for all integer types.
52
+ - ` next_power_of_two ` for all unsigned integer types.
53
+ - ` checked_power_of_two ` for all unsigned integer types.
54
+
55
+ Cargo
56
+ -----------------------
57
+
58
+ - [ Added the ` [build.rustc-workspace-wrapper] ` option.] [ cargo/8976 ]
59
+ This option sets a wrapper to execute instead of ` rustc ` , for workspace members only.
60
+ - [ ` cargo:rerun-if-changed ` will now, if provided a directory, scan the entire
61
+ contents of that directory for changes.] [ cargo/8973 ]
62
+ - [ Added the ` --workspace ` flag to the ` cargo update ` command.] [ cargo/8725 ]
63
+
64
+ Misc
65
+ ----
66
+
67
+ - [ The search results tab and the help button are focusable with keyboard in rustdoc.] [ 79896 ]
68
+ - [ Running tests will now print the total time taken to execute.] [ 75752 ]
69
+
70
+ Compatibility Notes
71
+ -------------------
72
+
73
+ - [ The ` compare_and_swap ` method on atomics has been deprecated.] [ 79261 ] It's
74
+ recommended to use the ` compare_exchange ` and ` compare_exchange_weak ` methods instead.
75
+ - [ Changes in how ` TokenStream ` s are checked have fixed some cases where you could write
76
+ unhygenic ` macro_rules! ` macros.] [ 79472 ]
77
+ - [ ` #![test] ` as an inner attribute is now considered unstable like other inner macro
78
+ attributes, and reports an error by default through the ` soft_unstable ` lint.] [ 79003 ]
79
+ - [ Overriding a ` forbid ` lint at the same level that it was set is now a hard error.] [ 78864 ]
80
+ - [ Dropped support for all cloudabi targets.] [ 78439 ]
81
+ - [ You can no longer intercept ` panic! ` calls by supplying your own macro.] [ 78343 ] It's
82
+ recommended to use the ` #[panic_handler] ` attribute to provide your own implementation.
83
+ - [ Semi-colons after item statements (e.g. ` struct Foo {}; ` ) now produce a warning.] [ 78296 ]
84
+
85
+ [ 74989 ] : https://github.com/rust-lang/rust/pull/74989
86
+ [ 79261 ] : https://github.com/rust-lang/rust/pull/79261
87
+ [ 79896 ] : https://github.com/rust-lang/rust/pull/79896
88
+ [ 79484 ] : https://github.com/rust-lang/rust/pull/79484
89
+ [ 79472 ] : https://github.com/rust-lang/rust/pull/79472
90
+ [ 79270 ] : https://github.com/rust-lang/rust/pull/79270
91
+ [ 79003 ] : https://github.com/rust-lang/rust/pull/79003
92
+ [ 78864 ] : https://github.com/rust-lang/rust/pull/78864
93
+ [ 78636 ] : https://github.com/rust-lang/rust/pull/78636
94
+ [ 78439 ] : https://github.com/rust-lang/rust/pull/78439
95
+ [ 78343 ] : https://github.com/rust-lang/rust/pull/78343
96
+ [ 78296 ] : https://github.com/rust-lang/rust/pull/78296
97
+ [ 78068 ] : https://github.com/rust-lang/rust/pull/78068
98
+ [ 75752 ] : https://github.com/rust-lang/rust/pull/75752
99
+ [ 74699 ] : https://github.com/rust-lang/rust/pull/74699
100
+ [ 78142 ] : https://github.com/rust-lang/rust/pull/78142
101
+ [ 77484 ] : https://github.com/rust-lang/rust/pull/77484
102
+ [ cargo/8976 ] : https://github.com/rust-lang/cargo/pull/8976
103
+ [ cargo/8973 ] : https://github.com/rust-lang/cargo/pull/8973
104
+ [ cargo/8725 ] : https://github.com/rust-lang/cargo/pull/8725
105
+ [ `IpAddr::is_ipv4` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv4
106
+ [ `IpAddr::is_ipv6` ] : https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv6
107
+ [ `Layout::align` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align
108
+ [ `Layout::from_size_align` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.from_size_align
109
+ [ `Layout::size` ] : https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.size
110
+ [ `Ord::clamp` ] : https://doc.rust-lang.org/stable/std/cmp/trait.Ord.html#method.clamp
111
+ [ `RefCell::take` ] : https://doc.rust-lang.org/stable/std/cell/struct.RefCell.html#method.take
112
+ [ `UnsafeCell::get_mut` ] : https://doc.rust-lang.org/stable/std/cell/struct.UnsafeCell.html#method.get_mut
113
+ [ `bool::then` ] : https://doc.rust-lang.org/stable/std/primitive.bool.html#method.then
114
+ [ `btree_map::Entry::or_insert_with_key` ] : https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html#method.or_insert_with_key
115
+ [ `f32::clamp` ] : https://doc.rust-lang.org/stable/std/primitive.f32.html#method.clamp
116
+ [ `f64::clamp` ] : https://doc.rust-lang.org/stable/std/primitive.f64.html#method.clamp
117
+ [ `hash_map::Entry::or_insert_with_key` ] : https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.or_insert_with_key
118
+ [ `slice::fill` ] : https://doc.rust-lang.org/stable/std/primitive.slice.html#method.fill
119
+
120
+
121
+ Version 1.49.0 (2020-12-31)
122
+ ============================
123
+
124
+ Language
125
+ -----------------------
126
+
127
+ - [ Unions can now implement ` Drop ` , and you can now have a field in a union
128
+ with ` ManuallyDrop<T> ` .] [ 77547 ]
129
+ - [ You can now cast uninhabited enums to integers.] [ 76199 ]
130
+ - [ You can now bind by reference and by move in patterns.] [ 76119 ] This
131
+ allows you to selectively borrow individual components of a type. E.g.
132
+ ``` rust
133
+ #[derive(Debug )]
134
+ struct Person {
135
+ name : String ,
136
+ age : u8 ,
137
+ }
138
+
139
+ let person = Person {
140
+ name : String :: from (" Alice" ),
141
+ age : 20 ,
142
+ };
143
+
144
+ // `name` is moved out of person, but `age` is referenced.
145
+ let Person { name , ref age } = person ;
146
+ println! (" {} {}" , name , age );
147
+ ```
148
+
149
+ Compiler
150
+ -----------------------
151
+
152
+ - [ Added tier 1\* support for ` aarch64-unknown-linux-gnu ` .] [ 78228 ]
153
+ - [ Added tier 2 support for ` aarch64-apple-darwin ` .] [ 75991 ]
154
+ - [ Added tier 2 support for ` aarch64-pc-windows-msvc ` .] [ 75914 ]
155
+ - [ Added tier 3 support for ` mipsel-unknown-none ` .] [ 78676 ]
156
+ - [ Raised the minimum supported LLVM version to LLVM 9.] [ 78848 ]
157
+ - [ Output from threads spawned in tests is now captured.] [ 78227 ]
158
+ - [ Change os and vendor values to "none" and "unknown" for some targets] [ 78951 ]
159
+
160
+ \* Refer to Rust's [ platform support page] [ forge-platform-support ] for more
161
+ information on Rust's tiered platform support.
162
+
163
+ Libraries
164
+ -----------------------
165
+
166
+ - [ ` RangeInclusive ` now checks for exhaustion when calling ` contains ` and indexing.] [ 78109 ]
167
+ - [ ` ToString::to_string ` now no longer shrinks the internal buffer in the default implementation.] [ 77997 ]
168
+
169
+ Stabilized APIs
170
+ ---------------
171
+
172
+ - [ ` slice::select_nth_unstable ` ]
173
+ - [ ` slice::select_nth_unstable_by ` ]
174
+ - [ ` slice::select_nth_unstable_by_key ` ]
175
+
176
+ The following previously stable methods are now ` const ` .
177
+
178
+ - [ ` Poll::is_ready ` ]
179
+ - [ ` Poll::is_pending ` ]
180
+
181
+ Cargo
182
+ -----------------------
183
+ - [ Building a crate with ` cargo-package ` should now be independently reproducible.] [ cargo/8864 ]
184
+ - [ ` cargo-tree ` now marks proc-macro crates.] [ cargo/8765 ]
185
+ - [ Added ` CARGO_PRIMARY_PACKAGE ` build-time environment variable.] [ cargo/8758 ] This
186
+ variable will be set if the crate being built is one the user selected to build, either
187
+ with ` -p ` or through defaults.
188
+ - [ You can now use glob patterns when specifying packages & targets.] [ cargo/8752 ]
189
+
190
+
191
+ Compatibility Notes
192
+ -------------------
193
+
194
+ - [ Demoted ` i686-unknown-freebsd ` from host tier 2 to target tier 2 support.] [ 78746 ]
195
+ - [ Macros that end with a semi-colon are now treated as statements even if they expand to nothing.] [ 78376 ]
196
+ - [ Rustc will now check for the validity of some built-in attributes on enum variants.] [ 77015 ]
197
+ Previously such invalid or unused attributes could be ignored.
198
+ - Leading whitespace is stripped more uniformly in documentation comments, which may change behavior. You
199
+ read [ this post about the changes] [ rustdoc-ws-post ] for more details.
200
+ - [ Trait bounds are no longer inferred for associated types.] [ 79904 ]
201
+
202
+ Internal Only
203
+ -------------
204
+ These changes provide no direct user facing benefits, but represent significant
205
+ improvements to the internals and overall performance of rustc and
206
+ related tools.
207
+
208
+ - [ rustc's internal crates are now compiled using the ` initial-exec ` Thread
209
+ Local Storage model.] [ 78201 ]
210
+ - [ Calculate visibilities once in resolve.] [ 78077 ]
211
+ - [ Added ` system ` to the ` llvm-libunwind ` bootstrap config option.] [ 77703 ]
212
+ - [ Added ` --color ` for configuring terminal color support to bootstrap.] [ 79004 ]
213
+
214
+
215
+ [ 75991 ] : https://github.com/rust-lang/rust/pull/75991
216
+ [ 78951 ] : https://github.com/rust-lang/rust/pull/78951
217
+ [ 78848 ] : https://github.com/rust-lang/rust/pull/78848
218
+ [ 78746 ] : https://github.com/rust-lang/rust/pull/78746
219
+ [ 78376 ] : https://github.com/rust-lang/rust/pull/78376
220
+ [ 78228 ] : https://github.com/rust-lang/rust/pull/78228
221
+ [ 78227 ] : https://github.com/rust-lang/rust/pull/78227
222
+ [ 78201 ] : https://github.com/rust-lang/rust/pull/78201
223
+ [ 78109 ] : https://github.com/rust-lang/rust/pull/78109
224
+ [ 78077 ] : https://github.com/rust-lang/rust/pull/78077
225
+ [ 77997 ] : https://github.com/rust-lang/rust/pull/77997
226
+ [ 77703 ] : https://github.com/rust-lang/rust/pull/77703
227
+ [ 77547 ] : https://github.com/rust-lang/rust/pull/77547
228
+ [ 77015 ] : https://github.com/rust-lang/rust/pull/77015
229
+ [ 76199 ] : https://github.com/rust-lang/rust/pull/76199
230
+ [ 76119 ] : https://github.com/rust-lang/rust/pull/76119
231
+ [ 75914 ] : https://github.com/rust-lang/rust/pull/75914
232
+ [ 79004 ] : https://github.com/rust-lang/rust/pull/79004
233
+ [ 78676 ] : https://github.com/rust-lang/rust/pull/78676
234
+ [ 79904 ] : https://github.com/rust-lang/rust/issues/79904
235
+ [ cargo/8864 ] : https://github.com/rust-lang/cargo/pull/8864
236
+ [ cargo/8765 ] : https://github.com/rust-lang/cargo/pull/8765
237
+ [ cargo/8758 ] : https://github.com/rust-lang/cargo/pull/8758
238
+ [ cargo/8752 ] : https://github.com/rust-lang/cargo/pull/8752
239
+ [ `slice::select_nth_unstable` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable
240
+ [ `slice::select_nth_unstable_by` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by
241
+ [ `slice::select_nth_unstable_by_key` ] : https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by_key
242
+ [ `hint::spin_loop` ] : https://doc.rust-lang.org/stable/std/hint/fn.spin_loop.html
243
+ [ `Poll::is_ready` ] : https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_ready
244
+ [ `Poll::is_pending` ] : https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_pending
245
+ [ rustdoc-ws-post ] : https://blog.guillaume-gomez.fr/articles/2020-11-11+New+doc+comment+handling+in+rustdoc
246
+
1
247
Version 1.48.0 (2020-11-19)
2
248
==========================
3
249
@@ -10,7 +256,7 @@ Language
10
256
Compiler
11
257
--------
12
258
- [ Stabilised the ` -C link-self-contained=<yes|no> ` compiler flag.] [ 76158 ] This tells
13
- ` rustc ` whether to link its own C runtime and libraries or to rely on a external
259
+ ` rustc ` whether to link its own C runtime and libraries or to rely on a external
14
260
linker to find them. (Supported only on ` windows-gnu ` , ` linux-musl ` , and ` wasi ` platforms.)
15
261
- [ You can now use ` -C target-feature=+crt-static ` on ` linux-gnu ` targets.] [ 77386 ]
16
262
Note: If you're using cargo you must explicitly pass the ` --target ` flag.
@@ -82,7 +328,7 @@ Compatibility Notes
82
328
- [ Foreign exceptions are now caught by ` catch_unwind ` and will cause an abort.] [ 70212 ]
83
329
Note: This behaviour is not guaranteed and is still considered undefined behaviour,
84
330
see the [ ` catch_unwind ` ] documentation for further information.
85
-
331
+
86
332
87
333
88
334
Internal Only
@@ -102,7 +348,7 @@ related tools.
102
348
[ 76030 ] : https://github.com/rust-lang/rust/pull/76030/
103
349
[ 70212 ] : https://github.com/rust-lang/rust/pull/70212/
104
350
[ 27675 ] : https://github.com/rust-lang/rust/issues/27675/
105
- [ 54121] : https://github.com/rust-lang/rust/issues/54121/
351
+ [ 54121 ] : https://github.com/rust-lang/rust/issues/54121/
106
352
[ 71274 ] : https://github.com/rust-lang/rust/pull/71274/
107
353
[ 77386 ] : https://github.com/rust-lang/rust/pull/77386/
108
354
[ 77153 ] : https://github.com/rust-lang/rust/pull/77153/
0 commit comments