Add release notes for 1.58

This commit is contained in:
Tyler Mandry 2021-12-23 01:25:11 +00:00
parent 0b42deaccc
commit 9b588a6b69
1 changed files with 166 additions and 0 deletions

View File

@ -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<T>`][87467]
- [Make RSplit<T, P>: Clone not require T: Clone][90117]
- [unix: Make `std::thread::available_concurrency` support process-limited number of CPUs][89310]
- [Implement `Termination` for `Result<Infallible, E>`][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)
==========================