Skip to content

Commit 729d3f0

Browse files
committed
Auto merge of #57471 - Aaronepower:master, r=Aaronepower
Updated RELEASES.md for 1.32.0 [Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md) r? @Mark-Simulacrum cc @rust-lang/release
2 parents c2d381d + 890a8a4 commit 729d3f0

File tree

1 file changed

+274
-0
lines changed

1 file changed

+274
-0
lines changed

RELEASES.md

+274
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,277 @@
1+
Version 1.32.0 (2019-01-17)
2+
==========================
3+
4+
Language
5+
--------
6+
#### 2018 edition
7+
- [You can now use the `?` operator in macro definitions.][56245] The `?`
8+
operator allows you to specify zero or one repetitions similar to the `*` and
9+
`+` operators.
10+
- [Module paths with no leading keyword like `super`, `self`, or `crate`, will
11+
now always resolve to the item (`enum`, `struct`, etc.) available in the
12+
module if present, before resolving to a external crate or an item the prelude.][56759]
13+
E.g.
14+
```rust
15+
enum Color { Red, Green, Blue }
16+
17+
use Color::*;
18+
```
19+
20+
#### All editions
21+
- [You can now match against `PhantomData<T>` types.][55837]
22+
- [You can now match against literals in macros with the `literal`
23+
specifier.][56072] This will match against a literal of any type.
24+
E.g. `1`, `'A'`, `"Hello World"`
25+
- [Self can now be used as a constructor and pattern for unit and tuple structs.][56365] E.g.
26+
```rust
27+
struct Point(i32, i32);
28+
29+
impl Point {
30+
pub fn new(x: i32, y: i32) -> Self {
31+
Self(x, y)
32+
}
33+
34+
pub fn is_origin(&self) -> bool {
35+
match self {
36+
Self(0, 0) => true,
37+
_ => false,
38+
}
39+
}
40+
}
41+
```
42+
- [Self can also now be used in type definitions.][56366] E.g.
43+
```rust
44+
enum List<T>
45+
where
46+
Self: PartialOrd<Self> // can write `Self` instead of `List<T>`
47+
{
48+
Nil,
49+
Cons(T, Box<Self>) // likewise here
50+
}
51+
```
52+
- [You can now mark traits with `#[must_use]`.][55663] This provides a warning if
53+
a `impl Trait` or `dyn Trait` is returned and unused in the program.
54+
55+
Compiler
56+
--------
57+
- [The default allocator has changed from jemalloc to the default allocator on
58+
your system.][55238] The compiler itself on Linux & macOS will still use
59+
jemalloc, but programs compiled with it will use the system allocator.
60+
- [Added the `aarch64-pc-windows-msvc` target.][55702]
61+
62+
Libraries
63+
---------
64+
- [`PathBuf` now implements `FromStr`.][55148]
65+
- [`Box<[T]>` now implements `FromIterator<T>`.][55843]
66+
- [The `dbg!` macro has been stabilized.][56395] This macro enables you to
67+
easily debug expressions in your rust program. E.g.
68+
```rust
69+
let a = 2;
70+
let b = dbg!(a * 2) + 1;
71+
// ^-- prints: [src/main.rs:4] a * 2 = 4
72+
assert_eq!(b, 5);
73+
```
74+
75+
The following APIs are now `const` functions and can be used in a
76+
`const` context.
77+
78+
- [`Cell::as_ptr`]
79+
- [`UnsafeCell::get`]
80+
- [`char::is_ascii`]
81+
- [`iter::empty`]
82+
- [`ManuallyDrop::new`]
83+
- [`ManuallyDrop::into_inner`]
84+
- [`RangeInclusive::start`]
85+
- [`RangeInclusive::end`]
86+
- [`NonNull::as_ptr`]
87+
- [`slice::as_ptr`]
88+
- [`str::as_ptr`]
89+
- [`Duration::as_secs`]
90+
- [`Duration::subsec_millis`]
91+
- [`Duration::subsec_micros`]
92+
- [`Duration::subsec_nanos`]
93+
- [`CStr::as_ptr`]
94+
- [`Ipv4Addr::is_unspecified`]
95+
- [`Ipv6Addr::new`]
96+
- [`Ipv6Addr::octets`]
97+
98+
Stabilized APIs
99+
---------------
100+
- [`i8::to_be_bytes`]
101+
- [`i8::to_le_bytes`]
102+
- [`i8::to_ne_bytes`]
103+
- [`i8::from_be_bytes`]
104+
- [`i8::from_le_bytes`]
105+
- [`i8::from_ne_bytes`]
106+
- [`i16::to_be_bytes`]
107+
- [`i16::to_le_bytes`]
108+
- [`i16::to_ne_bytes`]
109+
- [`i16::from_be_bytes`]
110+
- [`i16::from_le_bytes`]
111+
- [`i16::from_ne_bytes`]
112+
- [`i32::to_be_bytes`]
113+
- [`i32::to_le_bytes`]
114+
- [`i32::to_ne_bytes`]
115+
- [`i32::from_be_bytes`]
116+
- [`i32::from_le_bytes`]
117+
- [`i32::from_ne_bytes`]
118+
- [`i64::to_be_bytes`]
119+
- [`i64::to_le_bytes`]
120+
- [`i64::to_ne_bytes`]
121+
- [`i64::from_be_bytes`]
122+
- [`i64::from_le_bytes`]
123+
- [`i64::from_ne_bytes`]
124+
- [`isize::to_be_bytes`]
125+
- [`isize::to_le_bytes`]
126+
- [`isize::to_ne_bytes`]
127+
- [`isize::from_be_bytes`]
128+
- [`isize::from_le_bytes`]
129+
- [`isize::from_ne_bytes`]
130+
- [`u8::to_be_bytes`]
131+
- [`u8::to_le_bytes`]
132+
- [`u8::to_ne_bytes`]
133+
- [`u8::from_be_bytes`]
134+
- [`u8::from_le_bytes`]
135+
- [`u8::from_ne_bytes`]
136+
- [`u16::to_be_bytes`]
137+
- [`u16::to_le_bytes`]
138+
- [`u16::to_ne_bytes`]
139+
- [`u16::from_be_bytes`]
140+
- [`u16::from_le_bytes`]
141+
- [`u16::from_ne_bytes`]
142+
- [`u32::to_be_bytes`]
143+
- [`u32::to_le_bytes`]
144+
- [`u32::to_ne_bytes`]
145+
- [`u32::from_be_bytes`]
146+
- [`u32::from_le_bytes`]
147+
- [`u32::from_ne_bytes`]
148+
- [`u64::to_be_bytes`]
149+
- [`u64::to_le_bytes`]
150+
- [`u64::to_ne_bytes`]
151+
- [`u64::from_be_bytes`]
152+
- [`u64::from_le_bytes`]
153+
- [`u64::from_ne_bytes`]
154+
- [`usize::to_be_bytes`]
155+
- [`usize::to_le_bytes`]
156+
- [`usize::to_ne_bytes`]
157+
- [`usize::from_be_bytes`]
158+
- [`usize::from_le_bytes`]
159+
- [`usize::from_ne_bytes`]
160+
161+
Cargo
162+
-----
163+
- [You can now run `cargo c` as an alias for `cargo check`.][cargo/6218]
164+
- [Usernames are now allowed in alt registry URLs.][cargo/6242]
165+
166+
Misc
167+
----
168+
- [`libproc_macro` has been added to the `rust-src` distribution.][55280]
169+
170+
Compatibility Notes
171+
-------------------
172+
- [The argument types for AVX's
173+
`_mm256_stream_si256`, `_mm256_stream_pd`, `_mm256_stream_ps`][55610] have
174+
been changed from `*const` to `*mut` as the previous implementation
175+
was unsound.
176+
177+
178+
[55148]: https://github.com/rust-lang/rust/pull/55148/
179+
[55238]: https://github.com/rust-lang/rust/pull/55238/
180+
[55280]: https://github.com/rust-lang/rust/pull/55280/
181+
[55610]: https://github.com/rust-lang/rust/pull/55610/
182+
[55663]: https://github.com/rust-lang/rust/pull/55663/
183+
[55702]: https://github.com/rust-lang/rust/pull/55702/
184+
[55837]: https://github.com/rust-lang/rust/pull/55837/
185+
[55843]: https://github.com/rust-lang/rust/pull/55843/
186+
[56072]: https://github.com/rust-lang/rust/pull/56072/
187+
[56245]: https://github.com/rust-lang/rust/pull/56245/
188+
[56365]: https://github.com/rust-lang/rust/pull/56365/
189+
[56366]: https://github.com/rust-lang/rust/pull/56366/
190+
[56395]: https://github.com/rust-lang/rust/pull/56395/
191+
[56759]: https://github.com/rust-lang/rust/pull/56759/
192+
[cargo/6218]: https://github.com/rust-lang/cargo/pull/6218/
193+
[cargo/6242]: https://github.com/rust-lang/cargo/pull/6242/
194+
[`CStr::as_ptr`]: https://doc.rust-lang.org/std/ffi/struct.CStr.html#method.as_ptr
195+
[`Cell::as_ptr`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.as_ptr
196+
[`Duration::as_secs`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.as_secs
197+
[`Duration::subsec_micros`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_micros
198+
[`Duration::subsec_millis`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_millis
199+
[`Duration::subsec_nanos`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_nanos
200+
[`Ipv4Addr::is_unspecified`]: https://doc.rust-lang.org/std/net/struct.Ipv4Addr.html#method.is_unspecified
201+
[`Ipv6Addr::new`]: https://doc.rust-lang.org/std/net/struct.Ipv6Addr.html#method.new
202+
[`Ipv6Addr::octets`]: https://doc.rust-lang.org/std/net/struct.Ipv6Addr.html#method.octets
203+
[`ManuallyDrop::into_inner`]: https://doc.rust-lang.org/std/mem/struct.ManuallyDrop.html#method.into_inner
204+
[`ManuallyDrop::new`]: https://doc.rust-lang.org/std/mem/struct.ManuallyDrop.html#method.new
205+
[`NonNull::as_ptr`]: https://doc.rust-lang.org/std/ptr/struct.NonNull.html#method.as_ptr
206+
[`RangeInclusive::end`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html#method.end
207+
[`RangeInclusive::start`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html#method.start
208+
[`UnsafeCell::get`]: https://doc.rust-lang.org/std/cell/struct.UnsafeCell.html#method.get
209+
[`slice::as_ptr`]: https://doc.rust-lang.org/std/primitive.slice.html#method.as_ptr
210+
[`char::is_ascii`]: https://doc.rust-lang.org/std/primitive.char.html#method.is_ascii
211+
[`i16::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_be_bytes
212+
[`i16::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_le_bytes
213+
[`i16::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_ne_bytes
214+
[`i16::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.to_be_bytes
215+
[`i16::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.to_le_bytes
216+
[`i16::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.to_ne_bytes
217+
[`i32::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.from_be_bytes
218+
[`i32::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.from_le_bytes
219+
[`i32::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.from_ne_bytes
220+
[`i32::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.to_be_bytes
221+
[`i32::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.to_le_bytes
222+
[`i32::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.to_ne_bytes
223+
[`i64::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.from_be_bytes
224+
[`i64::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.from_le_bytes
225+
[`i64::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.from_ne_bytes
226+
[`i64::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.to_be_bytes
227+
[`i64::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.to_le_bytes
228+
[`i64::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.to_ne_bytes
229+
[`i8::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.from_be_bytes
230+
[`i8::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.from_le_bytes
231+
[`i8::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.from_ne_bytes
232+
[`i8::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.to_be_bytes
233+
[`i8::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.to_le_bytes
234+
[`i8::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.to_ne_bytes
235+
[`isize::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.from_be_bytes
236+
[`isize::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.from_le_bytes
237+
[`isize::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.from_ne_bytes
238+
[`isize::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.to_be_bytes
239+
[`isize::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.to_le_bytes
240+
[`isize::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.to_ne_bytes
241+
[`iter::empty`]: https://doc.rust-lang.org/std/iter/fn.empty.html
242+
[`str::as_ptr`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_ptr
243+
[`u16::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_be_bytes
244+
[`u16::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_le_bytes
245+
[`u16::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_ne_bytes
246+
[`u16::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.to_be_bytes
247+
[`u16::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.to_le_bytes
248+
[`u16::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.to_ne_bytes
249+
[`u32::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.from_be_bytes
250+
[`u32::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.from_le_bytes
251+
[`u32::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.from_ne_bytes
252+
[`u32::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.to_be_bytes
253+
[`u32::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.to_le_bytes
254+
[`u32::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.to_ne_bytes
255+
[`u64::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.from_be_bytes
256+
[`u64::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.from_le_bytes
257+
[`u64::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.from_ne_bytes
258+
[`u64::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.to_be_bytes
259+
[`u64::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.to_le_bytes
260+
[`u64::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.to_ne_bytes
261+
[`u8::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.from_be_bytes
262+
[`u8::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.from_le_bytes
263+
[`u8::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.from_ne_bytes
264+
[`u8::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_be_bytes
265+
[`u8::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_le_bytes
266+
[`u8::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ne_bytes
267+
[`usize::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.from_be_bytes
268+
[`usize::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.from_le_bytes
269+
[`usize::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.from_ne_bytes
270+
[`usize::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.to_be_bytes
271+
[`usize::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.to_le_bytes
272+
[`usize::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.to_ne_bytes
273+
274+
1275
Version 1.31.1 (2018-12-20)
2276
===========================
3277

0 commit comments

Comments
 (0)