Skip to content

Commit 2de7f10

Browse files
Rollup merge of rust-lang#88893 - Mark-Simulacrum:relnotes, r=pietroalbini
Add 1.56.0 release notes Notable things: * Rustdoc section currently absent, for lack of things to call out that I could find. It seems like rust-lang#87451 is the only potential candidate, but that seems like more of a bugfix and doesn't seem to warrant inclusion to me. But we can add it if desired. As with the 1.55.0 release notes, my intent is to leave this open for approximately 1-2 weeks at the early part of the cycle, and then merge it in (after fixing any feedback). Further iteration can happen in subsequent issues (and PRs). [Rendered](https://github.com/Mark-Simulacrum/rust/blob/relnotes/RELEASES.md)
2 parents f06f9bb + a307dcc commit 2de7f10

File tree

1 file changed

+185
-0
lines changed

1 file changed

+185
-0
lines changed

RELEASES.md

+185
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,188 @@
1+
Rust 1.56.0 (2021-10-21)
2+
========================
3+
4+
Language
5+
--------
6+
7+
- [The 2021 Edition is now stable.][rust#88100]
8+
See [the edition guide][rust-2021-edition-guide] for more details.
9+
- [You can now specify explicit discriminant values on any Rust enum.][rust#86860]
10+
- [The pattern in `binding @ pattern` can now also introduce new bindings.][rust#85305]
11+
- [Union field access is permitted in `const fn`.][rust#85769]
12+
13+
[rust-2021-edition-guide]: https://doc.rust-lang.org/nightly/edition-guide/rust-2021/index.html
14+
15+
Compiler
16+
--------
17+
18+
- [Upgrade to LLVM 13.][rust#87570]
19+
- [Support memory, address, and thread sanitizers on aarch64-unknown-freebsd.][rust#88023]
20+
- [Allow specifying an deployment target version for all iOS targets][rust#87699]
21+
- [Warnings can be forced on with `--force-warn`.][rust#87472]
22+
This feature is primarily intended for usage by `cargo fix`, rather than end users.
23+
- [Promote `aarch64-apple-ios-sim` to Tier 2\*.][rust#87760]
24+
- [Add `powerpc-unknown-freebsd` at Tier 3\*.][rust#87370]
25+
26+
\* Refer to Rust's [platform support page][platform-support-doc] for more
27+
information on Rust's tiered platform support.
28+
29+
Libraries
30+
---------
31+
32+
- [Allow writing of incomplete UTF-8 sequences via stdout/stderr on Windows.][rust#83342]
33+
The Windows console still requires valid Unicode, but this change allows
34+
splitting a UTF-8 character across multiple write calls. This allows, for
35+
instance, programs that just read and write data buffers (e.g. copying a file
36+
to stdout) without regard for Unicode or character boundaries.
37+
- [Prefer `AtomicU{64,128}` over Mutex for Instant backsliding protection.][rust#83093]
38+
For this use case, atomics scale much better under contention.
39+
- [Implement `Extend<(A, B)>` for `(Extend<A>, Extend<B>)`][rust#85835]
40+
- [impl Default, Copy, Clone for std::io::Sink and std::io::Empty][rust#86744]
41+
- [`impl From<[(K, V); N]>` for all collections.][rust#84111]
42+
- [Remove `P: Unpin` bound on impl Future for Pin.][rust#81363]
43+
- [Treat invalid environment variable names as non-existent.][rust#86183]
44+
Previously, the environment functions would panic if given a variable name
45+
with an internal null character or equal sign (`=`). Now, these functions will
46+
just treat such names as non-existent variables, since the OS cannot represent
47+
the existence of a variable with such a name.
48+
49+
Stabilised APIs
50+
---------------
51+
52+
- [`std::os::unix::fs::chroot`]
53+
- [`Iterator::intersperse`]
54+
- [`Iterator::intersperse_with`]
55+
- [`UnsafeCell::raw_get`]
56+
- [`BufWriter::into_parts`]
57+
- [`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`]
58+
These APIs were previously stable in `std`, but are now also available in `core`.
59+
- [`Vec::shrink_to`]
60+
- [`String::shrink_to`]
61+
- [`OsString::shrink_to`]
62+
- [`PathBuf::shrink_to`]
63+
- [`BinaryHeap::shrink_to`]
64+
- [`VecDeque::shrink_to`]
65+
- [`HashMap::shrink_to`]
66+
- [`HashSet::shrink_to`]
67+
- [`task::ready!`]
68+
69+
These APIs are now usable in const contexts:
70+
71+
- [`std::mem::transmute`]
72+
- [`[T]::first`][`slice::first`]
73+
- [`[T]::split_first`][`slice::split_first`]
74+
- [`[T]::last`][`slice::last`]
75+
- [`[T]::split_last`][`slice::split_last`]
76+
77+
Cargo
78+
-----
79+
80+
- [Cargo supports specifying a minimum supported Rust version in Cargo.toml.][`rust-version`]
81+
This has no effect at present on dependency version selection.
82+
We encourage crates to specify their minimum supported Rust version, and we encourage CI systems
83+
that support Rust code to include a crate's specified minimum version in the text matrix for that
84+
crate by default.
85+
86+
Compatibility notes
87+
-------------------
88+
89+
- [Update to new argument parsing rules on Windows.][rust#87580]
90+
This adjusts Rust's standard library to match the behavior of the standard
91+
libraries for C/C++. The rules have changed slightly over time, and this PR
92+
brings us to the latest set of rules (changed in 2008).
93+
- [Disallow the aapcs calling convention on aarch64][rust#88399]
94+
This was already not supported by LLVM; this change surfaces this lack of
95+
support with a better error message.
96+
- [Make `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` warn by default][rust#87385]
97+
- [Warn when an escaped newline skips multiple lines.][rust#87671]
98+
- [Calls to `libc::getpid` / `std::process::id` from `Command::pre_exec`
99+
may return different values on glibc <= 2.24.][rust#81825]
100+
Rust now invokes the `clone3` system call directly, when available, to use new functionality
101+
available via that system call. Older versions of glibc cache the result of `getpid`, and only
102+
update that cache when calling glibc's clone/fork functions, so a direct system call bypasses
103+
that cache update. glibc 2.25 and newer no longer cache `getpid` for exactly this reason.
104+
105+
Internal changes
106+
----------------
107+
These changes provide no direct user facing benefits, but represent significant
108+
improvements to the internals and overall performance of rustc
109+
and related tools.
110+
111+
- [LLVM is compiled with PGO in published x86_64-unknown-linux-gnu artifacts.][rust#88069]
112+
This improves the performance of most Rust builds.
113+
- [Unify representation of macros in internal data structures.][rust#88019]
114+
This change fixes a host of bugs with the handling of macros by the compiler,
115+
as well as rustdoc.
116+
117+
[`std::os::unix::fs::chroot`]: https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chroot.html
118+
[`Iterator::intersperse`]: https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.intersperse
119+
[`Iterator::intersperse_with`]: https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.intersperse
120+
[`UnsafeCell::raw_get`]: https://doc.rust-lang.org/stable/std/cell/struct.UnsafeCell.html#method.raw_get
121+
[`BufWriter::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.BufWriter.html#method.into_parts
122+
[`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`]: https://github.com/rust-lang/rust/pull/84662
123+
[`Vec::shrink_to`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.shrink_to
124+
[`String::shrink_to`]: https://doc.rust-lang.org/stable/std/string/struct.String.html#method.shrink_to
125+
[`OsString::shrink_to`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.shrink_to
126+
[`PathBuf::shrink_to`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.shrink_to
127+
[`BinaryHeap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.shrink_to
128+
[`VecDeque::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.shrink_to
129+
[`HashMap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_map/struct.HashMap.html#method.shrink_to
130+
[`HashSet::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_set/struct.HashSet.html#method.shrink_to
131+
[`task::ready!`]: https://doc.rust-lang.org/stable/std/task/macro.ready.html
132+
[`std::mem::transmute`]: https://doc.rust-lang.org/stable/std/mem/fn.transmute.html
133+
[`slice::first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.first
134+
[`slice::split_first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_first
135+
[`slice::last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last
136+
[`slice::split_last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_last
137+
[`rust-version`]: https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-rust-version-field
138+
[rust#87671]: https://github.com/rust-lang/rust/pull/87671
139+
[rust#86183]: https://github.com/rust-lang/rust/pull/86183
140+
[rust#87385]: https://github.com/rust-lang/rust/pull/87385
141+
[rust#88100]: https://github.com/rust-lang/rust/pull/88100
142+
[rust#86860]: https://github.com/rust-lang/rust/pull/86860
143+
[rust#84039]: https://github.com/rust-lang/rust/pull/84039
144+
[rust#86492]: https://github.com/rust-lang/rust/pull/86492
145+
[rust#88363]: https://github.com/rust-lang/rust/pull/88363
146+
[rust#85305]: https://github.com/rust-lang/rust/pull/85305
147+
[rust#87832]: https://github.com/rust-lang/rust/pull/87832
148+
[rust#88069]: https://github.com/rust-lang/rust/pull/88069
149+
[rust#87472]: https://github.com/rust-lang/rust/pull/87472
150+
[rust#87699]: https://github.com/rust-lang/rust/pull/87699
151+
[rust#87570]: https://github.com/rust-lang/rust/pull/87570
152+
[rust#88023]: https://github.com/rust-lang/rust/pull/88023
153+
[rust#87760]: https://github.com/rust-lang/rust/pull/87760
154+
[rust#87370]: https://github.com/rust-lang/rust/pull/87370
155+
[rust#87580]: https://github.com/rust-lang/rust/pull/87580
156+
[rust#83342]: https://github.com/rust-lang/rust/pull/83342
157+
[rust#83093]: https://github.com/rust-lang/rust/pull/83093
158+
[rust#88177]: https://github.com/rust-lang/rust/pull/88177
159+
[rust#88548]: https://github.com/rust-lang/rust/pull/88548
160+
[rust#88551]: https://github.com/rust-lang/rust/pull/88551
161+
[rust#88299]: https://github.com/rust-lang/rust/pull/88299
162+
[rust#88220]: https://github.com/rust-lang/rust/pull/88220
163+
[rust#85835]: https://github.com/rust-lang/rust/pull/85835
164+
[rust#86879]: https://github.com/rust-lang/rust/pull/86879
165+
[rust#86744]: https://github.com/rust-lang/rust/pull/86744
166+
[rust#84662]: https://github.com/rust-lang/rust/pull/84662
167+
[rust#86593]: https://github.com/rust-lang/rust/pull/86593
168+
[rust#81050]: https://github.com/rust-lang/rust/pull/81050
169+
[rust#81363]: https://github.com/rust-lang/rust/pull/81363
170+
[rust#84111]: https://github.com/rust-lang/rust/pull/84111
171+
[rust#85769]: https://github.com/rust-lang/rust/pull/85769#issuecomment-854363720
172+
[rust#88490]: https://github.com/rust-lang/rust/pull/88490
173+
[rust#88269]: https://github.com/rust-lang/rust/pull/88269
174+
[rust#84176]: https://github.com/rust-lang/rust/pull/84176
175+
[rust#88399]: https://github.com/rust-lang/rust/pull/88399
176+
[rust#88227]: https://github.com/rust-lang/rust/pull/88227
177+
[rust#88200]: https://github.com/rust-lang/rust/pull/88200
178+
[rust#82776]: https://github.com/rust-lang/rust/pull/82776
179+
[rust#88077]: https://github.com/rust-lang/rust/pull/88077
180+
[rust#87728]: https://github.com/rust-lang/rust/pull/87728
181+
[rust#87050]: https://github.com/rust-lang/rust/pull/87050
182+
[rust#87619]: https://github.com/rust-lang/rust/pull/87619
183+
[rust#81825]: https://github.com/rust-lang/rust/pull/81825#issuecomment-808406918
184+
[rust#88019]: https://github.com/rust-lang/rust/pull/88019
185+
1186
Version 1.55.0 (2021-09-09)
2187
============================
3188

0 commit comments

Comments
 (0)