From 9b588a6b69aae9b62291c3c11d423ba5b2145e74 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Thu, 23 Dec 2021 01:25:11 +0000 Subject: [PATCH 1/9] Add release notes for 1.58 --- RELEASES.md | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index 4b9b20f4cba60..a29059c01445c 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,169 @@ +Version 1.58.0 (2022-01-13) +========================== + +Language +-------- + +- [Format strings can now capture arguments simply by writing `{ident}` in the string.][90473] +- [`*const T` pointers can now be dereferenced in const contexts.][89551] +- [The rules for when a generic struct implements `Unsize` have been relaxed.][90417] + +Compiler +-------- + +- [Add LLVM CFI support to the Rust compiler][89652] +- [Stabilize -Z strip as -C strip][90058] +- [Add support for LLVM coverage mapping format versions 5 and 6][91207] +- [Emit LLVM optimization remarks when enabled with `-Cremark`][90833] +- [Update the minimum external LLVM to 12][90175] +- [Add `x86_64-unknown-none` at Tier 3*][89062] +- [Build musl dist artifacts with debuginfo enabled][90733] +- [Fix CVE-2021-42574][90462] +- [Don't abort compilation after giving a lint error][87337] +- [Error messages point at the source of trait bound obligations in more places][89580] +- [Link with default MACOSX_DEPLOYMENT_TARGET if not otherwise specified.][90499] + +\* Refer to Rust's [platform support page][platform-support-doc] for more + information on Rust's tiered platform support. + +Libraries +--------- + +- [Add #[must_use] to Rc::downgrade][89833] +- [Add #[must_use] to expensive computations][89835] +- [Add #[must_use] to mem/ptr functions][89839] +- [Add #[must_use] to remaining core functions][89897] +- [Add #[must_use] to remaining alloc functions][89899] +- [Add #[must_use] to len and is_empty][89786] +- [Add #[must_use] to thread::Builder][89789] +- [Add #[must_use] to alloc functions that would leak memory][90427] +- [Add #[must_use] to remaining std functions (A-N)][90430] +- [Add #[must_use] to remaining std functions (O-Z)][90431] +- [Windows: Resolve `process::Command` program without using the current directory][87704] +- [Paths are automatically canonicalized on Windows for operations that support it][89174] +- [Re-enable `copy[_nonoverlapping]()` debug-checks][90041] +- [Implement `RefUnwindSafe` for `Rc`][87467] +- [Make RSplit: Clone not require T: Clone][90117] +- [unix: Make `std::thread::available_concurrency` support process-limited number of CPUs][89310] +- [Implement `Termination` for `Result`][88601] + +Stabilized APIs +--------------- + +- [`Metadata::is_symlink`][89677] +- [`Path::is_symlink`][89677] +- [`{integer}::saturating_div`][88624] +- [`Option::unwrap_unchecked`][89951] +- [`NonZero::is_power_of_two`][91301] +- [`unix::process::ExitStatusExt::core_dumped`][88300] +- [`unix::process::ExitStatusExt::stopped_signal`][88300] +- [`unix::process::ExitStatusExt::continued`][88300] +- [`unix::process::ExitStatusExt::into_raw`][88300] + +These APIs are now usable in const contexts: + +- [Partially stabilize `duration_consts_2`][89542] +- [`Duration::new`][89542] +- [`Duration::checked_add`][89542] +- [`Duration::saturating_add`][89542] +- [`Duration::checked_sub`][89542] +- [`Duration::saturating_sub`][89542] +- [`Duration::checked_mul`][89542] +- [`Duration::saturating_mul`][89542] +- [`Duration::checked_div`][89542] +- [`Duration::as_secs_f64`][89542] +- [`Duration::as_secs_f32`][89542] +- [`Duration::from_secs_f64`][89542] +- [`Duration::from_secs_f32`][89542] +- [`Duration::mul_f64`][89542] +- [`Duration::mul_f32`][89542] +- [`Duration::div_f64`][89542] +- [`Duration::div_f32`][89542] +- [`Duration::div_duration_f64`][89542] +- [`Duration::div_duration_f32`][89542] +- [`MaybeUninit::as_ptr`][90896] +- [`MaybeUninit::as_mut_ptr`][90896] +- [`MaybeUninit::assume_init`][90896] +- [`MaybeUninit::assume_init_ref`][90896] + +Cargo +----- + +- [Add --message-format for install command][cargo/10107] +- [Warn when alias shadows external subcommand][cargo/10082] + +Misc +---- + +- [Show all Deref implementations recursively in rustdoc][90183] +- [Use computed visibility in rustdoc][88447] + +Compatibility Notes +------------------- + +- [All proc-macro backward-compatibility lints are now deny-by-default.][88041] +- [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] +- [Refactor weak symbols in std::sys::unix][90846] +- `RUSTFLAGS` is no longer set for build scripts. This change was made in + 1.55, but the release notes did not highlight this change. Build scripts + should use `CARGO_ENCODED_RUSTFLAGS` instead. See the + [documentation](https://doc.rust-lang.org/nightly/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts) + for more details. +- [rustdoc doctest: detect `fn main` after an unexpected semicolon][91026] + +Internal Changes +---------------- + +These changes provide no direct user facing benefits, but represent significant +improvements to the internals and overall performance of rustc +and related tools. + +- [Try all stable method candidates first before trying unstable ones][90329] +- [Implement coherence checks for negative trait impls][90104] +- [Add rustc lint, warning when iterating over hashmaps][89558] +- [Optimize live point computation][90491] +- [Enable verification for 1/32th of queries loaded from disk][90361] +- [Implement version of normalize_erasing_regions that allows for normalization failure][91255] + +[87337]: https://github.com/rust-lang/rust/pull/87337/ +[87467]: https://github.com/rust-lang/rust/pull/87467/ +[87704]: https://github.com/rust-lang/rust/pull/87704/ +[88041]: https://github.com/rust-lang/rust/pull/88041/ +[88300]: https://github.com/rust-lang/rust/pull/88300/ +[88447]: https://github.com/rust-lang/rust/pull/88447/ +[88601]: https://github.com/rust-lang/rust/pull/88601/ +[88624]: https://github.com/rust-lang/rust/pull/88624/ +[89062]: https://github.com/rust-lang/rust/pull/89062/ +[89174]: https://github.com/rust-lang/rust/pull/89174/ +[89542]: https://github.com/rust-lang/rust/pull/89542/ +[89551]: https://github.com/rust-lang/rust/pull/89551/ +[89558]: https://github.com/rust-lang/rust/pull/89558/ +[89580]: https://github.com/rust-lang/rust/pull/89580/ +[89652]: https://github.com/rust-lang/rust/pull/89652/ +[89677]: https://github.com/rust-lang/rust/pull/89677/ +[89951]: https://github.com/rust-lang/rust/pull/89951/ +[90058]: https://github.com/rust-lang/rust/pull/90058/ +[90104]: https://github.com/rust-lang/rust/pull/90104/ +[90117]: https://github.com/rust-lang/rust/pull/90117/ +[90175]: https://github.com/rust-lang/rust/pull/90175/ +[90183]: https://github.com/rust-lang/rust/pull/90183/ +[90297]: https://github.com/rust-lang/rust/pull/90297/ +[90329]: https://github.com/rust-lang/rust/pull/90329/ +[90361]: https://github.com/rust-lang/rust/pull/90361/ +[90417]: https://github.com/rust-lang/rust/pull/90417/ +[90473]: https://github.com/rust-lang/rust/pull/90473/ +[90491]: https://github.com/rust-lang/rust/pull/90491/ +[90733]: https://github.com/rust-lang/rust/pull/90733/ +[90833]: https://github.com/rust-lang/rust/pull/90833/ +[90846]: https://github.com/rust-lang/rust/pull/90846/ +[90896]: https://github.com/rust-lang/rust/pull/90896/ +[91026]: https://github.com/rust-lang/rust/pull/91026/ +[91207]: https://github.com/rust-lang/rust/pull/91207/ +[91255]: https://github.com/rust-lang/rust/pull/91255/ +[91301]: https://github.com/rust-lang/rust/pull/91301/ +[cargo/10082]: https://github.com/rust-lang/cargo/pull/10082/ +[cargo/10107]: https://github.com/rust-lang/cargo/pull/10107/ + Version 1.57.0 (2021-12-02) ========================== From 0928e5257132f76faa9d3d19c79eeba8f36b462a Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Tue, 21 Dec 2021 14:46:50 -0800 Subject: [PATCH 2/9] Apply suggestions from code review Co-authored-by: Hans Kratz Co-authored-by: Chris Denton Co-authored-by: Joshua Nelson --- RELEASES.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index a29059c01445c..db8ebbbc8bd1b 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -18,10 +18,8 @@ Compiler - [Update the minimum external LLVM to 12][90175] - [Add `x86_64-unknown-none` at Tier 3*][89062] - [Build musl dist artifacts with debuginfo enabled][90733] -- [Fix CVE-2021-42574][90462] - [Don't abort compilation after giving a lint error][87337] - [Error messages point at the source of trait bound obligations in more places][89580] -- [Link with default MACOSX_DEPLOYMENT_TARGET if not otherwise specified.][90499] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. @@ -39,12 +37,10 @@ Libraries - [Add #[must_use] to alloc functions that would leak memory][90427] - [Add #[must_use] to remaining std functions (A-N)][90430] - [Add #[must_use] to remaining std functions (O-Z)][90431] -- [Windows: Resolve `process::Command` program without using the current directory][87704] - [Paths are automatically canonicalized on Windows for operations that support it][89174] - [Re-enable `copy[_nonoverlapping]()` debug-checks][90041] - [Implement `RefUnwindSafe` for `Rc`][87467] - [Make RSplit: Clone not require T: Clone][90117] -- [unix: Make `std::thread::available_concurrency` support process-limited number of CPUs][89310] - [Implement `Termination` for `Result`][88601] Stabilized APIs @@ -92,7 +88,7 @@ Cargo - [Add --message-format for install command][cargo/10107] - [Warn when alias shadows external subcommand][cargo/10082] -Misc +Rustdoc ---- - [Show all Deref implementations recursively in rustdoc][90183] @@ -101,15 +97,16 @@ Misc Compatibility Notes ------------------- +- Windows: [`std::process::Command` will no longer search the current directory for executables.][87704] - [All proc-macro backward-compatibility lints are now deny-by-default.][88041] - [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] - [Refactor weak symbols in std::sys::unix][90846] +- [rustdoc now rejects some unexpected semicolons in doctests][91026] - `RUSTFLAGS` is no longer set for build scripts. This change was made in 1.55, but the release notes did not highlight this change. Build scripts should use `CARGO_ENCODED_RUSTFLAGS` instead. See the [documentation](https://doc.rust-lang.org/nightly/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts) for more details. -- [rustdoc doctest: detect `fn main` after an unexpected semicolon][91026] Internal Changes ---------------- From 8fd6e8bb544736be1f35f9d799695692c139f40f Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Thu, 23 Dec 2021 01:27:19 +0000 Subject: [PATCH 3/9] Move RUSTFLAGS compat note to 1.55 --- RELEASES.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index db8ebbbc8bd1b..1bc08295e48e9 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -102,11 +102,6 @@ Compatibility Notes - [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] - [Refactor weak symbols in std::sys::unix][90846] - [rustdoc now rejects some unexpected semicolons in doctests][91026] -- `RUSTFLAGS` is no longer set for build scripts. This change was made in - 1.55, but the release notes did not highlight this change. Build scripts - should use `CARGO_ENCODED_RUSTFLAGS` instead. See the - [documentation](https://doc.rust-lang.org/nightly/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts) - for more details. Internal Changes ---------------- @@ -551,6 +546,10 @@ Compatibility Notes `Command` would cause them to be ASCII-uppercased. - [Rustdoc will now warn on using rustdoc lints that aren't prefixed with `rustdoc::`][86849] +- `RUSTFLAGS` is no longer set for build scripts. Build scripts + should use `CARGO_ENCODED_RUSTFLAGS` instead. See the + [documentation](https://doc.rust-lang.org/nightly/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts) + for more details. [86849]: https://github.com/rust-lang/rust/pull/86849 [86513]: https://github.com/rust-lang/rust/pull/86513 From e2c659bed8f1cf50fbc9312b703753b3245e2d42 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Thu, 23 Dec 2021 01:41:45 +0000 Subject: [PATCH 4/9] Add links to stabilized APIs --- RELEASES.md | 92 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 33 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 1bc08295e48e9..7152338387c55 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -46,41 +46,36 @@ Libraries Stabilized APIs --------------- -- [`Metadata::is_symlink`][89677] -- [`Path::is_symlink`][89677] -- [`{integer}::saturating_div`][88624] -- [`Option::unwrap_unchecked`][89951] -- [`NonZero::is_power_of_two`][91301] -- [`unix::process::ExitStatusExt::core_dumped`][88300] -- [`unix::process::ExitStatusExt::stopped_signal`][88300] -- [`unix::process::ExitStatusExt::continued`][88300] -- [`unix::process::ExitStatusExt::into_raw`][88300] +- [`Metadata::is_symlink`] +- [`Path::is_symlink`] +- [`{integer}::saturating_div`] +- [`Option::unwrap_unchecked`] +- [`NonZero{unsigned}::is_power_of_two`] These APIs are now usable in const contexts: -- [Partially stabilize `duration_consts_2`][89542] -- [`Duration::new`][89542] -- [`Duration::checked_add`][89542] -- [`Duration::saturating_add`][89542] -- [`Duration::checked_sub`][89542] -- [`Duration::saturating_sub`][89542] -- [`Duration::checked_mul`][89542] -- [`Duration::saturating_mul`][89542] -- [`Duration::checked_div`][89542] -- [`Duration::as_secs_f64`][89542] -- [`Duration::as_secs_f32`][89542] -- [`Duration::from_secs_f64`][89542] -- [`Duration::from_secs_f32`][89542] -- [`Duration::mul_f64`][89542] -- [`Duration::mul_f32`][89542] -- [`Duration::div_f64`][89542] -- [`Duration::div_f32`][89542] -- [`Duration::div_duration_f64`][89542] -- [`Duration::div_duration_f32`][89542] -- [`MaybeUninit::as_ptr`][90896] -- [`MaybeUninit::as_mut_ptr`][90896] -- [`MaybeUninit::assume_init`][90896] -- [`MaybeUninit::assume_init_ref`][90896] +- [`Duration::new`] +- [`Duration::checked_add`] +- [`Duration::saturating_add`] +- [`Duration::checked_sub`] +- [`Duration::saturating_sub`] +- [`Duration::checked_mul`] +- [`Duration::saturating_mul`] +- [`Duration::checked_div`] +- [`Duration::as_secs_f64`] +- [`Duration::as_secs_f32`] +- [`Duration::from_secs_f64`] +- [`Duration::from_secs_f32`] +- [`Duration::mul_f64`] +- [`Duration::mul_f32`] +- [`Duration::div_f64`] +- [`Duration::div_f32`] +- [`Duration::div_duration_f64`] +- [`Duration::div_duration_f32`] +- [`MaybeUninit::as_ptr`] +- [`MaybeUninit::as_mut_ptr`] +- [`MaybeUninit::assume_init`] +- [`MaybeUninit::assume_init_ref`] Cargo ----- @@ -89,7 +84,7 @@ Cargo - [Warn when alias shadows external subcommand][cargo/10082] Rustdoc ----- +------- - [Show all Deref implementations recursively in rustdoc][90183] - [Use computed visibility in rustdoc][88447] @@ -155,6 +150,37 @@ and related tools. [91301]: https://github.com/rust-lang/rust/pull/91301/ [cargo/10082]: https://github.com/rust-lang/cargo/pull/10082/ [cargo/10107]: https://github.com/rust-lang/cargo/pull/10107/ +[`Metadata::is_symlink`]: https://doc.rust-lang.org/stable/std/fs/struct.Metadata.html#method.is_symlink +[`Path::is_symlink`]: https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.is_symlink +[`{integer}::saturating_div`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.saturating_div +[`Option::unwrap_unchecked`]: https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unwrap_unchecked +[`NonZero{unsigned}::is_power_of_two`]: https://doc.rust-lang.org/stable/std/num/struct.NonZeroU8.html#method.is_power_of_two +[`unix::process::ExitStatusExt::core_dumped`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.core_dumped +[`unix::process::ExitStatusExt::stopped_signal`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.stopped_signal +[`unix::process::ExitStatusExt::continued`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.continued +[`unix::process::ExitStatusExt::into_raw`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.into_raw +[`Duration::new`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.new +[`Duration::checked_add`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_add +[`Duration::saturating_add`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_add +[`Duration::checked_sub`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_sub +[`Duration::saturating_sub`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_sub +[`Duration::checked_mul`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_mul +[`Duration::saturating_mul`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_mul +[`Duration::checked_div`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_div +[`Duration::as_secs_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.as_secs_f64 +[`Duration::as_secs_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.as_secs_f32 +[`Duration::from_secs_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_secs_f64 +[`Duration::from_secs_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_secs_f32 +[`Duration::mul_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.mul_f64 +[`Duration::mul_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.mul_f32 +[`Duration::div_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_f64 +[`Duration::div_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_f32 +[`Duration::div_duration_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f64 +[`Duration::div_duration_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f32 +[`MaybeUninit::as_ptr`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.as_ptr +[`MaybeUninit::as_mut_ptr`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.as_mut_ptr +[`MaybeUninit::assume_init`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init +[`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref Version 1.57.0 (2021-12-02) ========================== From 3d2b8a29f937c7b7879b939cb3c59ae0e61dcfbb Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Tue, 4 Jan 2022 17:03:05 -0800 Subject: [PATCH 5/9] Apply suggestions from code review Co-authored-by: Josh Triplett Co-authored-by: Alexander Ronald Altman --- RELEASES.md | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 7152338387c55..96e5ab645c4c6 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -4,7 +4,7 @@ Version 1.58.0 (2022-01-13) Language -------- -- [Format strings can now capture arguments simply by writing `{ident}` in the string.][90473] +- [Format strings can now capture arguments simply by writing `{ident}` in the string.][90473] This works in all macros accepting format strings. Support for this in `panic!` (`panic!("{ident}")`) requires the 2021 edition; panic invocations in previous editions that appear to be trying to use this will result in a warning lint about not having the intended effect. - [`*const T` pointers can now be dereferenced in const contexts.][89551] - [The rules for when a generic struct implements `Unsize` have been relaxed.][90417] @@ -12,12 +12,12 @@ Compiler -------- - [Add LLVM CFI support to the Rust compiler][89652] -- [Stabilize -Z strip as -C strip][90058] +- [Stabilize -Z strip as -C strip][90058]. Note that while release builds already don't add debug symbols for the code you compile, the compiled standard library that ships with Rust includes debug symbols, so you may want to use the `strip` option to remove these symbols to produce smaller release binaries. - [Add support for LLVM coverage mapping format versions 5 and 6][91207] - [Emit LLVM optimization remarks when enabled with `-Cremark`][90833] - [Update the minimum external LLVM to 12][90175] - [Add `x86_64-unknown-none` at Tier 3*][89062] -- [Build musl dist artifacts with debuginfo enabled][90733] +- [Build musl dist artifacts with debuginfo enabled][90733]. When building release binaries using musl, you may want to use the newly stabilized strip option to remove these debug symbols, reducing the size of your binaries. - [Don't abort compilation after giving a lint error][87337] - [Error messages point at the source of trait bound obligations in more places][89580] @@ -27,21 +27,12 @@ Compiler Libraries --------- -- [Add #[must_use] to Rc::downgrade][89833] -- [Add #[must_use] to expensive computations][89835] -- [Add #[must_use] to mem/ptr functions][89839] -- [Add #[must_use] to remaining core functions][89897] -- [Add #[must_use] to remaining alloc functions][89899] -- [Add #[must_use] to len and is_empty][89786] -- [Add #[must_use] to thread::Builder][89789] -- [Add #[must_use] to alloc functions that would leak memory][90427] -- [Add #[must_use] to remaining std functions (A-N)][90430] -- [Add #[must_use] to remaining std functions (O-Z)][90431] +- [All remaining functions in the standard library have `#[must_use]` annotations where appropriate][89692], producing a warning when ignoring their return value. This helps catch mistakes such as expecting a function to mutate a value in place rather than return a new value. - [Paths are automatically canonicalized on Windows for operations that support it][89174] -- [Re-enable `copy[_nonoverlapping]()` debug-checks][90041] +- [Re-enable debug checks for `copy` and `copy_nonoverlapping`][90041] - [Implement `RefUnwindSafe` for `Rc`][87467] - [Make RSplit: Clone not require T: Clone][90117] -- [Implement `Termination` for `Result`][88601] +- [Implement `Termination` for `Result`][88601]. This allows writing `fn main() -> Result`, for a program whose successful exits never involve returning from `main` (for instance, a program that calls `exit`, or that uses `exec` to run another program). Stabilized APIs --------------- @@ -95,7 +86,7 @@ Compatibility Notes - Windows: [`std::process::Command` will no longer search the current directory for executables.][87704] - [All proc-macro backward-compatibility lints are now deny-by-default.][88041] - [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] -- [Refactor weak symbols in std::sys::unix][90846] +- [Refactor weak symbols in std::sys::unix][90846]. This optimizes accesses to glibc functions, by avoiding the use of dlopen. This does not increase the [minimum expected version of glibc](https://doc.rust-lang.org/nightly/rustc/platform-support.html). However, software distributions that use symbol versions to detect library dependencies, and which take weak symbols into account in that analysis, may detect rust binaries as requiring newer versions of glibc. - [rustdoc now rejects some unexpected semicolons in doctests][91026] Internal Changes @@ -105,11 +96,11 @@ These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. -- [Try all stable method candidates first before trying unstable ones][90329] +- [Try all stable method candidates first before trying unstable ones][90329]. This change ensures that adding new nightly-only methods to the Rust standard library will not break code invoking methods of the same name from traits outside the standard library. - [Implement coherence checks for negative trait impls][90104] - [Add rustc lint, warning when iterating over hashmaps][89558] - [Optimize live point computation][90491] -- [Enable verification for 1/32th of queries loaded from disk][90361] +- [Enable verification for 1/32nd of queries loaded from disk][90361] - [Implement version of normalize_erasing_regions that allows for normalization failure][91255] [87337]: https://github.com/rust-lang/rust/pull/87337/ From c3a99d8fd623f7b466289c2bbd6a35a0c93b03a0 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Wed, 5 Jan 2022 01:08:56 +0000 Subject: [PATCH 6/9] Move #90329 to compatibility notes --- RELEASES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index 96e5ab645c4c6..987431a2dbfd9 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -83,6 +83,7 @@ Rustdoc Compatibility Notes ------------------- +- [Try all stable method candidates first before trying unstable ones][90329]. This change ensures that adding new nightly-only methods to the Rust standard library will not break code invoking methods of the same name from traits outside the standard library. - Windows: [`std::process::Command` will no longer search the current directory for executables.][87704] - [All proc-macro backward-compatibility lints are now deny-by-default.][88041] - [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] @@ -96,7 +97,6 @@ These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. -- [Try all stable method candidates first before trying unstable ones][90329]. This change ensures that adding new nightly-only methods to the Rust standard library will not break code invoking methods of the same name from traits outside the standard library. - [Implement coherence checks for negative trait impls][90104] - [Add rustc lint, warning when iterating over hashmaps][89558] - [Optimize live point computation][90491] From dd9501f8d3e5e09e3e4d054f7e57d06a5b45e2f2 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Fri, 7 Jan 2022 16:48:47 +0000 Subject: [PATCH 7/9] Fix broken link --- RELEASES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASES.md b/RELEASES.md index 987431a2dbfd9..9b350d0a03b50 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -120,6 +120,7 @@ and related tools. [89652]: https://github.com/rust-lang/rust/pull/89652/ [89677]: https://github.com/rust-lang/rust/pull/89677/ [89951]: https://github.com/rust-lang/rust/pull/89951/ +[90041]: https://github.com/rust-lang/rust/pull/90041/ [90058]: https://github.com/rust-lang/rust/pull/90058/ [90104]: https://github.com/rust-lang/rust/pull/90104/ [90117]: https://github.com/rust-lang/rust/pull/90117/ From 81963b12c540bbe1053fc4b134715ba286185e73 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Fri, 7 Jan 2022 16:49:14 +0000 Subject: [PATCH 8/9] Clarify that -C strip is only in rustc, not cargo, in 1.58 --- RELEASES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index 9b350d0a03b50..7aaa6079ef8ab 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -12,7 +12,7 @@ Compiler -------- - [Add LLVM CFI support to the Rust compiler][89652] -- [Stabilize -Z strip as -C strip][90058]. Note that while release builds already don't add debug symbols for the code you compile, the compiled standard library that ships with Rust includes debug symbols, so you may want to use the `strip` option to remove these symbols to produce smaller release binaries. +- [Stabilize -Z strip as -C strip][90058]. Note that while release builds already don't add debug symbols for the code you compile, the compiled standard library that ships with Rust includes debug symbols, so you may want to use the `strip` option to remove these symbols to produce smaller release binaries. Note that this release only includes support in rustc, not directly in cargo. - [Add support for LLVM coverage mapping format versions 5 and 6][91207] - [Emit LLVM optimization remarks when enabled with `-Cremark`][90833] - [Update the minimum external LLVM to 12][90175] From 0e13d0c20e8f64605c13c7ed6a086789e4de25cd Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Sat, 8 Jan 2022 21:34:01 +0100 Subject: [PATCH 9/9] remove float methods --- RELEASES.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 7aaa6079ef8ab..d6f5909a2ebc0 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -53,16 +53,6 @@ These APIs are now usable in const contexts: - [`Duration::checked_mul`] - [`Duration::saturating_mul`] - [`Duration::checked_div`] -- [`Duration::as_secs_f64`] -- [`Duration::as_secs_f32`] -- [`Duration::from_secs_f64`] -- [`Duration::from_secs_f32`] -- [`Duration::mul_f64`] -- [`Duration::mul_f32`] -- [`Duration::div_f64`] -- [`Duration::div_f32`] -- [`Duration::div_duration_f64`] -- [`Duration::div_duration_f32`] - [`MaybeUninit::as_ptr`] - [`MaybeUninit::as_mut_ptr`] - [`MaybeUninit::assume_init`]