diff --git a/RELEASES.md b/RELEASES.md
index fa95df685aaa4..6736f46d0e534 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -55,42 +55,42 @@ Libraries
Stabilized APIs
---------------
-- [`NonZero*::MIN/MAX`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI8.html#associatedconstant.MIN)
-- [`BinaryHeap::retain`](https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.retain)
-- [`Default for std::collections::binary_heap::IntoIter`](https://doc.rust-lang.org/stable/std/collections/binary_heap/struct.IntoIter.html)
-- [`Default for std::collections::btree_map::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoIter.html)
-- [`Default for std::collections::btree_map::{IntoKeys, Keys}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html)
-- [`Default for std::collections::btree_map::{IntoValues, Values}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html)
-- [`Default for std::collections::btree_map::Range`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.Range.html)
-- [`Default for std::collections::btree_set::{IntoIter, Iter}`](https://doc.rust-lang.org/stable/std/collections/btree_set/struct.IntoIter.html)
-- [`Default for std::collections::btree_set::Range`](https://doc.rust-lang.org/stable/std/collections/btree_set/struct.Range.html)
-- [`Default for std::collections::linked_list::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/stable/alloc/collections/linked_list/struct.IntoIter.html)
-- [`Default for std::vec::IntoIter`](https://doc.rust-lang.org/stable/alloc/vec/struct.IntoIter.html#impl-Default-for-IntoIter%3CT,+A%3E)
-- [`Default for std::iter::Chain`](https://doc.rust-lang.org/stable/std/iter/struct.Chain.html)
-- [`Default for std::iter::Cloned`](https://doc.rust-lang.org/stable/std/iter/struct.Cloned.html)
-- [`Default for std::iter::Copied`](https://doc.rust-lang.org/stable/std/iter/struct.Copied.html)
-- [`Default for std::iter::Enumerate`](https://doc.rust-lang.org/stable/std/iter/struct.Enumerate.html)
-- [`Default for std::iter::Flatten`](https://doc.rust-lang.org/stable/std/iter/struct.Flatten.html)
-- [`Default for std::iter::Fuse`](https://doc.rust-lang.org/stable/std/iter/struct.Fuse.html)
-- [`Default for std::iter::Rev`](https://doc.rust-lang.org/stable/std/iter/struct.Rev.html)
-- [`Default for std::slice::Iter`](https://doc.rust-lang.org/stable/std/slice/struct.Iter.html)
-- [`Default for std::slice::IterMut`](https://doc.rust-lang.org/stable/std/slice/struct.IterMut.html)
-- [`Rc::into_inner`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#method.into_inner)
-- [`Arc::into_inner`](https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#method.into_inner)
-- [`std::cell::OnceCell`](https://doc.rust-lang.org/stable/std/cell/struct.OnceCell.html)
-- [`Option::is_some_and`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.is_some_and)
-- [`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.slice_from_raw_parts)
-- [`Result::is_ok_and`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_ok_and)
-- [`Result::is_err_and`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_err_and)
-- [`std::sync::atomic::Atomic*::as_ptr`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicU8.html#method.as_ptr)
-- [`std::io::IsTerminal`](https://doc.rust-lang.org/stable/std/io/trait.IsTerminal.html)
-- [`std::os::linux::net::SocketAddrExt`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.SocketAddrExt.html)
-- [`std::os::unix::net::UnixDatagram::bind_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.bind_addr)
-- [`std::os::unix::net::UnixDatagram::connect_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.connect_addr)
-- [`std::os::unix::net::UnixDatagram::send_to_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.send_to_addr)
-- [`std::os::unix::net::UnixListener::bind_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixListener.html#method.bind_addr)
-- [`std::path::Path::as_mut_os_str`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.as_mut_os_str)
-- [`std::sync::OnceLock`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html)
+- [`NonZero*::MIN/MAX`](https://doc.rust-lang.org/std/num/struct.NonZeroI8.html#associatedconstant.MIN)
+- [`BinaryHeap::retain`](https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#method.retain)
+- [`Default for std::collections::binary_heap::IntoIter`](https://doc.rust-lang.org/std/collections/binary_heap/struct.IntoIter.html)
+- [`Default for std::collections::btree_map::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/std/collections/btree_map/struct.IntoIter.html)
+- [`Default for std::collections::btree_map::{IntoKeys, Keys}`](https://doc.rust-lang.org/std/collections/btree_map/struct.IntoKeys.html)
+- [`Default for std::collections::btree_map::{IntoValues, Values}`](https://doc.rust-lang.org/std/collections/btree_map/struct.IntoKeys.html)
+- [`Default for std::collections::btree_map::Range`](https://doc.rust-lang.org/std/collections/btree_map/struct.Range.html)
+- [`Default for std::collections::btree_set::{IntoIter, Iter}`](https://doc.rust-lang.org/std/collections/btree_set/struct.IntoIter.html)
+- [`Default for std::collections::btree_set::Range`](https://doc.rust-lang.org/std/collections/btree_set/struct.Range.html)
+- [`Default for std::collections::linked_list::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/alloc/collections/linked_list/struct.IntoIter.html)
+- [`Default for std::vec::IntoIter`](https://doc.rust-lang.org/alloc/vec/struct.IntoIter.html#impl-Default-for-IntoIter%3CT,+A%3E)
+- [`Default for std::iter::Chain`](https://doc.rust-lang.org/std/iter/struct.Chain.html)
+- [`Default for std::iter::Cloned`](https://doc.rust-lang.org/std/iter/struct.Cloned.html)
+- [`Default for std::iter::Copied`](https://doc.rust-lang.org/std/iter/struct.Copied.html)
+- [`Default for std::iter::Enumerate`](https://doc.rust-lang.org/std/iter/struct.Enumerate.html)
+- [`Default for std::iter::Flatten`](https://doc.rust-lang.org/std/iter/struct.Flatten.html)
+- [`Default for std::iter::Fuse`](https://doc.rust-lang.org/std/iter/struct.Fuse.html)
+- [`Default for std::iter::Rev`](https://doc.rust-lang.org/std/iter/struct.Rev.html)
+- [`Default for std::slice::Iter`](https://doc.rust-lang.org/std/slice/struct.Iter.html)
+- [`Default for std::slice::IterMut`](https://doc.rust-lang.org/std/slice/struct.IterMut.html)
+- [`Rc::into_inner`](https://doc.rust-lang.org/alloc/rc/struct.Rc.html#method.into_inner)
+- [`Arc::into_inner`](https://doc.rust-lang.org/alloc/sync/struct.Arc.html#method.into_inner)
+- [`std::cell::OnceCell`](https://doc.rust-lang.org/std/cell/struct.OnceCell.html)
+- [`Option::is_some_and`](https://doc.rust-lang.org/std/option/enum.Option.html#method.is_some_and)
+- [`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/std/ptr/struct.NonNull.html#method.slice_from_raw_parts)
+- [`Result::is_ok_and`](https://doc.rust-lang.org/std/result/enum.Result.html#method.is_ok_and)
+- [`Result::is_err_and`](https://doc.rust-lang.org/std/result/enum.Result.html#method.is_err_and)
+- [`std::sync::atomic::Atomic*::as_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicU8.html#method.as_ptr)
+- [`std::io::IsTerminal`](https://doc.rust-lang.org/std/io/trait.IsTerminal.html)
+- [`std::os::linux::net::SocketAddrExt`](https://doc.rust-lang.org/std/os/linux/net/trait.SocketAddrExt.html)
+- [`std::os::unix::net::UnixDatagram::bind_addr`](https://doc.rust-lang.org/std/os/unix/net/struct.UnixDatagram.html#method.bind_addr)
+- [`std::os::unix::net::UnixDatagram::connect_addr`](https://doc.rust-lang.org/std/os/unix/net/struct.UnixDatagram.html#method.connect_addr)
+- [`std::os::unix::net::UnixDatagram::send_to_addr`](https://doc.rust-lang.org/std/os/unix/net/struct.UnixDatagram.html#method.send_to_addr)
+- [`std::os::unix::net::UnixListener::bind_addr`](https://doc.rust-lang.org/std/os/unix/net/struct.UnixListener.html#method.bind_addr)
+- [`std::path::Path::as_mut_os_str`](https://doc.rust-lang.org/std/path/struct.Path.html#method.as_mut_os_str)
+- [`std::sync::OnceLock`](https://doc.rust-lang.org/std/sync/struct.OnceLock.html)
@@ -173,24 +173,24 @@ Libraries
Stabilized APIs
---------------
-- [`CStr::from_bytes_until_nul`](https://doc.rust-lang.org/stable/core/ffi/struct.CStr.html#method.from_bytes_until_nul)
-- [`core::ffi::FromBytesUntilNulError`](https://doc.rust-lang.org/stable/core/ffi/struct.FromBytesUntilNulError.html)
+- [`CStr::from_bytes_until_nul`](https://doc.rust-lang.org/core/ffi/struct.CStr.html#method.from_bytes_until_nul)
+- [`core::ffi::FromBytesUntilNulError`](https://doc.rust-lang.org/core/ffi/struct.FromBytesUntilNulError.html)
These APIs are now stable in const contexts:
-- [`SocketAddr::new`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.new)
-- [`SocketAddr::ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.ip)
-- [`SocketAddr::port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.port)
-- [`SocketAddr::is_ipv4`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.is_ipv4)
-- [`SocketAddr::is_ipv6`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.is_ipv6)
-- [`SocketAddrV4::new`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.new)
-- [`SocketAddrV4::ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.ip)
-- [`SocketAddrV4::port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.port)
-- [`SocketAddrV6::new`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.new)
-- [`SocketAddrV6::ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.ip)
-- [`SocketAddrV6::port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.port)
-- [`SocketAddrV6::flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.flowinfo)
-- [`SocketAddrV6::scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.scope_id)
+- [`SocketAddr::new`](https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.new)
+- [`SocketAddr::ip`](https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.ip)
+- [`SocketAddr::port`](https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.port)
+- [`SocketAddr::is_ipv4`](https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv4)
+- [`SocketAddr::is_ipv6`](https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv6)
+- [`SocketAddrV4::new`](https://doc.rust-lang.org/std/net/struct.SocketAddrV4.html#method.new)
+- [`SocketAddrV4::ip`](https://doc.rust-lang.org/std/net/struct.SocketAddrV4.html#method.ip)
+- [`SocketAddrV4::port`](https://doc.rust-lang.org/std/net/struct.SocketAddrV4.html#method.port)
+- [`SocketAddrV6::new`](https://doc.rust-lang.org/std/net/struct.SocketAddrV6.html#method.new)
+- [`SocketAddrV6::ip`](https://doc.rust-lang.org/std/net/struct.SocketAddrV6.html#method.ip)
+- [`SocketAddrV6::port`](https://doc.rust-lang.org/std/net/struct.SocketAddrV6.html#method.port)
+- [`SocketAddrV6::flowinfo`](https://doc.rust-lang.org/std/net/struct.SocketAddrV6.html#method.flowinfo)
+- [`SocketAddrV6::scope_id`](https://doc.rust-lang.org/std/net/struct.SocketAddrV6.html#method.scope_id)
@@ -308,14 +308,14 @@ Libraries
Stabilized APIs
---------------
-- [`{core,std}::pin::pin!`](https://doc.rust-lang.org/stable/std/pin/macro.pin.html)
-- [`impl From for {f32,f64}`](https://doc.rust-lang.org/stable/std/primitive.f32.html#impl-From%3Cbool%3E-for-f32)
-- [`std::path::MAIN_SEPARATOR_STR`](https://doc.rust-lang.org/stable/std/path/constant.MAIN_SEPARATOR_STR.html)
-- [`impl DerefMut for PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-DerefMut-for-PathBuf)
+- [`{core,std}::pin::pin!`](https://doc.rust-lang.org/std/pin/macro.pin.html)
+- [`impl From for {f32,f64}`](https://doc.rust-lang.org/std/primitive.f32.html#impl-From%3Cbool%3E-for-f32)
+- [`std::path::MAIN_SEPARATOR_STR`](https://doc.rust-lang.org/std/path/constant.MAIN_SEPARATOR_STR.html)
+- [`impl DerefMut for PathBuf`](https://doc.rust-lang.org/std/path/struct.PathBuf.html#impl-DerefMut-for-PathBuf)
These APIs are now stable in const contexts:
-- [`VecDeque::new`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.new)
+- [`VecDeque::new`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.new)
@@ -418,23 +418,23 @@ Libraries
Stabilized APIs
---------------
-- [`{integer}::checked_ilog`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog)
-- [`{integer}::checked_ilog2`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog2)
-- [`{integer}::checked_ilog10`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog10)
-- [`{integer}::ilog`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog)
-- [`{integer}::ilog2`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog2)
-- [`{integer}::ilog10`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog10)
-- [`NonZeroU*::ilog2`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog2)
-- [`NonZeroU*::ilog10`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog10)
-- [`NonZero*::BITS`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#associatedconstant.BITS)
+- [`{integer}::checked_ilog`](https://doc.rust-lang.org/std/primitive.i32.html#method.checked_ilog)
+- [`{integer}::checked_ilog2`](https://doc.rust-lang.org/std/primitive.i32.html#method.checked_ilog2)
+- [`{integer}::checked_ilog10`](https://doc.rust-lang.org/std/primitive.i32.html#method.checked_ilog10)
+- [`{integer}::ilog`](https://doc.rust-lang.org/std/primitive.i32.html#method.ilog)
+- [`{integer}::ilog2`](https://doc.rust-lang.org/std/primitive.i32.html#method.ilog2)
+- [`{integer}::ilog10`](https://doc.rust-lang.org/std/primitive.i32.html#method.ilog10)
+- [`NonZeroU*::ilog2`](https://doc.rust-lang.org/std/num/struct.NonZeroU32.html#method.ilog2)
+- [`NonZeroU*::ilog10`](https://doc.rust-lang.org/std/num/struct.NonZeroU32.html#method.ilog10)
+- [`NonZero*::BITS`](https://doc.rust-lang.org/std/num/struct.NonZeroU32.html#associatedconstant.BITS)
These APIs are now stable in const contexts:
-- [`char::from_u32`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_u32)
-- [`char::from_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_digit)
-- [`char::to_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_digit)
-- [`core::char::from_u32`](https://doc.rust-lang.org/stable/core/char/fn.from_u32.html)
-- [`core::char::from_digit`](https://doc.rust-lang.org/stable/core/char/fn.from_digit.html)
+- [`char::from_u32`](https://doc.rust-lang.org/std/primitive.char.html#method.from_u32)
+- [`char::from_digit`](https://doc.rust-lang.org/std/primitive.char.html#method.from_digit)
+- [`char::to_digit`](https://doc.rust-lang.org/std/primitive.char.html#method.to_digit)
+- [`core::char::from_u32`](https://doc.rust-lang.org/core/char/fn.from_u32.html)
+- [`core::char::from_digit`](https://doc.rust-lang.org/core/char/fn.from_digit.html)
@@ -516,18 +516,18 @@ Libraries
Stabilized APIs
---------------
-- [`proc_macro::Span::source_text`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.source_text)
-- [`uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}`](https://doc.rust-lang.org/stable/std/primitive.u8.html#method.checked_add_signed)
-- [`iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_add_unsigned)
-- [`iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_sub_unsigned)
-- [`BTreeSet::{first, last, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.first)
-- [`BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.first_key_value)
+- [`proc_macro::Span::source_text`](https://doc.rust-lang.org/proc_macro/struct.Span.html#method.source_text)
+- [`uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}`](https://doc.rust-lang.org/std/primitive.u8.html#method.checked_add_signed)
+- [`iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}`](https://doc.rust-lang.org/std/primitive.i8.html#method.checked_add_unsigned)
+- [`iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}`](https://doc.rust-lang.org/std/primitive.i8.html#method.checked_sub_unsigned)
+- [`BTreeSet::{first, last, pop_first, pop_last}`](https://doc.rust-lang.org/std/collections/struct.BTreeSet.html#method.first)
+- [`BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}`](https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.first_key_value)
- [Add `AsFd` implementations for stdio lock types on WASI.](https://github.com/rust-lang/rust/pull/101768/)
-- [`impl TryFrom> for Box<[T; N]>`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-TryFrom%3CVec%3CT%2C%20Global%3E%3E-for-Box%3C%5BT%3B%20N%5D%2C%20Global%3E)
-- [`core::hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html)
-- [`Duration::try_from_secs_{f32,f64}`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.try_from_secs_f32)
-- [`Option::unzip`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unzip)
-- [`std::os::fd`](https://doc.rust-lang.org/stable/std/os/fd/index.html)
+- [`impl TryFrom> for Box<[T; N]>`](https://doc.rust-lang.org/std/boxed/struct.Box.html#impl-TryFrom%3CVec%3CT%2C%20Global%3E%3E-for-Box%3C%5BT%3B%20N%5D%2C%20Global%3E)
+- [`core::hint::black_box`](https://doc.rust-lang.org/std/hint/fn.black_box.html)
+- [`Duration::try_from_secs_{f32,f64}`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.try_from_secs_f32)
+- [`Option::unzip`](https://doc.rust-lang.org/std/option/enum.Option.html#method.unzip)
+- [`std::os::fd`](https://doc.rust-lang.org/std/os/fd/index.html)
Rustdoc
@@ -538,7 +538,7 @@ Rustdoc
Cargo
-----
-- [Added `cargo remove` to remove dependencies from Cargo.toml](https://doc.rust-lang.org/nightly/cargo/commands/cargo-remove.html)
+- [Added `cargo remove` to remove dependencies from Cargo.toml](https://doc.rust-lang.org/cargo/commands/cargo-remove.html)
- [`cargo publish` now waits for the new version to be downloadable before exiting](https://github.com/rust-lang/cargo/pull/11062)
See [detailed release notes](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-166-2022-12-15) for more.
@@ -616,16 +616,16 @@ Libraries
Stabilized APIs
---------------
-- [`std::backtrace::Backtrace`](https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html)
-- [`Bound::as_ref`](https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref)
-- [`std::io::read_to_string`](https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html)
-- [`<*const T>::cast_mut`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut)
-- [`<*mut T>::cast_const`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const)
+- [`std::backtrace::Backtrace`](https://doc.rust-lang.org/std/backtrace/struct.Backtrace.html)
+- [`Bound::as_ref`](https://doc.rust-lang.org/std/ops/enum.Bound.html#method.as_ref)
+- [`std::io::read_to_string`](https://doc.rust-lang.org/std/io/fn.read_to_string.html)
+- [`<*const T>::cast_mut`](https://doc.rust-lang.org/std/primitive.pointer.html#method.cast_mut)
+- [`<*mut T>::cast_const`](https://doc.rust-lang.org/std/primitive.pointer.html#method.cast_const)
These APIs are now stable in const contexts:
-- [`<*const T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
-- [`<*mut T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
+- [`<*const T>::offset_from`](https://doc.rust-lang.org/std/primitive.pointer.html#method.offset_from)
+- [`<*mut T>::offset_from`](https://doc.rust-lang.org/std/primitive.pointer.html#method.offset_from)
Cargo
-----
@@ -656,9 +656,8 @@ Compatibility Notes
This strengthens the forward compatibility lint deprecated_cfg_attr_crate_type_name to deny.
- [`llvm-has-rust-patches` allows setting the build system to treat the LLVM as having Rust-specific patches](https://github.com/rust-lang/rust/pull/101072)
This option may need to be set for distributions that are building Rust with a patched LLVM via `llvm-config`, not the built-in LLVM.
-- Combining three or more languages (e.g. Objective C, C++ and Rust) into one binary may hit linker limitations when using `lld`. For more information, see [issue 102754][102754].
+- Combining three or more languages (e.g. Objective C, C++ and Rust) into one binary may hit linker limitations when using `lld`. For more information, see [issue 102754](https://github.com/rust-lang/rust/issues/102754).
-[102754]: https://github.com/rust-lang/rust/issues/102754
Internal Changes
----------------
@@ -705,72 +704,72 @@ Libraries
Stabilized APIs
---------------
-- [`future::IntoFuture`](https://doc.rust-lang.org/stable/std/future/trait.IntoFuture.html)
-- [`future::poll_fn`](https://doc.rust-lang.org/stable/std/future/fn.poll_fn.html)
-- [`task::ready!`](https://doc.rust-lang.org/stable/std/task/macro.ready.html)
-- [`num::NonZero*::checked_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_mul)
-- [`num::NonZero*::checked_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_pow)
-- [`num::NonZero*::saturating_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_mul)
-- [`num::NonZero*::saturating_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_pow)
-- [`num::NonZeroI*::abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.abs)
-- [`num::NonZeroI*::checked_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.checked_abs)
-- [`num::NonZeroI*::overflowing_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.overflowing_abs)
-- [`num::NonZeroI*::saturating_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.saturating_abs)
-- [`num::NonZeroI*::unsigned_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.unsigned_abs)
-- [`num::NonZeroI*::wrapping_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.wrapping_abs)
-- [`num::NonZeroU*::checked_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_add)
-- [`num::NonZeroU*::checked_next_power_of_two`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_next_power_of_two)
-- [`num::NonZeroU*::saturating_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_add)
-- [`os::unix::process::CommandExt::process_group`](https://doc.rust-lang.org/stable/std/os/unix/process/trait.CommandExt.html#tymethod.process_group)
-- [`os::windows::fs::FileTypeExt::is_symlink_dir`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_dir)
-- [`os::windows::fs::FileTypeExt::is_symlink_file`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_file)
+- [`future::IntoFuture`](https://doc.rust-lang.org/std/future/trait.IntoFuture.html)
+- [`future::poll_fn`](https://doc.rust-lang.org/std/future/fn.poll_fn.html)
+- [`task::ready!`](https://doc.rust-lang.org/std/task/macro.ready.html)
+- [`num::NonZero*::checked_mul`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.checked_mul)
+- [`num::NonZero*::checked_pow`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.checked_pow)
+- [`num::NonZero*::saturating_mul`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.saturating_mul)
+- [`num::NonZero*::saturating_pow`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.saturating_pow)
+- [`num::NonZeroI*::abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.abs)
+- [`num::NonZeroI*::checked_abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.checked_abs)
+- [`num::NonZeroI*::overflowing_abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.overflowing_abs)
+- [`num::NonZeroI*::saturating_abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.saturating_abs)
+- [`num::NonZeroI*::unsigned_abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.unsigned_abs)
+- [`num::NonZeroI*::wrapping_abs`](https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html#method.wrapping_abs)
+- [`num::NonZeroU*::checked_add`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.checked_add)
+- [`num::NonZeroU*::checked_next_power_of_two`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.checked_next_power_of_two)
+- [`num::NonZeroU*::saturating_add`](https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html#method.saturating_add)
+- [`os::unix::process::CommandExt::process_group`](https://doc.rust-lang.org/std/os/unix/process/trait.CommandExt.html#tymethod.process_group)
+- [`os::windows::fs::FileTypeExt::is_symlink_dir`](https://doc.rust-lang.org/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_dir)
+- [`os::windows::fs::FileTypeExt::is_symlink_file`](https://doc.rust-lang.org/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_file)
These types were previously stable in `std::ffi`, but are now also available in `core` and `alloc`:
-- [`core::ffi::CStr`](https://doc.rust-lang.org/stable/core/ffi/struct.CStr.html)
-- [`core::ffi::FromBytesWithNulError`](https://doc.rust-lang.org/stable/core/ffi/struct.FromBytesWithNulError.html)
-- [`alloc::ffi::CString`](https://doc.rust-lang.org/stable/alloc/ffi/struct.CString.html)
-- [`alloc::ffi::FromVecWithNulError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.FromVecWithNulError.html)
-- [`alloc::ffi::IntoStringError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.IntoStringError.html)
-- [`alloc::ffi::NulError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.NulError.html)
+- [`core::ffi::CStr`](https://doc.rust-lang.org/core/ffi/struct.CStr.html)
+- [`core::ffi::FromBytesWithNulError`](https://doc.rust-lang.org/core/ffi/struct.FromBytesWithNulError.html)
+- [`alloc::ffi::CString`](https://doc.rust-lang.org/alloc/ffi/struct.CString.html)
+- [`alloc::ffi::FromVecWithNulError`](https://doc.rust-lang.org/alloc/ffi/struct.FromVecWithNulError.html)
+- [`alloc::ffi::IntoStringError`](https://doc.rust-lang.org/alloc/ffi/struct.IntoStringError.html)
+- [`alloc::ffi::NulError`](https://doc.rust-lang.org/alloc/ffi/struct.NulError.html)
These types were previously stable in `std::os::raw`, but are now also available in `core::ffi` and `std::ffi`:
-- [`ffi::c_char`](https://doc.rust-lang.org/stable/std/ffi/type.c_char.html)
-- [`ffi::c_double`](https://doc.rust-lang.org/stable/std/ffi/type.c_double.html)
-- [`ffi::c_float`](https://doc.rust-lang.org/stable/std/ffi/type.c_float.html)
-- [`ffi::c_int`](https://doc.rust-lang.org/stable/std/ffi/type.c_int.html)
-- [`ffi::c_long`](https://doc.rust-lang.org/stable/std/ffi/type.c_long.html)
-- [`ffi::c_longlong`](https://doc.rust-lang.org/stable/std/ffi/type.c_longlong.html)
-- [`ffi::c_schar`](https://doc.rust-lang.org/stable/std/ffi/type.c_schar.html)
-- [`ffi::c_short`](https://doc.rust-lang.org/stable/std/ffi/type.c_short.html)
-- [`ffi::c_uchar`](https://doc.rust-lang.org/stable/std/ffi/type.c_uchar.html)
-- [`ffi::c_uint`](https://doc.rust-lang.org/stable/std/ffi/type.c_uint.html)
-- [`ffi::c_ulong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulong.html)
-- [`ffi::c_ulonglong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulonglong.html)
-- [`ffi::c_ushort`](https://doc.rust-lang.org/stable/std/ffi/type.c_ushort.html)
+- [`ffi::c_char`](https://doc.rust-lang.org/std/ffi/type.c_char.html)
+- [`ffi::c_double`](https://doc.rust-lang.org/std/ffi/type.c_double.html)
+- [`ffi::c_float`](https://doc.rust-lang.org/std/ffi/type.c_float.html)
+- [`ffi::c_int`](https://doc.rust-lang.org/std/ffi/type.c_int.html)
+- [`ffi::c_long`](https://doc.rust-lang.org/std/ffi/type.c_long.html)
+- [`ffi::c_longlong`](https://doc.rust-lang.org/std/ffi/type.c_longlong.html)
+- [`ffi::c_schar`](https://doc.rust-lang.org/std/ffi/type.c_schar.html)
+- [`ffi::c_short`](https://doc.rust-lang.org/std/ffi/type.c_short.html)
+- [`ffi::c_uchar`](https://doc.rust-lang.org/std/ffi/type.c_uchar.html)
+- [`ffi::c_uint`](https://doc.rust-lang.org/std/ffi/type.c_uint.html)
+- [`ffi::c_ulong`](https://doc.rust-lang.org/std/ffi/type.c_ulong.html)
+- [`ffi::c_ulonglong`](https://doc.rust-lang.org/std/ffi/type.c_ulonglong.html)
+- [`ffi::c_ushort`](https://doc.rust-lang.org/std/ffi/type.c_ushort.html)
These APIs are now usable in const contexts:
-- [`slice::from_raw_parts`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts.html)
+- [`slice::from_raw_parts`](https://doc.rust-lang.org/core/slice/fn.from_raw_parts.html)
Cargo
-----
- [Packages can now inherit settings from the workspace so that the settings
can be centralized in one place.](https://github.com/rust-lang/cargo/pull/10859) See
- [`workspace.package`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacepackage-table)
+ [`workspace.package`](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-workspacepackage-table)
and
- [`workspace.dependencies`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacedependencies-table)
+ [`workspace.dependencies`](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-workspacedependencies-table)
for more details on how to define these common settings.
- [Cargo commands can now accept multiple `--target` flags to build for
multiple targets at once](https://github.com/rust-lang/cargo/pull/10766), and the
- [`build.target`](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildtarget)
+ [`build.target`](https://doc.rust-lang.org/cargo/reference/config.html#buildtarget)
config option may now take an array of multiple targets.
- [The `--jobs` argument can now take a negative number to count backwards from
the max CPUs.](https://github.com/rust-lang/cargo/pull/10844)
- [`cargo add` will now update `Cargo.lock`.](https://github.com/rust-lang/cargo/pull/10902)
- [Added](https://github.com/rust-lang/cargo/pull/10838) the
- [`--crate-type`](https://doc.rust-lang.org/nightly/cargo/commands/cargo-rustc.html#option-cargo-rustc---crate-type)
+ [`--crate-type`](https://doc.rust-lang.org/cargo/commands/cargo-rustc.html#option-cargo-rustc---crate-type)
flag to `cargo rustc` to override the crate type.
- [Significantly improved the performance fetching git dependencies from GitHub
when using a hash in the `rev` field.](https://github.com/rust-lang/cargo/pull/10079)
@@ -819,104 +818,104 @@ Version 1.63.0 (2022-08-11)
Language
--------
-- [Remove migrate borrowck mode for pre-NLL errors.][95565]
-- [Modify MIR building to drop repeat expressions with length zero.][95953]
-- [Remove label/lifetime shadowing warnings.][96296]
-- [Allow explicit generic arguments in the presence of `impl Trait` args.][96868]
-- [Make `cenum_impl_drop_cast` warnings deny-by-default.][97652]
-- [Prevent unwinding when `-C panic=abort` is used regardless of declared ABI.][96959]
-- [lub: don't bail out due to empty binders.][97867]
+- [Remove migrate borrowck mode for pre-NLL errors.](https://github.com/rust-lang/rust/pull/95565/)
+- [Modify MIR building to drop repeat expressions with length zero.](https://github.com/rust-lang/rust/pull/95953/)
+- [Remove label/lifetime shadowing warnings.](https://github.com/rust-lang/rust/pull/96296/)
+- [Allow explicit generic arguments in the presence of `impl Trait` args.](https://github.com/rust-lang/rust/pull/96868/)
+- [Make `cenum_impl_drop_cast` warnings deny-by-default.](https://github.com/rust-lang/rust/pull/97652/)
+- [Prevent unwinding when `-C panic=abort` is used regardless of declared ABI.](https://github.com/rust-lang/rust/pull/96959/)
+- [lub: don't bail out due to empty binders.](https://github.com/rust-lang/rust/pull/97867/)
Compiler
--------
-- [Stabilize the `bundle` native library modifier,][95818] also removing the
+- [Stabilize the `bundle` native library modifier,](https://github.com/rust-lang/rust/pull/95818/) also removing the
deprecated `static-nobundle` linking kind.
-- [Add Apple WatchOS compile targets\*.][95243]
-- [Add a Windows application manifest to rustc-main.][96737]
+- [Add Apple WatchOS compile targets\*.](https://github.com/rust-lang/rust/pull/95243/)
+- [Add a Windows application manifest to rustc-main.](https://github.com/rust-lang/rust/pull/96737/)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
Libraries
---------
-- [Implement `Copy`, `Clone`, `PartialEq` and `Eq` for `core::fmt::Alignment`.][94530]
-- [Extend `ptr::null` and `null_mut` to all thin (including extern) types.][94954]
-- [`impl Read and Write for VecDeque`.][95632]
-- [STD support for the Nintendo 3DS.][95897]
-- [Use rounding in float to Duration conversion methods.][96051]
-- [Make write/print macros eagerly drop temporaries.][96455]
-- [Implement internal traits that enable `[OsStr]::join`.][96881]
-- [Implement `Hash` for `core::alloc::Layout`.][97034]
-- [Add capacity documentation for `OsString`.][97202]
-- [Put a bound on collection misbehavior.][97316]
-- [Make `std::mem::needs_drop` accept `?Sized`.][97675]
-- [`impl Termination for Infallible` and then make the `Result` impls of `Termination` more generic.][97803]
-- [Document Rust's stance on `/proc/self/mem`.][97837]
+- [Implement `Copy`, `Clone`, `PartialEq` and `Eq` for `core::fmt::Alignment`.](https://github.com/rust-lang/rust/pull/94530/)
+- [Extend `ptr::null` and `null_mut` to all thin (including extern) types.](https://github.com/rust-lang/rust/pull/94954/)
+- [`impl Read and Write for VecDeque`.](https://github.com/rust-lang/rust/pull/95632/)
+- [STD support for the Nintendo 3DS.](https://github.com/rust-lang/rust/pull/95897/)
+- [Use rounding in float to Duration conversion methods.](https://github.com/rust-lang/rust/pull/96051/)
+- [Make write/print macros eagerly drop temporaries.](https://github.com/rust-lang/rust/pull/96455/)
+- [Implement internal traits that enable `[OsStr]::join`.](https://github.com/rust-lang/rust/pull/96881/)
+- [Implement `Hash` for `core::alloc::Layout`.](https://github.com/rust-lang/rust/pull/97034/)
+- [Add capacity documentation for `OsString`.](https://github.com/rust-lang/rust/pull/97202/)
+- [Put a bound on collection misbehavior.](https://github.com/rust-lang/rust/pull/97316/)
+- [Make `std::mem::needs_drop` accept `?Sized`.](https://github.com/rust-lang/rust/pull/97675/)
+- [`impl Termination for Infallible` and then make the `Result` impls of `Termination` more generic.](https://github.com/rust-lang/rust/pull/97803/)
+- [Document Rust's stance on `/proc/self/mem`.](https://github.com/rust-lang/rust/pull/97837/)
Stabilized APIs
---------------
-- [`array::from_fn`]
-- [`Box::into_pin`]
-- [`BinaryHeap::try_reserve`]
-- [`BinaryHeap::try_reserve_exact`]
-- [`OsString::try_reserve`]
-- [`OsString::try_reserve_exact`]
-- [`PathBuf::try_reserve`]
-- [`PathBuf::try_reserve_exact`]
-- [`Path::try_exists`]
-- [`Ref::filter_map`]
-- [`RefMut::filter_map`]
-- [`NonNull::<[T]>::len`][`NonNull::::len`]
-- [`ToOwned::clone_into`]
-- [`Ipv6Addr::to_ipv4_mapped`]
-- [`unix::io::AsFd`]
-- [`unix::io::BorrowedFd<'fd>`]
-- [`unix::io::OwnedFd`]
-- [`windows::io::AsHandle`]
-- [`windows::io::BorrowedHandle<'handle>`]
-- [`windows::io::OwnedHandle`]
-- [`windows::io::HandleOrInvalid`]
-- [`windows::io::HandleOrNull`]
-- [`windows::io::InvalidHandleError`]
-- [`windows::io::NullHandleError`]
-- [`windows::io::AsSocket`]
-- [`windows::io::BorrowedSocket<'handle>`]
-- [`windows::io::OwnedSocket`]
-- [`thread::scope`]
-- [`thread::Scope`]
-- [`thread::ScopedJoinHandle`]
+- [`array::from_fn`](https://doc.rust-lang.org/std/array/fn.from_fn.html)
+- [`Box::into_pin`](https://doc.rust-lang.org/std/boxed/struct.Box.html#method.into_pin)
+- [`BinaryHeap::try_reserve`](https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#method.try_reserve)
+- [`BinaryHeap::try_reserve_exact`](https://doc.rust-lang.org/alloc/collections/binary_heap/struct.BinaryHeap.html#method.try_reserve_exact)
+- [`OsString::try_reserve`](https://doc.rust-lang.org/std/ffi/struct.OsString.html#method.try_reserve)
+- [`OsString::try_reserve_exact`](https://doc.rust-lang.org/std/ffi/struct.OsString.html#method.try_reserve_exact)
+- [`PathBuf::try_reserve`](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.try_reserve)
+- [`PathBuf::try_reserve_exact`](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.try_reserve_exact)
+- [`Path::try_exists`](https://doc.rust-lang.org/std/path/struct.Path.html#method.try_exists)
+- [`Ref::filter_map`](https://doc.rust-lang.org/std/cell/struct.Ref.html#method.filter_map)
+- [`RefMut::filter_map`](https://doc.rust-lang.org/std/cell/struct.RefMut.html#method.filter_map)
+- [`NonNull::<[T]>::len`](https://doc.rust-lang.org/std/ptr/struct.NonNull.html#method.len)
+- [`ToOwned::clone_into`](https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#method.clone_into)
+- [`Ipv6Addr::to_ipv4_mapped`](https://doc.rust-lang.org/std/net/struct.Ipv6Addr.html#method.to_ipv4_mapped)
+- [`unix::io::AsFd`](https://doc.rust-lang.org/std/os/unix/io/trait.AsFd.html)
+- [`unix::io::BorrowedFd<'fd>`](https://doc.rust-lang.org/std/os/unix/io/struct.BorrowedFd.html)
+- [`unix::io::OwnedFd`](https://doc.rust-lang.org/std/os/unix/io/struct.OwnedFd.html)
+- [`windows::io::AsHandle`](https://doc.rust-lang.org/std/os/windows/io/trait.AsHandle.html)
+- [`windows::io::BorrowedHandle<'handle>`](https://doc.rust-lang.org/std/os/windows/io/struct.BorrowedHandle.html)
+- [`windows::io::OwnedHandle`](https://doc.rust-lang.org/std/os/windows/io/struct.OwnedHandle.html)
+- [`windows::io::HandleOrInvalid`](https://doc.rust-lang.org/std/os/windows/io/struct.HandleOrInvalid.html)
+- [`windows::io::HandleOrNull`](https://doc.rust-lang.org/std/os/windows/io/struct.HandleOrNull.html)
+- [`windows::io::InvalidHandleError`](https://doc.rust-lang.org/std/os/windows/io/struct.InvalidHandleError.html)
+- [`windows::io::NullHandleError`](https://doc.rust-lang.org/std/os/windows/io/struct.NullHandleError.html)
+- [`windows::io::AsSocket`](https://doc.rust-lang.org/std/os/windows/io/trait.AsSocket.html)
+- [`windows::io::BorrowedSocket<'handle>`](https://doc.rust-lang.org/std/os/windows/io/struct.BorrowedSocket.html)
+- [`windows::io::OwnedSocket`](https://doc.rust-lang.org/std/os/windows/io/struct.OwnedSocket.html)
+- [`thread::scope`](https://doc.rust-lang.org/std/thread/fn.scope.html)
+- [`thread::Scope`](https://doc.rust-lang.org/std/thread/struct.Scope.html)
+- [`thread::ScopedJoinHandle`](https://doc.rust-lang.org/std/thread/struct.ScopedJoinHandle.html)
These APIs are now usable in const contexts:
-- [`array::from_ref`]
-- [`slice::from_ref`]
-- [`intrinsics::copy`]
-- [`intrinsics::copy_nonoverlapping`]
-- [`<*const T>::copy_to`]
-- [`<*const T>::copy_to_nonoverlapping`]
-- [`<*mut T>::copy_to`]
-- [`<*mut T>::copy_to_nonoverlapping`]
-- [`<*mut T>::copy_from`]
-- [`<*mut T>::copy_from_nonoverlapping`]
-- [`str::from_utf8`]
-- [`Utf8Error::error_len`]
-- [`Utf8Error::valid_up_to`]
-- [`Condvar::new`]
-- [`Mutex::new`]
-- [`RwLock::new`]
+- [`array::from_ref`](https://doc.rust-lang.org/std/array/fn.from_ref.html)
+- [`slice::from_ref`](https://doc.rust-lang.org/std/slice/fn.from_ref.html)
+- [`intrinsics::copy`](https://doc.rust-lang.org/std/intrinsics/fn.copy.html)
+- [`intrinsics::copy_nonoverlapping`](https://doc.rust-lang.org/std/intrinsics/fn.copy_nonoverlapping.html)
+- [`<*const T>::copy_to`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to)
+- [`<*const T>::copy_to_nonoverlapping`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to_nonoverlapping)
+- [`<*mut T>::copy_to`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to-1)
+- [`<*mut T>::copy_to_nonoverlapping`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to_nonoverlapping-1)
+- [`<*mut T>::copy_from`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_from)
+- [`<*mut T>::copy_from_nonoverlapping`](https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_from_nonoverlapping)
+- [`str::from_utf8`](https://doc.rust-lang.org/std/str/fn.from_utf8.html)
+- [`Utf8Error::error_len`](https://doc.rust-lang.org/std/str/struct.Utf8Error.html#method.error_len)
+- [`Utf8Error::valid_up_to`](http://doc.rust-lang.org/std/str/struct.Utf8Error.html#method.valid_up_to)
+- [`Condvar::new`](https://doc.rust-lang.org/std/sync/struct.Condvar.html#method.new)
+- [`Mutex::new`](https://doc.rust-lang.org/std/sync/struct.Mutex.html#method.new)
+- [`RwLock::new`](https://doc.rust-lang.org/std/sync/struct.RwLock.html#method.new)
Cargo
-----
-- [Stabilize the `--config path` command-line argument.][cargo/10755]
-- [Expose rust-version in the environment as `CARGO_PKG_RUST_VERSION`.][cargo/10713]
+- [Stabilize the `--config path` command-line argument.](https://github.com/rust-lang/cargo/pull/10755/)
+- [Expose rust-version in the environment as `CARGO_PKG_RUST_VERSION`.](https://github.com/rust-lang/cargo/pull/10713/)
Compatibility Notes
-------------------
-- [`#[link]` attributes are now checked more strictly,][96885] which may introduce
+- [`#[link]` attributes are now checked more strictly,](https://github.com/rust-lang/rust/pull/96885/) which may introduce
errors for invalid attribute arguments that were previously ignored.
-- [Rounding is now used when converting a float to a `Duration`.][96051] The converted
+- [Rounding is now used when converting a float to a `Duration`.](https://github.com/rust-lang/rust/pull/96051/) The converted
duration can differ slightly from what it was.
Internal Changes
@@ -926,83 +925,10 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [Prepare Rust for LLVM opaque pointers.][94214]
-
-[94214]: https://github.com/rust-lang/rust/pull/94214/
-[94530]: https://github.com/rust-lang/rust/pull/94530/
-[94954]: https://github.com/rust-lang/rust/pull/94954/
-[95243]: https://github.com/rust-lang/rust/pull/95243/
-[95565]: https://github.com/rust-lang/rust/pull/95565/
-[95632]: https://github.com/rust-lang/rust/pull/95632/
-[95818]: https://github.com/rust-lang/rust/pull/95818/
-[95897]: https://github.com/rust-lang/rust/pull/95897/
-[95953]: https://github.com/rust-lang/rust/pull/95953/
-[96051]: https://github.com/rust-lang/rust/pull/96051/
-[96296]: https://github.com/rust-lang/rust/pull/96296/
-[96455]: https://github.com/rust-lang/rust/pull/96455/
-[96737]: https://github.com/rust-lang/rust/pull/96737/
-[96868]: https://github.com/rust-lang/rust/pull/96868/
-[96881]: https://github.com/rust-lang/rust/pull/96881/
-[96885]: https://github.com/rust-lang/rust/pull/96885/
-[96959]: https://github.com/rust-lang/rust/pull/96959/
-[97034]: https://github.com/rust-lang/rust/pull/97034/
-[97202]: https://github.com/rust-lang/rust/pull/97202/
-[97316]: https://github.com/rust-lang/rust/pull/97316/
-[97652]: https://github.com/rust-lang/rust/pull/97652/
-[97675]: https://github.com/rust-lang/rust/pull/97675/
-[97803]: https://github.com/rust-lang/rust/pull/97803/
-[97837]: https://github.com/rust-lang/rust/pull/97837/
-[97867]: https://github.com/rust-lang/rust/pull/97867/
-[cargo/10713]: https://github.com/rust-lang/cargo/pull/10713/
-[cargo/10755]: https://github.com/rust-lang/cargo/pull/10755/
-
-[`array::from_fn`]: https://doc.rust-lang.org/stable/std/array/fn.from_fn.html
-[`Box::into_pin`]: https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.into_pin
-[`BinaryHeap::try_reserve_exact`]: https://doc.rust-lang.org/stable/alloc/collections/binary_heap/struct.BinaryHeap.html#method.try_reserve_exact
-[`BinaryHeap::try_reserve`]: https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.try_reserve
-[`OsString::try_reserve`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.try_reserve
-[`OsString::try_reserve_exact`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.try_reserve_exact
-[`PathBuf::try_reserve`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.try_reserve
-[`PathBuf::try_reserve_exact`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.try_reserve_exact
-[`Path::try_exists`]: https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.try_exists
-[`Ref::filter_map`]: https://doc.rust-lang.org/stable/std/cell/struct.Ref.html#method.filter_map
-[`RefMut::filter_map`]: https://doc.rust-lang.org/stable/std/cell/struct.RefMut.html#method.filter_map
-[`NonNull::::len`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.len
-[`ToOwned::clone_into`]: https://doc.rust-lang.org/stable/std/borrow/trait.ToOwned.html#method.clone_into
-[`Ipv6Addr::to_ipv4_mapped`]: https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.to_ipv4_mapped
-[`unix::io::AsFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsFd.html
-[`unix::io::BorrowedFd<'fd>`]: https://doc.rust-lang.org/stable/std/os/unix/io/struct.BorrowedFd.html
-[`unix::io::OwnedFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/struct.OwnedFd.html
-[`windows::io::AsHandle`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsHandle.html
-[`windows::io::BorrowedHandle<'handle>`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.BorrowedHandle.html
-[`windows::io::OwnedHandle`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html
-[`windows::io::HandleOrInvalid`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.HandleOrInvalid.html
-[`windows::io::HandleOrNull`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.HandleOrNull.html
-[`windows::io::InvalidHandleError`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.InvalidHandleError.html
-[`windows::io::NullHandleError`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.NullHandleError.html
-[`windows::io::AsSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html
-[`windows::io::BorrowedSocket<'handle>`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.BorrowedSocket.html
-[`windows::io::OwnedSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedSocket.html
-[`thread::scope`]: https://doc.rust-lang.org/stable/std/thread/fn.scope.html
-[`thread::Scope`]: https://doc.rust-lang.org/stable/std/thread/struct.Scope.html
-[`thread::ScopedJoinHandle`]: https://doc.rust-lang.org/stable/std/thread/struct.ScopedJoinHandle.html
-
-[`array::from_ref`]: https://doc.rust-lang.org/stable/std/array/fn.from_ref.html
-[`slice::from_ref`]: https://doc.rust-lang.org/stable/std/slice/fn.from_ref.html
-[`intrinsics::copy`]: https://doc.rust-lang.org/stable/std/intrinsics/fn.copy.html
-[`intrinsics::copy_nonoverlapping`]: https://doc.rust-lang.org/stable/std/intrinsics/fn.copy_nonoverlapping.html
-[`<*const T>::copy_to`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to
-[`<*const T>::copy_to_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to_nonoverlapping
-[`<*mut T>::copy_to`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to-1
-[`<*mut T>::copy_to_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to_nonoverlapping-1
-[`<*mut T>::copy_from`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_from
-[`<*mut T>::copy_from_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_from_nonoverlapping
-[`str::from_utf8`]: https://doc.rust-lang.org/stable/std/str/fn.from_utf8.html
-[`Utf8Error::error_len`]: https://doc.rust-lang.org/stable/std/str/struct.Utf8Error.html#method.error_len
-[`Utf8Error::valid_up_to`]: https://doc.rust-lang.org/stable/std/str/struct.Utf8Error.html#method.valid_up_to
-[`Condvar::new`]: https://doc.rust-lang.org/stable/std/sync/struct.Condvar.html#method.new
-[`Mutex::new`]: https://doc.rust-lang.org/stable/std/sync/struct.Mutex.html#method.new
-[`RwLock::new`]: https://doc.rust-lang.org/stable/std/sync/struct.RwLock.html#method.new
+- [Prepare Rust for LLVM opaque pointers.](https://github.com/rust-lang/rust/pull/94214/)
+
+
+
Version 1.62.1 (2022-07-19)
==========================
@@ -1010,17 +936,12 @@ Version 1.62.1 (2022-07-19)
Rust 1.62.1 addresses a few recent regressions in the compiler and standard
library, and also mitigates a CPU vulnerability on Intel SGX.
-* [The compiler fixed unsound function coercions involving `impl Trait` return types.][98608]
-* [The compiler fixed an incremental compilation bug with `async fn` lifetimes.][98890]
-* [Windows added a fallback for overlapped I/O in synchronous reads and writes.][98950]
+* [The compiler fixed unsound function coercions involving `impl Trait` return types.](https://github.com/rust-lang/rust/issues/98608)
+* [The compiler fixed an incremental compilation bug with `async fn` lifetimes.](https://github.com/rust-lang/rust/issues/98890)
+* [Windows added a fallback for overlapped I/O in synchronous reads and writes.](https://github.com/rust-lang/rust/pull/98950)
* [The `x86_64-fortanix-unknown-sgx` target added a mitigation for the
- MMIO stale data vulnerability][98126], advisory [INTEL-SA-00615].
+ MMIO stale data vulnerability](https://github.com/rust-lang/rust/pull/98126), advisory [INTEL-SA-00615](https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00615.html).
-[98608]: https://github.com/rust-lang/rust/issues/98608
-[98890]: https://github.com/rust-lang/rust/issues/98890
-[98950]: https://github.com/rust-lang/rust/pull/98950
-[98126]: https://github.com/rust-lang/rust/pull/98126
-[INTEL-SA-00615]: https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00615.html
Version 1.62.0 (2022-06-30)
==========================
@@ -1028,25 +949,25 @@ Version 1.62.0 (2022-06-30)
Language
--------
-- [Stabilize `#[derive(Default)]` on enums with a `#[default]` variant][94457]
-- [Teach flow sensitive checks that visibly uninhabited call expressions never return][93313]
-- [Fix constants not getting dropped if part of a diverging expression][94775]
-- [Support unit struct/enum variant in destructuring assignment][95380]
-- [Remove mutable_borrow_reservation_conflict lint and allow the code pattern][96268]
-- [`const` functions may now specify `extern "C"` or `extern "Rust"`][95346]
+- [Stabilize `#[derive(Default)]` on enums with a `#[default]` variant](https://github.com/rust-lang/rust/pull/94457/)
+- [Teach flow sensitive checks that visibly uninhabited call expressions never return](https://github.com/rust-lang/rust/pull/93313/)
+- [Fix constants not getting dropped if part of a diverging expression](https://github.com/rust-lang/rust/pull/94775/)
+- [Support unit struct/enum variant in destructuring assignment](https://github.com/rust-lang/rust/pull/95380/)
+- [Remove mutable_borrow_reservation_conflict lint and allow the code pattern](https://github.com/rust-lang/rust/pull/96268/)
+- [`const` functions may now specify `extern "C"` or `extern "Rust"`](https://github.com/rust-lang/rust/pull/95346/)
Compiler
--------
-- [linker: Stop using whole-archive on dependencies of dylibs][96436]
-- [Make `unaligned_references` lint deny-by-default][95372]
+- [linker: Stop using whole-archive on dependencies of dylibs](https://github.com/rust-lang/rust/pull/96436/)
+- [Make `unaligned_references` lint deny-by-default](https://github.com/rust-lang/rust/pull/95372/)
This lint is also a future compatibility lint, and is expected to eventually
become a hard error.
-- [Only add codegen backend to dep info if -Zbinary-dep-depinfo is used][93969]
-- [Reject `#[thread_local]` attribute on non-static items][95006]
-- [Add tier 3 `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm` targets\*][94872]
-- [Implement a lint to warn about unused macro rules][96150]
-- [Promote `x86_64-unknown-none` target to Tier 2\*][95705]
+- [Only add codegen backend to dep info if -Zbinary-dep-depinfo is used](https://github.com/rust-lang/rust/pull/93969/)
+- [Reject `#[thread_local]` attribute on non-static items](https://github.com/rust-lang/rust/pull/95006/)
+- [Add tier 3 `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm` targets\*](https://github.com/rust-lang/rust/pull/94872/)
+- [Implement a lint to warn about unused macro rules](https://github.com/rust-lang/rust/pull/96150/)
+- [Promote `x86_64-unknown-none` target to Tier 2\*](https://github.com/rust-lang/rust/pull/95705/)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -1054,36 +975,36 @@ Compiler
Libraries
---------
-- [Windows: Use a pipe relay for chaining pipes][95841]
-- [Replace Linux Mutex and Condvar with futex based ones.][95035]
-- [Replace RwLock by a futex based one on Linux][95801]
-- [std: directly use pthread in UNIX parker implementation][96393]
+- [Windows: Use a pipe relay for chaining pipes](https://github.com/rust-lang/rust/pull/95841/)
+- [Replace Linux Mutex and Condvar with futex based ones.](https://github.com/rust-lang/rust/pull/95035/)
+- [Replace RwLock by a futex based one on Linux](https://github.com/rust-lang/rust/pull/95801/)
+- [std: directly use pthread in UNIX parker implementation](https://github.com/rust-lang/rust/pull/96393/)
Stabilized APIs
---------------
-- [`bool::then_some`]
-- [`f32::total_cmp`]
-- [`f64::total_cmp`]
-- [`Stdin::lines`]
-- [`windows::CommandExt::raw_arg`]
-- [`impl Default for AssertUnwindSafe`]
-- [`From> for Rc<[u8]>`][rc-u8-from-str]
-- [`From> for Arc<[u8]>`][arc-u8-from-str]
-- [`FusedIterator for EncodeWide`]
-- [RDM intrinsics on aarch64][stdarch/1285]
+- [`bool::then_some`](https://doc.rust-lang.org/std/primitive.bool.html#method.then_some)
+- [`f32::total_cmp`](https://doc.rust-lang.org/std/primitive.f32.html#method.total_cmp)
+- [`f64::total_cmp`](https://doc.rust-lang.org/std/primitive.f64.html#method.total_cmp)
+- [`Stdin::lines`](https://doc.rust-lang.org/std/io/struct.Stdin.html#method.lines)
+- [`windows::CommandExt::raw_arg`](https://doc.rust-lang.org/std/os/windows/process/trait.CommandExt.html#tymethod.raw_arg)
+- [`impl Default for AssertUnwindSafe`](https://doc.rust-lang.org/std/panic/struct.AssertUnwindSafe.html#impl-Default)
+- [`From> for Rc<[u8]>`](https://doc.rust-lang.org/std/rc/struct.Rc.html#impl-From%3CRc%3Cstr%3E%3E)
+- [`From> for Arc<[u8]>`](https://doc.rust-lang.org/std/sync/struct.Arc.html#impl-From%3CArc%3Cstr%3E%3E)
+- [`FusedIterator for EncodeWide`](https://doc.rust-lang.org/std/os/windows/ffi/struct.EncodeWide.html#impl-FusedIterator)
+- [RDM intrinsics on aarch64](https://github.com/rust-lang/stdarch/pull/1285)
Clippy
------
-- [Create clippy lint against unexpectedly late drop for temporaries in match scrutinee expressions][94206]
+- [Create clippy lint against unexpectedly late drop for temporaries in match scrutinee expressions](https://github.com/rust-lang/rust/pull/94206/)
Cargo
-----
- Added the `cargo add` command for adding dependencies to `Cargo.toml` from
the command-line.
- [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-add.html)
+ [docs](https://doc.rust-lang.org/cargo/commands/cargo-add.html)
- Package ID specs now support `name@version` syntax in addition to the
previous `name:version` to align with the behavior in `cargo add` and other
tools. `cargo install` and `cargo yank` also now support this syntax so the
@@ -1100,57 +1021,22 @@ Compatibility Notes
- `cargo test` now passes `--target` to `rustdoc` if the specified target is
the same as the host target.
[#10594](https://github.com/rust-lang/cargo/pull/10594)
-- [rustdoc: doctests are now run on unexported `macro_rules!` macros, matching other private items][96630]
-- [rustdoc: Remove .woff font files][96279]
-- [Enforce Copy bounds for repeat elements while considering lifetimes][95819]
+- [rustdoc: doctests are now run on unexported `macro_rules!` macros, matching other private items](https://github.com/rust-lang/rust/pull/96630/)
+- [rustdoc: Remove .woff font files](https://github.com/rust-lang/rust/pull/96279/)
+- [Enforce Copy bounds for repeat elements while considering lifetimes](https://github.com/rust-lang/rust/pull/95819/)
- [Windows: Fix potential unsoundness by aborting if `File` reads or writes cannot
- complete synchronously][95469].
+ complete synchronously](https://github.com/rust-lang/rust/pull/95469/).
Internal Changes
----------------
-- [Unify ReentrantMutex implementations across all platforms][96042]
+- [Unify ReentrantMutex implementations across all platforms](https://github.com/rust-lang/rust/pull/96042/)
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-[93313]: https://github.com/rust-lang/rust/pull/93313/
-[93969]: https://github.com/rust-lang/rust/pull/93969/
-[94206]: https://github.com/rust-lang/rust/pull/94206/
-[94457]: https://github.com/rust-lang/rust/pull/94457/
-[94775]: https://github.com/rust-lang/rust/pull/94775/
-[94872]: https://github.com/rust-lang/rust/pull/94872/
-[95006]: https://github.com/rust-lang/rust/pull/95006/
-[95035]: https://github.com/rust-lang/rust/pull/95035/
-[95346]: https://github.com/rust-lang/rust/pull/95346/
-[95372]: https://github.com/rust-lang/rust/pull/95372/
-[95380]: https://github.com/rust-lang/rust/pull/95380/
-[95431]: https://github.com/rust-lang/rust/pull/95431/
-[95469]: https://github.com/rust-lang/rust/pull/95469/
-[95705]: https://github.com/rust-lang/rust/pull/95705/
-[95801]: https://github.com/rust-lang/rust/pull/95801/
-[95819]: https://github.com/rust-lang/rust/pull/95819/
-[95841]: https://github.com/rust-lang/rust/pull/95841/
-[96042]: https://github.com/rust-lang/rust/pull/96042/
-[96150]: https://github.com/rust-lang/rust/pull/96150/
-[96268]: https://github.com/rust-lang/rust/pull/96268/
-[96279]: https://github.com/rust-lang/rust/pull/96279/
-[96393]: https://github.com/rust-lang/rust/pull/96393/
-[96436]: https://github.com/rust-lang/rust/pull/96436/
-[96557]: https://github.com/rust-lang/rust/pull/96557/
-[96630]: https://github.com/rust-lang/rust/pull/96630/
-
-[`bool::then_some`]: https://doc.rust-lang.org/stable/std/primitive.bool.html#method.then_some
-[`f32::total_cmp`]: https://doc.rust-lang.org/stable/std/primitive.f32.html#method.total_cmp
-[`f64::total_cmp`]: https://doc.rust-lang.org/stable/std/primitive.f64.html#method.total_cmp
-[`Stdin::lines`]: https://doc.rust-lang.org/stable/std/io/struct.Stdin.html#method.lines
-[`impl Default for AssertUnwindSafe`]: https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-Default
-[rc-u8-from-str]: https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#impl-From%3CRc%3Cstr%3E%3E
-[arc-u8-from-str]: https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#impl-From%3CArc%3Cstr%3E%3E
-[stdarch/1285]: https://github.com/rust-lang/stdarch/pull/1285
-[`windows::CommandExt::raw_arg`]: https://doc.rust-lang.org/stable/std/os/windows/process/trait.CommandExt.html#tymethod.raw_arg
-[`FusedIterator for EncodeWide`]: https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-FusedIterator
+
Version 1.61.0 (2022-05-19)
==========================
@@ -1158,52 +1044,52 @@ Version 1.61.0 (2022-05-19)
Language
--------
-- [`const fn` signatures can now include generic trait bounds][93827]
-- [`const fn` signatures can now use `impl Trait` in argument and return position][93827]
-- [Function pointers can now be created, cast, and passed around in a `const fn`][93827]
-- [Recursive calls can now set the value of a function's opaque `impl Trait` return type][94081]
+- [`const fn` signatures can now include generic trait bounds](https://github.com/rust-lang/rust/pull/93827/)
+- [`const fn` signatures can now use `impl Trait` in argument and return position](https://github.com/rust-lang/rust/pull/93827/)
+- [Function pointers can now be created, cast, and passed around in a `const fn`](https://github.com/rust-lang/rust/pull/93827/)
+- [Recursive calls can now set the value of a function's opaque `impl Trait` return type](https://github.com/rust-lang/rust/pull/94081/)
Compiler
--------
-- [Linking modifier syntax in `#[link]` attributes and on the command line, as well as the `whole-archive` modifier specifically, are now supported][93901]
-- [The `char` type is now described as UTF-32 in debuginfo][89887]
-- The [`#[target_feature]`][target_feature] attribute [can now be used with aarch64 features][90621]
-- X86 [`#[target_feature = "adx"]` is now stable][93745]
+- [Linking modifier syntax in `#[link]` attributes and on the command line, as well as the `whole-archive` modifier specifically, are now supported](https://github.com/rust-lang/rust/pull/93901/)
+- [The `char` type is now described as UTF-32 in debuginfo](https://github.com/rust-lang/rust/pull/89887/)
+- The [`#[target_feature]`](https://doc.rust-lang.org/reference/attributes/codegen.html#the-target_feature-attribute) attribute [can now be used with aarch64 features](https://github.com/rust-lang/rust/pull/90621/)
+- X86 [`#[target_feature = "adx"]` is now stable](https://github.com/rust-lang/rust/pull/93745/)
Libraries
---------
-- [`ManuallyDrop` is now documented to have the same layout as `T`][88375]
-- [`#[ignore = "…"]` messages are printed when running tests][92714]
-- [Consistently show absent stdio handles on Windows as NULL handles][93263]
-- [Make `std::io::stdio::lock()` return `'static` handles.][93965] Previously, the creation of locked handles to stdin/stdout/stderr would borrow the handles being locked, which prevented writing `let out = std::io::stdout().lock();` because `out` would outlive the return value of `stdout()`. Such code now works, eliminating a common pitfall that affected many Rust users.
-- [`Vec::from_raw_parts` is now less restrictive about its inputs][95016]
-- [`std::thread::available_parallelism` now takes cgroup quotas into account.][92697] Since `available_parallelism` is often used to create a thread pool for parallel computation, which may be CPU-bound for performance, `available_parallelism` will return a value consistent with the ability to use that many threads continuously, if possible. For instance, in a container with 8 virtual CPUs but quotas only allowing for 50% usage, `available_parallelism` will return 4.
+- [`ManuallyDrop` is now documented to have the same layout as `T`](https://github.com/rust-lang/rust/pull/88375/)
+- [`#[ignore = "…"]` messages are printed when running tests](https://github.com/rust-lang/rust/pull/92714/)
+- [Consistently show absent stdio handles on Windows as NULL handles](https://github.com/rust-lang/rust/pull/93263/)
+- [Make `std::io::stdio::lock()` return `'static` handles.](https://github.com/rust-lang/rust/pull/93965/) Previously, the creation of locked handles to stdin/stdout/stderr would borrow the handles being locked, which prevented writing `let out = std::io::stdout().lock();` because `out` would outlive the return value of `stdout()`. Such code now works, eliminating a common pitfall that affected many Rust users.
+- [`Vec::from_raw_parts` is now less restrictive about its inputs](https://github.com/rust-lang/rust/pull/95016/)
+- [`std::thread::available_parallelism` now takes cgroup quotas into account.](https://github.com/rust-lang/rust/pull/92697/) Since `available_parallelism` is often used to create a thread pool for parallel computation, which may be CPU-bound for performance, `available_parallelism` will return a value consistent with the ability to use that many threads continuously, if possible. For instance, in a container with 8 virtual CPUs but quotas only allowing for 50% usage, `available_parallelism` will return 4.
Stabilized APIs
---------------
-- [`Pin::static_mut`]
-- [`Pin::static_ref`]
-- [`Vec::retain_mut`]
-- [`VecDeque::retain_mut`]
-- [`Write` for `Cursor<[u8; N]>`][cursor-write-array]
-- [`std::os::unix::net::SocketAddr::from_pathname`]
-- [`std::process::ExitCode`] and [`std::process::Termination`]. The stabilization of these two APIs now makes it possible for programs to return errors from `main` with custom exit codes.
-- [`std::thread::JoinHandle::is_finished`]
+- [`Pin::static_mut`](https://doc.rust-lang.org/std/pin/struct.Pin.html#method.static_mut)
+- [`Pin::static_ref`](https://doc.rust-lang.org/std/pin/struct.Pin.html#method.static_ref)
+- [`Vec::retain_mut`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.retain_mut)
+- [`VecDeque::retain_mut`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.retain_mut)
+- [`Write` for `Cursor<[u8; N]>`](https://doc.rust-lang.org/std/io/struct.Cursor.html#impl-Write-4)
+- [`std::os::unix::net::SocketAddr::from_pathname`](https://doc.rust-lang.org/std/os/unix/net/struct.SocketAddr.html#method.from_pathname)
+- [`std::process::ExitCode`](https://doc.rust-lang.org/std/process/struct.ExitCode.html) and [`std::process::Termination`](https://doc.rust-lang.org/std/process/trait.Termination.html). The stabilization of these two APIs now makes it possible for programs to return errors from `main` with custom exit codes.
+- [`std::thread::JoinHandle::is_finished`](https://doc.rust-lang.org/std/thread/struct.JoinHandle.html#method.is_finished)
These APIs are now usable in const contexts:
-- [`<*const T>::offset` and `<*mut T>::offset`][ptr-offset]
-- [`<*const T>::wrapping_offset` and `<*mut T>::wrapping_offset`][ptr-wrapping_offset]
-- [`<*const T>::add` and `<*mut T>::add`][ptr-add]
-- [`<*const T>::sub` and `<*mut T>::sub`][ptr-sub]
-- [`<*const T>::wrapping_add` and `<*mut T>::wrapping_add`][ptr-wrapping_add]
-- [`<*const T>::wrapping_sub` and `<*mut T>::wrapping_sub`][ptr-wrapping_sub]
-- [`<[T]>::as_mut_ptr`][slice-as_mut_ptr]
-- [`<[T]>::as_ptr_range`][slice-as_ptr_range]
-- [`<[T]>::as_mut_ptr_range`][slice-as_mut_ptr_range]
+- [`<*const T>::offset` and `<*mut T>::offset`](https://doc.rust-lang.org/std/primitive.pointer.html#method.offset)
+- [`<*const T>::wrapping_offset` and `<*mut T>::wrapping_offset`](https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset)
+- [`<*const T>::add` and `<*mut T>::add`](https://doc.rust-lang.org/std/primitive.pointer.html#method.add)
+- [`<*const T>::sub` and `<*mut T>::sub`](https://doc.rust-lang.org/std/primitive.pointer.html#method.sub)
+- [`<*const T>::wrapping_add` and `<*mut T>::wrapping_add`](https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_add)
+- [`<*const T>::wrapping_sub` and `<*mut T>::wrapping_sub`](https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_sub)
+- [`<[T]>::as_mut_ptr`](https://doc.rust-lang.org/std/primitive.slice.html#method.as_mut_ptr)
+- [`<[T]>::as_ptr_range`](https://doc.rust-lang.org/std/primitive.slice.html#method.as_ptr_range)
+- [`<[T]>::as_mut_ptr_range`](https://doc.rust-lang.org/std/primitive.slice.html#method.as_mut_ptr_range)
Cargo
-----
@@ -1213,16 +1099,16 @@ No feature changes, but see compatibility notes.
Compatibility Notes
-------------------
-- Previously native static libraries were linked as `whole-archive` in some cases, but now rustc tries not to use `whole-archive` unless explicitly requested. This [change][93901] may result in linking errors in some cases. To fix such errors, native libraries linked from the command line, build scripts, or [`#[link]` attributes][link-attr] need to
+- Previously native static libraries were linked as `whole-archive` in some cases, but now rustc tries not to use `whole-archive` unless explicitly requested. This [change](https://github.com/rust-lang/rust/pull/93901/) may result in linking errors in some cases. To fix such errors, native libraries linked from the command line, build scripts, or [`#[link]` attributes](https://doc.rust-lang.org/reference/items/external-blocks.html#the-link-attribute) need to
- (more common) either be reordered to respect dependencies between them (if `a` depends on `b` then `a` should go first and `b` second)
- - (less common) or be updated to use the [`+whole-archive`] modifier.
-- [Catching a second unwind from FFI code while cleaning up from a Rust panic now causes the process to abort][92911]
-- [Proc macros no longer see `ident` matchers wrapped in groups][92472]
-- [The number of `#` in `r#` raw string literals is now required to be less than 256][95251]
-- [When checking that a dyn type satisfies a trait bound, supertrait bounds are now enforced][92285]
-- [`cargo vendor` now only accepts one value for each `--sync` flag][cargo/10448]
-- [`cfg` predicates in `all()` and `any()` are always evaluated to detect errors, instead of short-circuiting.][94295] The compatibility considerations here arise in nightly-only code that used the short-circuiting behavior of `all` to write something like `cfg(all(feature = "nightly", syntax-requiring-nightly))`, which will now fail to compile. Instead, use either `cfg_attr(feature = "nightly", ...)` or nested uses of `cfg`.
-- [bootstrap: static-libstdcpp is now enabled by default, and can now be disabled when llvm-tools is enabled][94832]
+ - (less common) or be updated to use the [`+whole-archive`](https://doc.rust-lang.org/rustc/command-line-arguments.html#linking-modifiers-whole-archive) modifier.
+- [Catching a second unwind from FFI code while cleaning up from a Rust panic now causes the process to abort](https://github.com/rust-lang/rust/pull/92911/)
+- [Proc macros no longer see `ident` matchers wrapped in groups](https://github.com/rust-lang/rust/pull/92472/)
+- [The number of `#` in `r#` raw string literals is now required to be less than 256](https://github.com/rust-lang/rust/pull/95251/)
+- [When checking that a dyn type satisfies a trait bound, supertrait bounds are now enforced](https://github.com/rust-lang/rust/pull/92285/)
+- [`cargo vendor` now only accepts one value for each `--sync` flag](https://github.com/rust-lang/cargo/pull/10448/)
+- [`cfg` predicates in `all()` and `any()` are always evaluated to detect errors, instead of short-circuiting.](https://github.com/rust-lang/rust/pull/94295/) The compatibility considerations here arise in nightly-only code that used the short-circuiting behavior of `all` to write something like `cfg(all(feature = "nightly", syntax-requiring-nightly))`, which will now fail to compile. Instead, use either `cfg_attr(feature = "nightly", ...)` or nested uses of `cfg`.
+- [bootstrap: static-libstdcpp is now enabled by default, and can now be disabled when llvm-tools is enabled](https://github.com/rust-lang/rust/pull/94832/)
Internal Changes
----------------
@@ -1231,51 +1117,9 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [debuginfo: Refactor debuginfo generation for types][94261]
-- [Remove the everybody loops pass][93913]
-
-[88375]: https://github.com/rust-lang/rust/pull/88375/
-[89887]: https://github.com/rust-lang/rust/pull/89887/
-[90621]: https://github.com/rust-lang/rust/pull/90621/
-[92285]: https://github.com/rust-lang/rust/pull/92285/
-[92472]: https://github.com/rust-lang/rust/pull/92472/
-[92697]: https://github.com/rust-lang/rust/pull/92697/
-[92714]: https://github.com/rust-lang/rust/pull/92714/
-[92911]: https://github.com/rust-lang/rust/pull/92911/
-[93263]: https://github.com/rust-lang/rust/pull/93263/
-[93745]: https://github.com/rust-lang/rust/pull/93745/
-[93827]: https://github.com/rust-lang/rust/pull/93827/
-[93901]: https://github.com/rust-lang/rust/pull/93901/
-[93913]: https://github.com/rust-lang/rust/pull/93913/
-[93965]: https://github.com/rust-lang/rust/pull/93965/
-[94081]: https://github.com/rust-lang/rust/pull/94081/
-[94261]: https://github.com/rust-lang/rust/pull/94261/
-[94295]: https://github.com/rust-lang/rust/pull/94295/
-[94832]: https://github.com/rust-lang/rust/pull/94832/
-[95016]: https://github.com/rust-lang/rust/pull/95016/
-[95251]: https://github.com/rust-lang/rust/pull/95251/
-[`+whole-archive`]: https://doc.rust-lang.org/stable/rustc/command-line-arguments.html#linking-modifiers-whole-archive
-[`Pin::static_mut`]: https://doc.rust-lang.org/stable/std/pin/struct.Pin.html#method.static_mut
-[`Pin::static_ref`]: https://doc.rust-lang.org/stable/std/pin/struct.Pin.html#method.static_ref
-[`Vec::retain_mut`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.retain_mut
-[`VecDeque::retain_mut`]: https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.retain_mut
-[`std::os::unix::net::SocketAddr::from_pathname`]: https://doc.rust-lang.org/stable/std/os/unix/net/struct.SocketAddr.html#method.from_pathname
-[`std::process::ExitCode`]: https://doc.rust-lang.org/stable/std/process/struct.ExitCode.html
-[`std::process::Termination`]: https://doc.rust-lang.org/stable/std/process/trait.Termination.html
-[`std::thread::JoinHandle::is_finished`]: https://doc.rust-lang.org/stable/std/thread/struct.JoinHandle.html#method.is_finished
-[cargo/10448]: https://github.com/rust-lang/cargo/pull/10448/
-[cursor-write-array]: https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#impl-Write-4
-[link-attr]: https://doc.rust-lang.org/stable/reference/items/external-blocks.html#the-link-attribute
-[ptr-add]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.add
-[ptr-offset]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset
-[ptr-sub]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.sub
-[ptr-wrapping_add]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_add
-[ptr-wrapping_offset]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_offset
-[ptr-wrapping_sub]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_sub
-[slice-as_mut_ptr]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_ptr
-[slice-as_mut_ptr_range]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_ptr_range
-[slice-as_ptr_range]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_ptr_range
-[target_feature]: https://doc.rust-lang.org/reference/attributes/codegen.html#the-target_feature-attribute
+- [debuginfo: Refactor debuginfo generation for types](https://github.com/rust-lang/rust/pull/94261/)
+- [Remove the everybody loops pass](https://github.com/rust-lang/rust/pull/93913/)
+
Version 1.60.0 (2022-04-07)
@@ -1283,90 +1127,90 @@ Version 1.60.0 (2022-04-07)
Language
--------
-- [Stabilize `#[cfg(panic = "...")]` for either `"unwind"` or `"abort"`.][93658]
-- [Stabilize `#[cfg(target_has_atomic = "...")]` for each integer size and `"ptr"`.][93824]
+- [Stabilize `#[cfg(panic = "...")]` for either `"unwind"` or `"abort"`.](https://github.com/rust-lang/rust/pull/93658)
+- [Stabilize `#[cfg(target_has_atomic = "...")]` for each integer size and `"ptr"`.](https://github.com/rust-lang/rust/pull/93824)
Compiler
--------
-- [Enable combining `+crt-static` and `relocation-model=pic` on `x86_64-unknown-linux-gnu`][86374]
-- [Fixes wrong `unreachable_pub` lints on nested and glob public reexport][87487]
-- [Stabilize `-Z instrument-coverage` as `-C instrument-coverage`][90132]
-- [Stabilize `-Z print-link-args` as `--print link-args`][91606]
-- [Add new Tier 3 target `mips64-openwrt-linux-musl`\*][92300]
-- [Add new Tier 3 target `armv7-unknown-linux-uclibceabi` (softfloat)\*][92383]
-- [Fix invalid removal of newlines from doc comments][92357]
-- [Add kernel target for RustyHermit][92670]
-- [Deny mixing bin crate type with lib crate types][92933]
-- [Make rustc use `RUST_BACKTRACE=full` by default][93566]
-- [Upgrade to LLVM 14][93577]
+- [Enable combining `+crt-static` and `relocation-model=pic` on `x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/86374)
+- [Fixes wrong `unreachable_pub` lints on nested and glob public reexport](https://github.com/rust-lang/rust/pull/87487)
+- [Stabilize `-Z instrument-coverage` as `-C instrument-coverage`](https://github.com/rust-lang/rust/pull/90132)
+- [Stabilize `-Z print-link-args` as `--print link-args`](https://github.com/rust-lang/rust/pull/91606)
+- [Add new Tier 3 target `mips64-openwrt-linux-musl`\*](https://github.com/rust-lang/rust/pull/92300)
+- [Add new Tier 3 target `armv7-unknown-linux-uclibceabi` (softfloat)\*](https://github.com/rust-lang/rust/pull/92383)
+- [Fix invalid removal of newlines from doc comments](https://github.com/rust-lang/rust/pull/92357)
+- [Add kernel target for RustyHermit](https://github.com/rust-lang/rust/pull/92670)
+- [Deny mixing bin crate type with lib crate types](https://github.com/rust-lang/rust/pull/92933)
+- [Make rustc use `RUST_BACKTRACE=full` by default](https://github.com/rust-lang/rust/pull/93566)
+- [Upgrade to LLVM 14](https://github.com/rust-lang/rust/pull/93577)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
Libraries
---------
-- [Guarantee call order for `sort_by_cached_key`][89621]
-- [Improve `Duration::try_from_secs_f32`/`f64` accuracy by directly processing exponent and mantissa][90247]
-- [Make `Instant::{duration_since, elapsed, sub}` saturating][89926]
-- [Remove non-monotonic clocks workarounds in `Instant::now`][89926]
-- [Make `BuildHasherDefault`, `iter::Empty` and `future::Pending` covariant][92630]
+- [Guarantee call order for `sort_by_cached_key`](https://github.com/rust-lang/rust/pull/89621)
+- [Improve `Duration::try_from_secs_f32`/`f64` accuracy by directly processing exponent and mantissa](https://github.com/rust-lang/rust/pull/90247)
+- [Make `Instant::{duration_since, elapsed, sub}` saturating](https://github.com/rust-lang/rust/pull/89926)
+- [Remove non-monotonic clocks workarounds in `Instant::now`](https://github.com/rust-lang/rust/pull/89926)
+- [Make `BuildHasherDefault`, `iter::Empty` and `future::Pending` covariant](https://github.com/rust-lang/rust/pull/92630)
Stabilized APIs
---------------
-- [`Arc::new_cyclic`][arc_new_cyclic]
-- [`Rc::new_cyclic`][rc_new_cyclic]
-- [`slice::EscapeAscii`][slice_escape_ascii]
-- [`<[u8]>::escape_ascii`][slice_u8_escape_ascii]
-- [`u8::escape_ascii`][u8_escape_ascii]
-- [`Vec::spare_capacity_mut`][vec_spare_capacity_mut]
-- [`MaybeUninit::assume_init_drop`][assume_init_drop]
-- [`MaybeUninit::assume_init_read`][assume_init_read]
-- [`i8::abs_diff`][i8_abs_diff]
-- [`i16::abs_diff`][i16_abs_diff]
-- [`i32::abs_diff`][i32_abs_diff]
-- [`i64::abs_diff`][i64_abs_diff]
-- [`i128::abs_diff`][i128_abs_diff]
-- [`isize::abs_diff`][isize_abs_diff]
-- [`u8::abs_diff`][u8_abs_diff]
-- [`u16::abs_diff`][u16_abs_diff]
-- [`u32::abs_diff`][u32_abs_diff]
-- [`u64::abs_diff`][u64_abs_diff]
-- [`u128::abs_diff`][u128_abs_diff]
-- [`usize::abs_diff`][usize_abs_diff]
-- [`Display for io::ErrorKind`][display_error_kind]
-- [`From for ExitCode`][from_u8_exit_code]
-- [`Not for !` (the "never" type)][not_never]
-- [_Op_`Assign<$t> for Wrapping<$t>`][wrapping_assign_ops]
-- [`arch::is_aarch64_feature_detected!`][is_aarch64_feature_detected]
+- [`Arc::new_cyclic`](https://doc.rust-lang.org/std/sync/struct.Arc.html#method.new_cyclic)
+- [`Rc::new_cyclic`](https://doc.rust-lang.org/std/rc/struct.Rc.html#method.new_cyclic)
+- [`slice::EscapeAscii`](https://doc.rust-lang.org/std/slice/struct.EscapeAscii.html)
+- [`<[u8]>::escape_ascii`](https://doc.rust-lang.org/std/primitive.slice.html#method.escape_ascii)
+- [`u8::escape_ascii`](https://doc.rust-lang.org/std/primitive.u8.html#method.escape_ascii)
+- [`Vec::spare_capacity_mut`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.spare_capacity_mut)
+- [`MaybeUninit::assume_init_drop`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_drop)
+- [`MaybeUninit::assume_init_read`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_read)
+- [`i8::abs_diff`](https://doc.rust-lang.org/std/primitive.i8.html#method.abs_diff)
+- [`i16::abs_diff`](https://doc.rust-lang.org/std/primitive.i16.html#method.abs_diff)
+- [`i32::abs_diff`](https://doc.rust-lang.org/std/primitive.i32.html#method.abs_diff)
+- [`i64::abs_diff`](https://doc.rust-lang.org/std/primitive.i64.html#method.abs_diff)
+- [`i128::abs_diff`](https://doc.rust-lang.org/std/primitive.i128.html#method.abs_diff)
+- [`isize::abs_diff`](https://doc.rust-lang.org/std/primitive.isize.html#method.abs_diff)
+- [`u8::abs_diff`](https://doc.rust-lang.org/std/primitive.u8.html#method.abs_diff)
+- [`u16::abs_diff`](https://doc.rust-lang.org/std/primitive.u16.html#method.abs_diff)
+- [`u32::abs_diff`](https://doc.rust-lang.org/std/primitive.u32.html#method.abs_diff)
+- [`u64::abs_diff`](https://doc.rust-lang.org/std/primitive.u64.html#method.abs_diff)
+- [`u128::abs_diff`](https://doc.rust-lang.org/std/primitive.u128.html#method.abs_diff)
+- [`usize::abs_diff`](https://doc.rust-lang.org/std/primitive.usize.html#method.abs_diff)
+- [`Display for io::ErrorKind`](https://doc.rust-lang.org/std/io/enum.ErrorKind.html#impl-Display)
+- [`From for ExitCode`](https://doc.rust-lang.org/std/process/struct.ExitCode.html#impl-From%3Cu8%3E)
+- [`Not for !` (the "never" type)](https://doc.rust-lang.org/std/primitive.never.html#impl-Not)
+- [_Op_`Assign<$t> for Wrapping<$t>`](https://doc.rust-lang.org/std/num/struct.Wrapping.html#trait-implementations)
+- [`arch::is_aarch64_feature_detected!`](https://doc.rust-lang.org/std/arch/macro.is_aarch64_feature_detected.html)
Cargo
-----
-- [Port cargo from `toml-rs` to `toml_edit`][cargo/10086]
-- [Stabilize `-Ztimings` as `--timings`][cargo/10245]
-- [Stabilize namespaced and weak dependency features.][cargo/10269]
-- [Accept more `cargo:rustc-link-arg-*` types from build script output.][cargo/10274]
-- [cargo-new should not add ignore rule on Cargo.lock inside subdirs][cargo/10379]
+- [Port cargo from `toml-rs` to `toml_edit`](https://github.com/rust-lang/cargo/pull/10086)
+- [Stabilize `-Ztimings` as `--timings`](https://github.com/rust-lang/cargo/pull/10245)
+- [Stabilize namespaced and weak dependency features.](https://github.com/rust-lang/cargo/pull/10269/)
+- [Accept more `cargo:rustc-link-arg-*` types from build script output.](https://github.com/rust-lang/cargo/pull/10274)
+- [cargo-new should not add ignore rule on Cargo.lock inside subdirs](https://github.com/rust-lang/cargo/pull/10379)
Misc
----
-- [Ship docs on Tier 2 platforms by reusing the closest Tier 1 platform docs][92800]
-- [Drop rustc-docs from complete profile][93742]
-- [bootstrap: tidy up flag handling for llvm build][93918]
+- [Ship docs on Tier 2 platforms by reusing the closest Tier 1 platform docs](https://github.com/rust-lang/rust/pull/92800)
+- [Drop rustc-docs from complete profile](https://github.com/rust-lang/rust/pull/93742)
+- [bootstrap: tidy up flag handling for llvm build](https://github.com/rust-lang/rust/pull/93918)
Compatibility Notes
-------------------
-- [Remove compiler-rt linking hack on Android][83822]
+- [Remove compiler-rt linking hack on Android](https://github.com/rust-lang/rust/pull/83822)
- [Mitigations for platforms with non-monotonic clocks have been removed from
- `Instant::now`][89926]. On platforms that don't provide monotonic clocks, an
+ `Instant::now`](https://github.com/rust-lang/rust/pull/89926). On platforms that don't provide monotonic clocks, an
instant is not guaranteed to be greater than an earlier instant anymore.
- [`Instant::{duration_since, elapsed, sub}` do not panic anymore on underflow,
- saturating to `0` instead][89926]. In the real world the panic happened mostly
+ saturating to `0` instead](https://github.com/rust-lang/rust/pull/89926). In the real world the panic happened mostly
on platforms with buggy monotonic clock implementations rather than catching
programming errors like reversing the start and end times. Such programming
errors will now results in `0` rather than a panic.
- In a future release we're planning to increase the baseline requirements for
the Linux kernel to version 3.2, and for glibc to version 2.17. We'd love
- your feedback in [PR #95026][95026].
+ your feedback in [PR #95026](https://github.com/rust-lang/rust/pull/95026).
Internal Changes
----------------
@@ -1375,63 +1219,10 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [Switch all libraries to the 2021 edition][92068]
-
-[83822]: https://github.com/rust-lang/rust/pull/83822
-[86374]: https://github.com/rust-lang/rust/pull/86374
-[87487]: https://github.com/rust-lang/rust/pull/87487
-[89621]: https://github.com/rust-lang/rust/pull/89621
-[89926]: https://github.com/rust-lang/rust/pull/89926
-[90132]: https://github.com/rust-lang/rust/pull/90132
-[90247]: https://github.com/rust-lang/rust/pull/90247
-[91606]: https://github.com/rust-lang/rust/pull/91606
-[92068]: https://github.com/rust-lang/rust/pull/92068
-[92300]: https://github.com/rust-lang/rust/pull/92300
-[92357]: https://github.com/rust-lang/rust/pull/92357
-[92383]: https://github.com/rust-lang/rust/pull/92383
-[92630]: https://github.com/rust-lang/rust/pull/92630
-[92670]: https://github.com/rust-lang/rust/pull/92670
-[92800]: https://github.com/rust-lang/rust/pull/92800
-[92933]: https://github.com/rust-lang/rust/pull/92933
-[93566]: https://github.com/rust-lang/rust/pull/93566
-[93577]: https://github.com/rust-lang/rust/pull/93577
-[93658]: https://github.com/rust-lang/rust/pull/93658
-[93742]: https://github.com/rust-lang/rust/pull/93742
-[93824]: https://github.com/rust-lang/rust/pull/93824
-[93918]: https://github.com/rust-lang/rust/pull/93918
-[95026]: https://github.com/rust-lang/rust/pull/95026
-
-[cargo/10086]: https://github.com/rust-lang/cargo/pull/10086
-[cargo/10245]: https://github.com/rust-lang/cargo/pull/10245
-[cargo/10269]: https://github.com/rust-lang/cargo/pull/10269
-[cargo/10274]: https://github.com/rust-lang/cargo/pull/10274
-[cargo/10379]: https://github.com/rust-lang/cargo/pull/10379
-
-[arc_new_cyclic]: https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_cyclic
-[rc_new_cyclic]: https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_cyclic
-[slice_escape_ascii]: https://doc.rust-lang.org/stable/std/slice/struct.EscapeAscii.html
-[slice_u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.escape_ascii
-[u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.escape_ascii
-[vec_spare_capacity_mut]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.spare_capacity_mut
-[assume_init_drop]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_drop
-[assume_init_read]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_read
-[i8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.abs_diff
-[i16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.abs_diff
-[i32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.abs_diff
-[i64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.abs_diff
-[i128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.abs_diff
-[isize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.abs_diff
-[u8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.abs_diff
-[u16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.abs_diff
-[u32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.abs_diff
-[u64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.abs_diff
-[u128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.abs_diff
-[usize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.abs_diff
-[display_error_kind]: https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#impl-Display
-[from_u8_exit_code]: https://doc.rust-lang.org/stable/std/process/struct.ExitCode.html#impl-From%3Cu8%3E
-[not_never]: https://doc.rust-lang.org/stable/std/primitive.never.html#impl-Not
-[wrapping_assign_ops]: https://doc.rust-lang.org/stable/std/num/struct.Wrapping.html#trait-implementations
-[is_aarch64_feature_detected]: https://doc.rust-lang.org/stable/std/arch/macro.is_aarch64_feature_detected.html
+- [Switch all libraries to the 2021 edition](https://github.com/rust-lang/rust/pull/92068)
+
+
+
Version 1.59.0 (2022-02-24)
==========================
@@ -1439,21 +1230,21 @@ Version 1.59.0 (2022-02-24)
Language
--------
-- [Stabilize default arguments for const parameters and remove the ordering restriction for type and const parameters][90207]
-- [Stabilize destructuring assignment][90521]
-- [Relax private in public lint on generic bounds and where clauses of trait impls][90586]
-- [Stabilize asm! and global_asm! for x86, x86_64, ARM, Aarch64, and RISC-V][91728]
+- [Stabilize default arguments for const parameters and remove the ordering restriction for type and const parameters](https://github.com/rust-lang/rust/pull/90207/)
+- [Stabilize destructuring assignment](https://github.com/rust-lang/rust/pull/90521/)
+- [Relax private in public lint on generic bounds and where clauses of trait impls](https://github.com/rust-lang/rust/pull/90586/)
+- [Stabilize asm! and global_asm! for x86, x86_64, ARM, Aarch64, and RISC-V](https://github.com/rust-lang/rust/pull/91728/)
Compiler
--------
-- [Stabilize new symbol mangling format, leaving it opt-in (-Csymbol-mangling-version=v0)][90128]
-- [Emit LLVM optimization remarks when enabled with `-Cremark`][90833]
-- [Fix sparc64 ABI for aggregates with floating point members][91003]
-- [Warn when a `#[test]`-like built-in attribute macro is present multiple times.][91172]
-- [Add support for riscv64gc-unknown-freebsd][91284]
-- [Stabilize `-Z emit-future-incompat` as `--json future-incompat`][91535]
-- [Soft disable incremental compilation][94124]
+- [Stabilize new symbol mangling format, leaving it opt-in (-Csymbol-mangling-version=v0)](https://github.com/rust-lang/rust/pull/90128/)
+- [Emit LLVM optimization remarks when enabled with `-Cremark`](https://github.com/rust-lang/rust/pull/90833/)
+- [Fix sparc64 ABI for aggregates with floating point members](https://github.com/rust-lang/rust/pull/91003/)
+- [Warn when a `#[test]`-like built-in attribute macro is present multiple times.](https://github.com/rust-lang/rust/pull/91172/)
+- [Add support for riscv64gc-unknown-freebsd](https://github.com/rust-lang/rust/pull/91284/)
+- [Stabilize `-Z emit-future-incompat` as `--json future-incompat`](https://github.com/rust-lang/rust/pull/91535/)
+- [Soft disable incremental compilation](https://github.com/rust-lang/rust/issues/94124)
This release disables incremental compilation, unless the user has explicitly
opted in via the newly added RUSTC_FORCE_INCREMENTAL=1 environment variable.
@@ -1465,79 +1256,78 @@ to stable and is deemed too risky for a direct stable backport.
As always, we encourage users to test with nightly and report bugs so that we
can track failures and fix issues earlier.
-See [94124] for more details.
+See [94124](https://github.com/rust-lang/rust/issues/94124) for more details.
-[94124]: https://github.com/rust-lang/rust/issues/94124
Libraries
---------
-- [Remove unnecessary bounds for some Hash{Map,Set} methods][91593]
+- [Remove unnecessary bounds for some Hash{Map,Set} methods](https://github.com/rust-lang/rust/pull/91593/)
Stabilized APIs
---------------
-- [`std::thread::available_parallelism`][available_parallelism]
-- [`Result::copied`][result-copied]
-- [`Result::cloned`][result-cloned]
-- [`arch::asm!`][asm]
-- [`arch::global_asm!`][global_asm]
-- [`ops::ControlFlow::is_break`][is_break]
-- [`ops::ControlFlow::is_continue`][is_continue]
-- [`TryFrom for u8`][try_from_char_u8]
-- [`char::TryFromCharError`][try_from_char_err]
+- [`std::thread::available_parallelism`](https://doc.rust-lang.org/std/thread/fn.available_parallelism.html)
+- [`Result::copied`](https://doc.rust-lang.org/std/result/enum.Result.html#method.copied)
+- [`Result::cloned`](https://doc.rust-lang.org/std/result/enum.Result.html#method.cloned)
+- [`arch::asm!`](https://doc.rust-lang.org/core/arch/macro.asm.html)
+- [`arch::global_asm!`](https://doc.rust-lang.org/core/arch/macro.global_asm.html)
+- [`ops::ControlFlow::is_break`](https://doc.rust-lang.org/std/ops/enum.ControlFlow.html#method.is_break)
+- [`ops::ControlFlow::is_continue`](https://doc.rust-lang.org/std/ops/enum.ControlFlow.html#method.is_continue)
+- [`TryFrom for u8`](https://doc.rust-lang.org/std/primitive.char.html#impl-TryFrom%3Cchar%3E)
+- [`char::TryFromCharError`](https://doc.rust-lang.org/std/char/struct.TryFromCharError.html)
implementing `Clone`, `Debug`, `Display`, `PartialEq`, `Copy`, `Eq`, `Error`
-- [`iter::zip`][zip]
-- [`NonZeroU8::is_power_of_two`][is_power_of_two8]
-- [`NonZeroU16::is_power_of_two`][is_power_of_two16]
-- [`NonZeroU32::is_power_of_two`][is_power_of_two32]
-- [`NonZeroU64::is_power_of_two`][is_power_of_two64]
-- [`NonZeroU128::is_power_of_two`][is_power_of_two128]
-- [`NonZeroUsize::is_power_of_two`][is_power_of_two_usize]
-- [`DoubleEndedIterator for ToLowercase`][lowercase]
-- [`DoubleEndedIterator for ToUppercase`][uppercase]
-- [`TryFrom<&mut [T]> for [T; N]`][tryfrom_ref_arr]
-- [`UnwindSafe for Once`][unwindsafe_once]
-- [`RefUnwindSafe for Once`][refunwindsafe_once]
-- [armv8 neon intrinsics for aarch64][stdarch/1266]
+- [`iter::zip`](https://doc.rust-lang.org/std/iter/fn.zip.html)
+- [`NonZeroU8::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroU8.html#method.is_power_of_two)
+- [`NonZeroU16::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroU16.html#method.is_power_of_two)
+- [`NonZeroU32::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroU32.html#method.is_power_of_two)
+- [`NonZeroU64::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroU64.html#method.is_power_of_two)
+- [`NonZeroU128::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroU128.html#method.is_power_of_two)
+- [`NonZeroUsize::is_power_of_two`](https://doc.rust-lang.org/core/num/struct.NonZeroUsize.html#method.is_power_of_two)
+- [`DoubleEndedIterator for ToLowercase`](https://doc.rust-lang.org/std/char/struct.ToLowercase.html#impl-DoubleEndedIterator)
+- [`DoubleEndedIterator for ToUppercase`](https://doc.rust-lang.org/std/char/struct.ToUppercase.html#impl-DoubleEndedIterator)
+- [`TryFrom<&mut [T]> for [T; N]`](https://doc.rust-lang.org/std/convert/trait.TryFrom.html#impl-TryFrom%3C%26%27_%20mut%20%5BT%5D%3E)
+- [`UnwindSafe for Once`](https://doc.rust-lang.org/std/sync/struct.Once.html#impl-UnwindSafe)
+- [`RefUnwindSafe for Once`](https://doc.rust-lang.org/std/sync/struct.Once.html#impl-RefUnwindSafe)
+- [armv8 neon intrinsics for aarch64](https://github.com/rust-lang/stdarch/pull/1266)
Const-stable:
-- [`mem::MaybeUninit::as_ptr`][muninit_ptr]
-- [`mem::MaybeUninit::assume_init`][muninit_init]
-- [`mem::MaybeUninit::assume_init_ref`][muninit_init_ref]
-- [`ffi::CStr::from_bytes_with_nul_unchecked`][cstr_from_bytes]
+- [`mem::MaybeUninit::as_ptr`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.as_ptr)
+- [`mem::MaybeUninit::assume_init`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init)
+- [`mem::MaybeUninit::assume_init_ref`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_ref)
+- [`ffi::CStr::from_bytes_with_nul_unchecked`](https://doc.rust-lang.org/std/ffi/struct.CStr.html#method.from_bytes_with_nul_unchecked)
Cargo
-----
-- [Stabilize the `strip` profile option][cargo/10088]
-- [Stabilize future-incompat-report][cargo/10165]
-- [Support abbreviating `--release` as `-r`][cargo/10133]
-- [Support `term.quiet` configuration][cargo/10152]
-- [Remove `--host` from cargo {publish,search,login}][cargo/10145]
+- [Stabilize the `strip` profile option](https://github.com/rust-lang/cargo/pull/10088/)
+- [Stabilize future-incompat-report](https://github.com/rust-lang/cargo/pull/10165/)
+- [Support abbreviating `--release` as `-r`](https://github.com/rust-lang/cargo/pull/10133/)
+- [Support `term.quiet` configuration](https://github.com/rust-lang/cargo/pull/10152/)
+- [Remove `--host` from cargo {publish,search,login}](https://github.com/rust-lang/cargo/pull/10145/)
Compatibility Notes
-------------------
-- [Refactor weak symbols in std::sys::unix][90846]
+- [Refactor weak symbols in std::sys::unix](https://github.com/rust-lang/rust/pull/90846/)
This may add new, versioned, symbols when building with a newer glibc, as the
standard library uses weak linkage rather than dynamically attempting to load
certain symbols at runtime.
-- [Deprecate crate_type and crate_name nested inside `#![cfg_attr]`][83744]
+- [Deprecate crate_type and crate_name nested inside `#![cfg_attr]`](https://github.com/rust-lang/rust/pull/83744/)
This adds a future compatibility lint to supporting the use of cfg_attr
wrapping either crate_type or crate_name specification within Rust files;
it is recommended that users migrate to setting the equivalent command line
flags.
-- [Remove effect of `#[no_link]` attribute on name resolution][92034]
+- [Remove effect of `#[no_link]` attribute on name resolution](https://github.com/rust-lang/rust/pull/92034/)
This may expose new names, leading to conflicts with preexisting names in a
given namespace and a compilation failure.
-- [Cargo will document libraries before binaries.][cargo/10172]
-- [Respect doc=false in dependencies, not just the root crate][cargo/10201]
-- [Weaken guarantee around advancing underlying iterators in zip][83791]
-- [Make split_inclusive() on an empty slice yield an empty output][89825]
-- [Update std::env::temp_dir to use GetTempPath2 on Windows when available.][89999]
-- [unreachable! was updated to match other formatting macro behavior on Rust 2021][92137]
+- [Cargo will document libraries before binaries.](https://github.com/rust-lang/cargo/pull/10172/)
+- [Respect doc=false in dependencies, not just the root crate](https://github.com/rust-lang/cargo/pull/10201/)
+- [Weaken guarantee around advancing underlying iterators in zip](https://github.com/rust-lang/rust/pull/83791/)
+- [Make split_inclusive() on an empty slice yield an empty output](https://github.com/rust-lang/rust/pull/89825/)
+- [Update std::env::temp_dir to use GetTempPath2 on Windows when available.](https://github.com/rust-lang/rust/pull/89999/)
+- [unreachable! was updated to match other formatting macro behavior on Rust 2021](https://github.com/rust-lang/rust/pull/92137/)
Internal Changes
----------------
@@ -1546,91 +1336,24 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [Fix many cases of normalization-related ICEs][91255]
-- [Replace dominators algorithm with simple Lengauer-Tarjan][85013]
-- [Store liveness in interval sets for region inference][90637]
+- [Fix many cases of normalization-related ICEs](https://github.com/rust-lang/rust/pull/91255/)
+- [Replace dominators algorithm with simple Lengauer-Tarjan](https://github.com/rust-lang/rust/pull/85013/)
+- [Store liveness in interval sets for region inference](https://github.com/rust-lang/rust/pull/90637/)
- [Remove `in_band_lifetimes` from the compiler and standard library, in preparation for removing this
- unstable feature.][91867]
-
-[91867]: https://github.com/rust-lang/rust/issues/91867
-[83744]: https://github.com/rust-lang/rust/pull/83744/
-[83791]: https://github.com/rust-lang/rust/pull/83791/
-[85013]: https://github.com/rust-lang/rust/pull/85013/
-[89825]: https://github.com/rust-lang/rust/pull/89825/
-[89999]: https://github.com/rust-lang/rust/pull/89999/
-[90128]: https://github.com/rust-lang/rust/pull/90128/
-[90207]: https://github.com/rust-lang/rust/pull/90207/
-[90521]: https://github.com/rust-lang/rust/pull/90521/
-[90586]: https://github.com/rust-lang/rust/pull/90586/
-[90637]: https://github.com/rust-lang/rust/pull/90637/
-[90833]: https://github.com/rust-lang/rust/pull/90833/
-[90846]: https://github.com/rust-lang/rust/pull/90846/
-[91003]: https://github.com/rust-lang/rust/pull/91003/
-[91172]: https://github.com/rust-lang/rust/pull/91172/
-[91255]: https://github.com/rust-lang/rust/pull/91255/
-[91284]: https://github.com/rust-lang/rust/pull/91284/
-[91535]: https://github.com/rust-lang/rust/pull/91535/
-[91593]: https://github.com/rust-lang/rust/pull/91593/
-[91728]: https://github.com/rust-lang/rust/pull/91728/
-[91878]: https://github.com/rust-lang/rust/pull/91878/
-[91896]: https://github.com/rust-lang/rust/pull/91896/
-[91926]: https://github.com/rust-lang/rust/pull/91926/
-[91984]: https://github.com/rust-lang/rust/pull/91984/
-[92020]: https://github.com/rust-lang/rust/pull/92020/
-[92034]: https://github.com/rust-lang/rust/pull/92034/
-[92137]: https://github.com/rust-lang/rust/pull/92137/
-[92483]: https://github.com/rust-lang/rust/pull/92483/
-[cargo/10088]: https://github.com/rust-lang/cargo/pull/10088/
-[cargo/10133]: https://github.com/rust-lang/cargo/pull/10133/
-[cargo/10145]: https://github.com/rust-lang/cargo/pull/10145/
-[cargo/10152]: https://github.com/rust-lang/cargo/pull/10152/
-[cargo/10165]: https://github.com/rust-lang/cargo/pull/10165/
-[cargo/10172]: https://github.com/rust-lang/cargo/pull/10172/
-[cargo/10201]: https://github.com/rust-lang/cargo/pull/10201/
-[cargo/10269]: https://github.com/rust-lang/cargo/pull/10269/
-
-[cstr_from_bytes]: https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#method.from_bytes_with_nul_unchecked
-[muninit_ptr]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.as_ptr
-[muninit_init]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init
-[muninit_init_ref]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref
-[unwindsafe_once]: https://doc.rust-lang.org/stable/std/sync/struct.Once.html#impl-UnwindSafe
-[refunwindsafe_once]: https://doc.rust-lang.org/stable/std/sync/struct.Once.html#impl-RefUnwindSafe
-[tryfrom_ref_arr]: https://doc.rust-lang.org/stable/std/convert/trait.TryFrom.html#impl-TryFrom%3C%26%27_%20mut%20%5BT%5D%3E
-[lowercase]: https://doc.rust-lang.org/stable/std/char/struct.ToLowercase.html#impl-DoubleEndedIterator
-[uppercase]: https://doc.rust-lang.org/stable/std/char/struct.ToUppercase.html#impl-DoubleEndedIterator
-[try_from_char_err]: https://doc.rust-lang.org/stable/std/char/struct.TryFromCharError.html
-[available_parallelism]: https://doc.rust-lang.org/stable/std/thread/fn.available_parallelism.html
-[result-copied]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.copied
-[result-cloned]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.cloned
-[asm]: https://doc.rust-lang.org/stable/core/arch/macro.asm.html
-[global_asm]: https://doc.rust-lang.org/stable/core/arch/macro.global_asm.html
-[is_break]: https://doc.rust-lang.org/stable/std/ops/enum.ControlFlow.html#method.is_break
-[is_continue]: https://doc.rust-lang.org/stable/std/ops/enum.ControlFlow.html#method.is_continue
-[try_from_char_u8]: https://doc.rust-lang.org/stable/std/primitive.char.html#impl-TryFrom%3Cchar%3E
-[zip]: https://doc.rust-lang.org/stable/std/iter/fn.zip.html
-[is_power_of_two8]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroU8.html#method.is_power_of_two
-[is_power_of_two16]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroU16.html#method.is_power_of_two
-[is_power_of_two32]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroU32.html#method.is_power_of_two
-[is_power_of_two64]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroU64.html#method.is_power_of_two
-[is_power_of_two128]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroU128.html#method.is_power_of_two
-[is_power_of_two_usize]: https://doc.rust-lang.org/stable/core/num/struct.NonZeroUsize.html#method.is_power_of_two
-[stdarch/1266]: https://github.com/rust-lang/stdarch/pull/1266
+ unstable feature.](https://github.com/rust-lang/rust/issues/91867)
+
+
Version 1.58.1 (2022-01-20)
===========================
-* Fix race condition in `std::fs::remove_dir_all` ([CVE-2022-21658])
-* [Handle captured arguments in the `useless_format` Clippy lint][clippy/8295]
-* [Move `non_send_fields_in_send_ty` Clippy lint to nursery][clippy/8075]
-* [Fix wrong error message displayed when some imports are missing][91254]
-* [Fix rustfmt not formatting generated files from stdin][92912]
+* Fix race condition in `std::fs::remove_dir_all` ([CVE-2022-21658](https://www.cve.org/CVERecord?id=CVE-2022-21658))
+* [Handle captured arguments in the `useless_format` Clippy lint](https://github.com/rust-lang/rust-clippy/pull/8295)
+* [Move `non_send_fields_in_send_ty` Clippy lint to nursery](https://github.com/rust-lang/rust-clippy/pull/8075)
+* [Fix wrong error message displayed when some imports are missing](https://github.com/rust-lang/rust/pull/91254)
+* [Fix rustfmt not formatting generated files from stdin](https://github.com/rust-lang/rust/pull/92912)
-[CVE-2022-21658]: https://www.cve.org/CVERecord?id=CVE-2022-21658
-[91254]: https://github.com/rust-lang/rust/pull/91254
-[92912]: https://github.com/rust-lang/rust/pull/92912
-[clippy/8075]: https://github.com/rust-lang/rust-clippy/pull/8075
-[clippy/8295]: https://github.com/rust-lang/rust-clippy/pull/8295
Version 1.58.0 (2022-01-13)
==========================
@@ -1638,22 +1361,22 @@ Version 1.58.0 (2022-01-13)
Language
--------
-- [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]
+- [Format strings can now capture arguments simply by writing `{ident}` in the string.](https://github.com/rust-lang/rust/pull/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.](https://github.com/rust-lang/rust/pull/89551/)
+- [The rules for when a generic struct implements `Unsize` have been relaxed.](https://github.com/rust-lang/rust/pull/90417/)
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. 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]
-- [Add `x86_64-unknown-none` at Tier 3*][89062]
-- [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]
+- [Add LLVM CFI support to the Rust compiler](https://github.com/rust-lang/rust/pull/89652/)
+- [Stabilize -Z strip as -C strip](https://github.com/rust-lang/rust/pull/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](https://github.com/rust-lang/rust/pull/91207/)
+- [Emit LLVM optimization remarks when enabled with `-Cremark`](https://github.com/rust-lang/rust/pull/90833/)
+- [Update the minimum external LLVM to 12](https://github.com/rust-lang/rust/pull/90175/)
+- [Add `x86_64-unknown-none` at Tier 3*](https://github.com/rust-lang/rust/pull/89062/)
+- [Build musl dist artifacts with debuginfo enabled](https://github.com/rust-lang/rust/pull/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](https://github.com/rust-lang/rust/pull/87337/)
+- [Error messages point at the source of trait bound obligations in more places](https://github.com/rust-lang/rust/pull/89580/)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -1661,56 +1384,56 @@ Compiler
Libraries
---------
-- [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 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]. 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).
+- [All remaining functions in the standard library have `#[must_use]` annotations where appropriate](https://github.com/rust-lang/rust/issues/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](https://github.com/rust-lang/rust/pull/89174/)
+- [Re-enable debug checks for `copy` and `copy_nonoverlapping`](https://github.com/rust-lang/rust/pull/90041/)
+- [Implement `RefUnwindSafe` for `Rc`](https://github.com/rust-lang/rust/pull/87467/)
+- [Make RSplit: Clone not require T: Clone](https://github.com/rust-lang/rust/pull/90117/)
+- [Implement `Termination` for `Result`](https://github.com/rust-lang/rust/pull/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
---------------
-- [`Metadata::is_symlink`]
-- [`Path::is_symlink`]
-- [`{integer}::saturating_div`]
-- [`Option::unwrap_unchecked`]
-- [`Result::unwrap_unchecked`]
-- [`Result::unwrap_err_unchecked`]
-- [`File::options`]
+- [`Metadata::is_symlink`](https://doc.rust-lang.org/std/fs/struct.Metadata.html#method.is_symlink)
+- [`Path::is_symlink`](https://doc.rust-lang.org/std/path/struct.Path.html#method.is_symlink)
+- [`{integer}::saturating_div`](https://doc.rust-lang.org/std/primitive.i8.html#method.saturating_div)
+- [`Option::unwrap_unchecked`](https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap_unchecked)
+- [`Result::unwrap_unchecked`](https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_unchecked)
+- [`Result::unwrap_err_unchecked`](https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_err_unchecked)
+- [`File::options`](https://doc.rust-lang.org/std/fs/struct.File.html#method.options)
These APIs are now usable in const contexts:
-- [`Duration::new`]
-- [`Duration::checked_add`]
-- [`Duration::saturating_add`]
-- [`Duration::checked_sub`]
-- [`Duration::saturating_sub`]
-- [`Duration::checked_mul`]
-- [`Duration::saturating_mul`]
-- [`Duration::checked_div`]
+- [`Duration::new`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.new)
+- [`Duration::checked_add`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_add)
+- [`Duration::saturating_add`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_add)
+- [`Duration::checked_sub`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_sub)
+- [`Duration::saturating_sub`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_sub)
+- [`Duration::checked_mul`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_mul)
+- [`Duration::saturating_mul`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_mul)
+- [`Duration::checked_div`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_div)
Cargo
-----
-- [Add --message-format for install command][cargo/10107]
-- [Warn when alias shadows external subcommand][cargo/10082]
+- [Add --message-format for install command](https://github.com/rust-lang/cargo/pull/10107/)
+- [Warn when alias shadows external subcommand](https://github.com/rust-lang/cargo/pull/10082/)
Rustdoc
-------
-- [Show all Deref implementations recursively in rustdoc][90183]
-- [Use computed visibility in rustdoc][88447]
+- [Show all Deref implementations recursively in rustdoc](https://github.com/rust-lang/rust/pull/90183/)
+- [Use computed visibility in rustdoc](https://github.com/rust-lang/rust/pull/88447/)
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]
-- [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]
+- [Try all stable method candidates first before trying unstable ones](https://github.com/rust-lang/rust/pull/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.](https://github.com/rust-lang/rust/pull/87704/)
+- [All proc-macro backward-compatibility lints are now deny-by-default.](https://github.com/rust-lang/rust/pull/88041/)
+- [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token](https://github.com/rust-lang/rust/pull/90297/)
+- [Refactor weak symbols in std::sys::unix](https://github.com/rust-lang/rust/pull/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/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](https://github.com/rust-lang/rust/pull/91026/)
Internal Changes
----------------
@@ -1719,52 +1442,12 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [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/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/
-[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/
-[88447]: https://github.com/rust-lang/rust/pull/88447/
-[88601]: https://github.com/rust-lang/rust/pull/88601/
-[89062]: https://github.com/rust-lang/rust/pull/89062/
-[89174]: https://github.com/rust-lang/rust/pull/89174/
-[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/
-[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/
-[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/
-[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/
-[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
-[`Result::unwrap_unchecked`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.unwrap_unchecked
-[`Result::unwrap_err_unchecked`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.unwrap_err_unchecked
-[`File::options`]: https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.options
-[`Duration::new`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.new
+- [Implement coherence checks for negative trait impls](https://github.com/rust-lang/rust/pull/90104/)
+- [Add rustc lint, warning when iterating over hashmaps](https://github.com/rust-lang/rust/pull/89558/)
+- [Optimize live point computation](https://github.com/rust-lang/rust/pull/90491/)
+- [Enable verification for 1/32nd of queries loaded from disk](https://github.com/rust-lang/rust/pull/90361/)
+- [Implement version of normalize_erasing_regions that allows for normalization failure](https://github.com/rust-lang/rust/pull/91255/)
+
Version 1.57.0 (2021-12-02)
==========================
@@ -1772,19 +1455,19 @@ Version 1.57.0 (2021-12-02)
Language
--------
-- [Macro attributes may follow `#[derive]` and will see the original (pre-`cfg`) input.][87220]
-- [Accept curly-brace macros in expressions, like `m!{ .. }.method()` and `m!{ .. }?`.][88690]
-- [Allow panicking in constant evaluation.][89508]
-- [Ignore derived `Clone` and `Debug` implementations during dead code analysis.][85200]
+- [Macro attributes may follow `#[derive]` and will see the original (pre-`cfg`) input.](https://github.com/rust-lang/rust/pull/87220/)
+- [Accept curly-brace macros in expressions, like `m!{ .. }.method()` and `m!{ .. }?`.](https://github.com/rust-lang/rust/pull/88690/)
+- [Allow panicking in constant evaluation.](https://github.com/rust-lang/rust/pull/89508/)
+- [Ignore derived `Clone` and `Debug` implementations during dead code analysis.](https://github.com/rust-lang/rust/pull/85200/)
Compiler
--------
-- [Create more accurate debuginfo for vtables.][89597]
-- [Add `armv6k-nintendo-3ds` at Tier 3\*.][88529]
-- [Add `armv7-unknown-linux-uclibceabihf` at Tier 3\*.][88952]
-- [Add `m68k-unknown-linux-gnu` at Tier 3\*.][88321]
-- [Add SOLID targets at Tier 3\*:][86191] `aarch64-kmc-solid_asp3`, `armv7a-kmc-solid_asp3-eabi`, `armv7a-kmc-solid_asp3-eabihf`
+- [Create more accurate debuginfo for vtables.](https://github.com/rust-lang/rust/pull/89597/)
+- [Add `armv6k-nintendo-3ds` at Tier 3\*.](https://github.com/rust-lang/rust/pull/88529/)
+- [Add `armv7-unknown-linux-uclibceabihf` at Tier 3\*.](https://github.com/rust-lang/rust/pull/88952/)
+- [Add `m68k-unknown-linux-gnu` at Tier 3\*.](https://github.com/rust-lang/rust/pull/88321/)
+- [Add SOLID targets at Tier 3\*:](https://github.com/rust-lang/rust/pull/86191/) `aarch64-kmc-solid_asp3`, `armv7a-kmc-solid_asp3-eabi`, `armv7a-kmc-solid_asp3-eabihf`
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -1792,51 +1475,51 @@ Compiler
Libraries
---------
-- [Avoid allocations and copying in `Vec::leak`][89337]
-- [Add `#[repr(i8)]` to `Ordering`][89507]
-- [Optimize `File::read_to_end` and `read_to_string`][89582]
-- [Update to Unicode 14.0][89614]
-- [Many more functions are marked `#[must_use]`][89692], producing a warning
+- [Avoid allocations and copying in `Vec::leak`](https://github.com/rust-lang/rust/pull/89337/)
+- [Add `#[repr(i8)]` to `Ordering`](https://github.com/rust-lang/rust/pull/89507/)
+- [Optimize `File::read_to_end` and `read_to_string`](https://github.com/rust-lang/rust/pull/89582/)
+- [Update to Unicode 14.0](https://github.com/rust-lang/rust/pull/89614/)
+- [Many more functions are marked `#[must_use]`](https://github.com/rust-lang/rust/issues/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.
Stabilised APIs
---------------
-- [`[T; N]::as_mut_slice`][`array::as_mut_slice`]
-- [`[T; N]::as_slice`][`array::as_slice`]
-- [`collections::TryReserveError`]
-- [`HashMap::try_reserve`]
-- [`HashSet::try_reserve`]
-- [`String::try_reserve`]
-- [`String::try_reserve_exact`]
-- [`Vec::try_reserve`]
-- [`Vec::try_reserve_exact`]
-- [`VecDeque::try_reserve`]
-- [`VecDeque::try_reserve_exact`]
-- [`Iterator::map_while`]
-- [`iter::MapWhile`]
-- [`proc_macro::is_available`]
-- [`Command::get_program`]
-- [`Command::get_args`]
-- [`Command::get_envs`]
-- [`Command::get_current_dir`]
-- [`CommandArgs`]
-- [`CommandEnvs`]
+- [`[T; N]::as_mut_slice`](https://doc.rust-lang.org/std/primitive.array.html#method.as_mut_slice)
+- [`[T; N]::as_slice`](https://doc.rust-lang.org/std/primitive.array.html#method.as_slice)
+- [`collections::TryReserveError`](https://doc.rust-lang.org/std/collections/struct.TryReserveError.html)
+- [`HashMap::try_reserve`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.try_reserve)
+- [`HashSet::try_reserve`](https://doc.rust-lang.org/std/collections/hash_set/struct.HashSet.html#method.try_reserve)
+- [`String::try_reserve`](https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve)
+- [`String::try_reserve_exact`](https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve_exact)
+- [`Vec::try_reserve`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve)
+- [`Vec::try_reserve_exact`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve_exact)
+- [`VecDeque::try_reserve`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve)
+- [`VecDeque::try_reserve_exact`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve_exact)
+- [`Iterator::map_while`](https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map_while)
+- [`iter::MapWhile`](https://doc.rust-lang.org/std/iter/struct.MapWhile.html)
+- [`proc_macro::is_available`](https://doc.rust-lang.org/proc_macro/fn.is_available.html)
+- [`Command::get_program`](https://doc.rust-lang.org/std/process/struct.Command.html#method.get_program)
+- [`Command::get_args`](https://doc.rust-lang.org/std/process/struct.Command.html#method.get_args)
+- [`Command::get_envs`](https://doc.rust-lang.org/std/process/struct.Command.html#method.get_envs)
+- [`Command::get_current_dir`](https://doc.rust-lang.org/std/process/struct.Command.html#method.get_current_dir)
+- [`CommandArgs`](https://doc.rust-lang.org/std/process/struct.CommandArgs.html)
+- [`CommandEnvs`](https://doc.rust-lang.org/std/process/struct.CommandEnvs.html)
These APIs are now usable in const contexts:
-- [`hint::unreachable_unchecked`]
+- [`hint::unreachable_unchecked`](https://doc.rust-lang.org/std/hint/fn.unreachable_unchecked.html)
Cargo
-----
-- [Stabilize custom profiles][cargo/9943]
+- [Stabilize custom profiles](https://github.com/rust-lang/cargo/pull/9943/)
Compatibility notes
-------------------
-- [Ignore derived `Clone` and `Debug` implementations during dead code analysis.][85200]
+- [Ignore derived `Clone` and `Debug` implementations during dead code analysis.](https://github.com/rust-lang/rust/pull/85200/)
This will break some builds that set `#![deny(dead_code)]`.
Internal changes
@@ -1845,52 +1528,15 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [Added an experimental backend for codegen with `libgccjit`.][87260]
-
-[85200]: https://github.com/rust-lang/rust/pull/85200/
-[86191]: https://github.com/rust-lang/rust/pull/86191/
-[87220]: https://github.com/rust-lang/rust/pull/87220/
-[87260]: https://github.com/rust-lang/rust/pull/87260/
-[88321]: https://github.com/rust-lang/rust/pull/88321/
-[88529]: https://github.com/rust-lang/rust/pull/88529/
-[88690]: https://github.com/rust-lang/rust/pull/88690/
-[88952]: https://github.com/rust-lang/rust/pull/88952/
-[89337]: https://github.com/rust-lang/rust/pull/89337/
-[89507]: https://github.com/rust-lang/rust/pull/89507/
-[89508]: https://github.com/rust-lang/rust/pull/89508/
-[89582]: https://github.com/rust-lang/rust/pull/89582/
-[89597]: https://github.com/rust-lang/rust/pull/89597/
-[89614]: https://github.com/rust-lang/rust/pull/89614/
-[89692]: https://github.com/rust-lang/rust/issues/89692/
-[cargo/9943]: https://github.com/rust-lang/cargo/pull/9943/
-[`array::as_mut_slice`]: https://doc.rust-lang.org/std/primitive.array.html#method.as_mut_slice
-[`array::as_slice`]: https://doc.rust-lang.org/std/primitive.array.html#method.as_slice
-[`collections::TryReserveError`]: https://doc.rust-lang.org/std/collections/struct.TryReserveError.html
-[`HashMap::try_reserve`]: https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.try_reserve
-[`HashSet::try_reserve`]: https://doc.rust-lang.org/std/collections/hash_set/struct.HashSet.html#method.try_reserve
-[`String::try_reserve`]: https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve
-[`String::try_reserve_exact`]: https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve_exact
-[`Vec::try_reserve`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve
-[`Vec::try_reserve_exact`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve_exact
-[`VecDeque::try_reserve`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve
-[`VecDeque::try_reserve_exact`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve_exact
-[`Iterator::map_while`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map_while
-[`iter::MapWhile`]: https://doc.rust-lang.org/std/iter/struct.MapWhile.html
-[`proc_macro::is_available`]: https://doc.rust-lang.org/proc_macro/fn.is_available.html
-[`Command::get_program`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_program
-[`Command::get_args`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_args
-[`Command::get_envs`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_envs
-[`Command::get_current_dir`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_current_dir
-[`CommandArgs`]: https://doc.rust-lang.org/std/process/struct.CommandArgs.html
-[`CommandEnvs`]: https://doc.rust-lang.org/std/process/struct.CommandEnvs.html
+- [Added an experimental backend for codegen with `libgccjit`.](https://github.com/rust-lang/rust/pull/87260/)
+
Version 1.56.1 (2021-11-01)
===========================
- New lints to detect the presence of bidirectional-override Unicode
- codepoints in the compiled source code ([CVE-2021-42574])
+ codepoints in the compiled source code ([CVE-2021-42574](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-42574))
-[CVE-2021-42574]: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-42574
Version 1.56.0 (2021-10-21)
========================
@@ -1898,24 +1544,23 @@ Version 1.56.0 (2021-10-21)
Language
--------
-- [The 2021 Edition is now stable.][rust#88100]
- See [the edition guide][rust-2021-edition-guide] for more details.
-- [The pattern in `binding @ pattern` can now also introduce new bindings.][rust#85305]
-- [Union field access is permitted in `const fn`.][rust#85769]
+- [The 2021 Edition is now stable.](https://github.com/rust-lang/rust/pull/88100)
+ See [the edition guide](https://doc.rust-lang.org/edition-guide/rust-2021/index.html) for more details.
+- [The pattern in `binding @ pattern` can now also introduce new bindings.](https://github.com/rust-lang/rust/pull/85305)
+- [Union field access is permitted in `const fn`.](https://github.com/rust-lang/rust/pull/85769#issuecomment-854363720)
-[rust-2021-edition-guide]: https://doc.rust-lang.org/nightly/edition-guide/rust-2021/index.html
Compiler
--------
-- [Upgrade to LLVM 13.][rust#87570]
-- [Support memory, address, and thread sanitizers on aarch64-unknown-freebsd.][rust#88023]
-- [Allow specifying a deployment target version for all iOS targets][rust#87699]
-- [Warnings can be forced on with `--force-warn`.][rust#87472]
+- [Upgrade to LLVM 13.](https://github.com/rust-lang/rust/pull/87570)
+- [Support memory, address, and thread sanitizers on aarch64-unknown-freebsd.](https://github.com/rust-lang/rust/pull/88023)
+- [Allow specifying a deployment target version for all iOS targets](https://github.com/rust-lang/rust/pull/87699)
+- [Warnings can be forced on with `--force-warn`.](https://github.com/rust-lang/rust/pull/87472)
This feature is primarily intended for usage by `cargo fix`, rather than end users.
-- [Promote `aarch64-apple-ios-sim` to Tier 2\*.][rust#87760]
-- [Add `powerpc-unknown-freebsd` at Tier 3\*.][rust#87370]
-- [Add `riscv32imc-esp-espidf` at Tier 3\*.][rust#87666]
+- [Promote `aarch64-apple-ios-sim` to Tier 2\*.](https://github.com/rust-lang/rust/pull/87760)
+- [Add `powerpc-unknown-freebsd` at Tier 3\*.](https://github.com/rust-lang/rust/pull/87370)
+- [Add `riscv32imc-esp-espidf` at Tier 3\*.](https://github.com/rust-lang/rust/pull/87666)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -1923,18 +1568,18 @@ information on Rust's tiered platform support.
Libraries
---------
-- [Allow writing of incomplete UTF-8 sequences via stdout/stderr on Windows.][rust#83342]
+- [Allow writing of incomplete UTF-8 sequences via stdout/stderr on Windows.](https://github.com/rust-lang/rust/pull/83342)
The Windows console still requires valid Unicode, but this change allows
splitting a UTF-8 character across multiple write calls. This allows, for
instance, programs that just read and write data buffers (e.g. copying a file
to stdout) without regard for Unicode or character boundaries.
-- [Prefer `AtomicU{64,128}` over Mutex for Instant backsliding protection.][rust#83093]
+- [Prefer `AtomicU{64,128}` over Mutex for Instant backsliding protection.](https://github.com/rust-lang/rust/pull/83093)
For this use case, atomics scale much better under contention.
-- [Implement `Extend<(A, B)>` for `(Extend, Extend)`][rust#85835]
-- [impl Default, Copy, Clone for std::io::Sink and std::io::Empty][rust#86744]
-- [`impl From<[(K, V); N]>` for all collections.][rust#84111]
-- [Remove `P: Unpin` bound on impl Future for Pin.][rust#81363]
-- [Treat invalid environment variable names as nonexistent.][rust#86183]
+- [Implement `Extend<(A, B)>` for `(Extend, Extend)`](https://github.com/rust-lang/rust/pull/85835)
+- [impl Default, Copy, Clone for std::io::Sink and std::io::Empty](https://github.com/rust-lang/rust/pull/86744)
+- [`impl From<[(K, V); N]>` for all collections.](https://github.com/rust-lang/rust/pull/84111)
+- [Remove `P: Unpin` bound on impl Future for Pin.](https://github.com/rust-lang/rust/pull/81363)
+- [Treat invalid environment variable names as nonexistent.](https://github.com/rust-lang/rust/pull/86183)
Previously, the environment functions would panic if given a variable name
with an internal null character or equal sign (`=`). Now, these functions will
just treat such names as nonexistent variables, since the OS cannot represent
@@ -1943,32 +1588,32 @@ Libraries
Stabilised APIs
---------------
-- [`std::os::unix::fs::chroot`]
-- [`UnsafeCell::raw_get`]
-- [`BufWriter::into_parts`]
-- [`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`]
+- [`std::os::unix::fs::chroot`](https://doc.rust-lang.org/std/os/unix/fs/fn.chroot.html)
+- [`UnsafeCell::raw_get`](https://doc.rust-lang.org/std/cell/struct.UnsafeCell.html#method.raw_get)
+- [`BufWriter::into_parts`](https://doc.rust-lang.org/std/io/struct.BufWriter.html#method.into_parts)
+- [`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`](https://github.com/rust-lang/rust/pull/84662)
These APIs were previously stable in `std`, but are now also available in `core`.
-- [`Vec::shrink_to`]
-- [`String::shrink_to`]
-- [`OsString::shrink_to`]
-- [`PathBuf::shrink_to`]
-- [`BinaryHeap::shrink_to`]
-- [`VecDeque::shrink_to`]
-- [`HashMap::shrink_to`]
-- [`HashSet::shrink_to`]
+- [`Vec::shrink_to`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.shrink_to)
+- [`String::shrink_to`](https://doc.rust-lang.org/std/string/struct.String.html#method.shrink_to)
+- [`OsString::shrink_to`](https://doc.rust-lang.org/std/ffi/struct.OsString.html#method.shrink_to)
+- [`PathBuf::shrink_to`](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.shrink_to)
+- [`BinaryHeap::shrink_to`](https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#method.shrink_to)
+- [`VecDeque::shrink_to`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.shrink_to)
+- [`HashMap::shrink_to`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.shrink_to)
+- [`HashSet::shrink_to`](https://doc.rust-lang.org/std/collections/hash_set/struct.HashSet.html#method.shrink_to)
These APIs are now usable in const contexts:
-- [`std::mem::transmute`]
-- [`[T]::first`][`slice::first`]
-- [`[T]::split_first`][`slice::split_first`]
-- [`[T]::last`][`slice::last`]
-- [`[T]::split_last`][`slice::split_last`]
+- [`std::mem::transmute`](https://doc.rust-lang.org/std/mem/fn.transmute.html)
+- [`[T]::first`](https://doc.rust-lang.org/std/primitive.slice.html#method.first)
+- [`[T]::split_first`](http://doc.rust-lang.org/std/primitive.slice.html#method.split_first)
+- [`[T]::last`](https://doc.rust-lang.org/std/primitive.slice.html#method.last)
+- [`[T]::split_last`](http://doc.rust-lang.org/std/primitive.slice.html#method.split_last)
Cargo
-----
-- [Cargo supports specifying a minimum supported Rust version in Cargo.toml.][`rust-version`]
+- [Cargo supports specifying a minimum supported Rust version in Cargo.toml.](https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field)
This has no effect at present on dependency version selection.
We encourage crates to specify their minimum supported Rust version, and we encourage CI systems
that support Rust code to include a crate's specified minimum version in the test matrix for that
@@ -1977,17 +1622,17 @@ Cargo
Compatibility notes
-------------------
-- [Update to new argument parsing rules on Windows.][rust#87580]
+- [Update to new argument parsing rules on Windows.](https://github.com/rust-lang/rust/pull/87580)
This adjusts Rust's standard library to match the behavior of the standard
libraries for C/C++. The rules have changed slightly over time, and this PR
brings us to the latest set of rules (changed in 2008).
-- [Disallow the aapcs calling convention on aarch64][rust#88399]
+- [Disallow the aapcs calling convention on aarch64](https://github.com/rust-lang/rust/pull/88399)
This was already not supported by LLVM; this change surfaces this lack of
support with a better error message.
-- [Make `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` warn by default][rust#87385]
-- [Warn when an escaped newline skips multiple lines.][rust#87671]
+- [Make `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` warn by default](https://github.com/rust-lang/rust/pull/87385)
+- [Warn when an escaped newline skips multiple lines.](https://github.com/rust-lang/rust/pull/87671)
- [Calls to `libc::getpid` / `std::process::id` from `Command::pre_exec`
- may return different values on glibc <= 2.24.][rust#81825]
+ may return different values on glibc <= 2.24.](https://github.com/rust-lang/rust/pull/81825#issuecomment-808406918)
Rust now invokes the `clone3` system call directly, when available, to use new functionality
available via that system call. Older versions of glibc cache the result of `getpid`, and only
update that cache when calling glibc's clone/fork functions, so a direct system call bypasses
@@ -1999,54 +1644,12 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc
and related tools.
-- [LLVM is compiled with PGO in published x86_64-unknown-linux-gnu artifacts.][rust#88069]
+- [LLVM is compiled with PGO in published x86_64-unknown-linux-gnu artifacts.](https://github.com/rust-lang/rust/pull/88069)
This improves the performance of most Rust builds.
-- [Unify representation of macros in internal data structures.][rust#88019]
+- [Unify representation of macros in internal data structures.](https://github.com/rust-lang/rust/pull/88019)
This change fixes a host of bugs with the handling of macros by the compiler,
as well as rustdoc.
-[`std::os::unix::fs::chroot`]: https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chroot.html
-[`UnsafeCell::raw_get`]: https://doc.rust-lang.org/stable/std/cell/struct.UnsafeCell.html#method.raw_get
-[`BufWriter::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.BufWriter.html#method.into_parts
-[`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`]: https://github.com/rust-lang/rust/pull/84662
-[`Vec::shrink_to`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.shrink_to
-[`String::shrink_to`]: https://doc.rust-lang.org/stable/std/string/struct.String.html#method.shrink_to
-[`OsString::shrink_to`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.shrink_to
-[`PathBuf::shrink_to`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.shrink_to
-[`BinaryHeap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.shrink_to
-[`VecDeque::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.shrink_to
-[`HashMap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_map/struct.HashMap.html#method.shrink_to
-[`HashSet::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_set/struct.HashSet.html#method.shrink_to
-[`std::mem::transmute`]: https://doc.rust-lang.org/stable/std/mem/fn.transmute.html
-[`slice::first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.first
-[`slice::split_first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_first
-[`slice::last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last
-[`slice::split_last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_last
-[`rust-version`]: https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-rust-version-field
-[rust#87671]: https://github.com/rust-lang/rust/pull/87671
-[rust#86183]: https://github.com/rust-lang/rust/pull/86183
-[rust#87385]: https://github.com/rust-lang/rust/pull/87385
-[rust#88100]: https://github.com/rust-lang/rust/pull/88100
-[rust#85305]: https://github.com/rust-lang/rust/pull/85305
-[rust#88069]: https://github.com/rust-lang/rust/pull/88069
-[rust#87472]: https://github.com/rust-lang/rust/pull/87472
-[rust#87699]: https://github.com/rust-lang/rust/pull/87699
-[rust#87570]: https://github.com/rust-lang/rust/pull/87570
-[rust#88023]: https://github.com/rust-lang/rust/pull/88023
-[rust#87760]: https://github.com/rust-lang/rust/pull/87760
-[rust#87370]: https://github.com/rust-lang/rust/pull/87370
-[rust#87580]: https://github.com/rust-lang/rust/pull/87580
-[rust#83342]: https://github.com/rust-lang/rust/pull/83342
-[rust#83093]: https://github.com/rust-lang/rust/pull/83093
-[rust#85835]: https://github.com/rust-lang/rust/pull/85835
-[rust#86744]: https://github.com/rust-lang/rust/pull/86744
-[rust#81363]: https://github.com/rust-lang/rust/pull/81363
-[rust#84111]: https://github.com/rust-lang/rust/pull/84111
-[rust#85769]: https://github.com/rust-lang/rust/pull/85769#issuecomment-854363720
-[rust#88399]: https://github.com/rust-lang/rust/pull/88399
-[rust#81825]: https://github.com/rust-lang/rust/pull/81825#issuecomment-808406918
-[rust#88019]: https://github.com/rust-lang/rust/pull/88019
-[rust#87666]: https://github.com/rust-lang/rust/pull/87666
Version 1.55.0 (2021-09-09)
============================
@@ -2054,13 +1657,13 @@ Version 1.55.0 (2021-09-09)
Language
--------
- [You can now write open "from" range patterns (`X..`), which will start at `X` and
- will end at the maximum value of the integer.][83918]
+ will end at the maximum value of the integer.](https://github.com/rust-lang/rust/pull/83918)
- [You can now explicitly import the prelude of different editions
- through `std::prelude` (e.g. `use std::prelude::rust_2021::*;`).][86294]
+ through `std::prelude` (e.g. `use std::prelude::rust_2021::*;`).](https://github.com/rust-lang/rust/pull/86294)
Compiler
--------
-- [Added tier 3\* support for `powerpc64le-unknown-freebsd`.][83572]
+- [Added tier 3\* support for `powerpc64le-unknown-freebsd`.](https://github.com/rust-lang/rust/pull/83572)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -2068,113 +1671,77 @@ Compiler
Libraries
---------
-- [Updated std's float parsing to use the Eisel-Lemire algorithm.][86761]
+- [Updated std's float parsing to use the Eisel-Lemire algorithm.](https://github.com/rust-lang/rust/pull/86761)
These improvements should in general provide faster string parsing of floats,
no longer reject certain valid floating point values, and reduce
the produced code size for non-stripped artifacts.
-- [`string::Drain` now implements `AsRef` and `AsRef<[u8]>`.][86858]
+- [`string::Drain` now implements `AsRef` and `AsRef<[u8]>`.](https://github.com/rust-lang/rust/pull/86858)
Stabilised APIs
---------------
-- [`Bound::cloned`]
-- [`Drain::as_str`]
-- [`IntoInnerError::into_error`]
-- [`IntoInnerError::into_parts`]
-- [`MaybeUninit::assume_init_mut`]
-- [`MaybeUninit::assume_init_ref`]
-- [`MaybeUninit::write`]
-- [`array::map`]
-- [`ops::ControlFlow`]
-- [`x86::_bittest`]
-- [`x86::_bittestandcomplement`]
-- [`x86::_bittestandreset`]
-- [`x86::_bittestandset`]
-- [`x86_64::_bittest64`]
-- [`x86_64::_bittestandcomplement64`]
-- [`x86_64::_bittestandreset64`]
-- [`x86_64::_bittestandset64`]
+- [`Bound::cloned`](https://doc.rust-lang.org/std/ops/enum.Bound.html#method.cloned)
+- [`Drain::as_str`](https://doc.rust-lang.org/std/string/struct.Drain.html#method.as_str)
+- [`IntoInnerError::into_error`](https://doc.rust-lang.org/std/io/struct.IntoInnerError.html#method.into_error)
+- [`IntoInnerError::into_parts`](https://doc.rust-lang.org/std/io/struct.IntoInnerError.html#method.into_parts)
+- [`MaybeUninit::assume_init_mut`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_mut)
+- [`MaybeUninit::assume_init_ref`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_ref)
+- [`MaybeUninit::write`](https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.write)
+- [`array::map`](https://doc.rust-lang.org/std/primitive.array.html#method.map)
+- [`ops::ControlFlow`](https://doc.rust-lang.org/std/ops/enum.ControlFlow.html)
+- [`x86::_bittest`](https://doc.rust-lang.org/core/arch/x86/fn._bittest.html)
+- [`x86::_bittestandcomplement`](https://doc.rust-lang.org/core/arch/x86/fn._bittestandcomplement.html)
+- [`x86::_bittestandreset`](https://doc.rust-lang.org/core/arch/x86/fn._bittestandreset.html)
+- [`x86::_bittestandset`](https://doc.rust-lang.org/core/arch/x86/fn._bittestandset.html)
+- [`x86_64::_bittest64`](https://doc.rust-lang.org/core/arch/x86_64/fn._bittest64.html)
+- [`x86_64::_bittestandcomplement64`](https://doc.rust-lang.org/core/arch/x86_64/fn._bittestandcomplement64.html)
+- [`x86_64::_bittestandreset64`](https://doc.rust-lang.org/core/arch/x86_64/fn._bittestandreset64.html)
+- [`x86_64::_bittestandset64`](https://doc.rust-lang.org/core/arch/x86_64/fn._bittestandset64.html)
The following previously stable functions are now `const`.
-- [`str::from_utf8_unchecked`]
+- [`str::from_utf8_unchecked`](https://doc.rust-lang.org/std/str/fn.from_utf8_unchecked.html)
Cargo
-----
- [Cargo will now deduplicate compiler diagnostics to the terminal when invoking
- rustc in parallel such as when using `cargo test`.][cargo/9675]
+ rustc in parallel such as when using `cargo test`.](https://github.com/rust-lang/cargo/pull/9675)
- [The package definition in `cargo metadata` now includes the `"default_run"`
- field from the manifest.][cargo/9550]
-- [Added `cargo d` as an alias for `cargo doc`.][cargo/9680]
+ field from the manifest.](https://github.com/rust-lang/cargo/pull/9550)
+- [Added `cargo d` as an alias for `cargo doc`.](https://github.com/rust-lang/cargo/pull/9680)
- [Added `{lib}` as formatting option for `cargo tree` to print the `"lib_name"`
- of packages.][cargo/9663]
+ of packages.](https://github.com/rust-lang/cargo/pull/9663)
Rustdoc
-------
-- [Added "Go to item on exact match" search option.][85876]
+- [Added "Go to item on exact match" search option.](https://github.com/rust-lang/rust/pull/85876)
- [The "Implementors" section on traits no longer shows redundant
- method definitions.][85970]
-- [Trait implementations are toggled open by default.][86260] This should make the
+ method definitions.](https://github.com/rust-lang/rust/pull/85970)
+- [Trait implementations are toggled open by default.](https://github.com/rust-lang/rust/pull/86260) This should make the
implementations more searchable by tools like `CTRL+F` in your browser.
- [Intra-doc links should now correctly resolve associated items (e.g. methods)
- through type aliases.][86334]
+ through type aliases.](https://github.com/rust-lang/rust/pull/86334)
- [Traits which are marked with `#[doc(hidden)]` will no longer appear in the
- "Trait Implementations" section.][86513]
+ "Trait Implementations" section.](https://github.com/rust-lang/rust/pull/86513)
Compatibility Notes
-------------------
- [std functions that return an `io::Error` will no longer use the
- `ErrorKind::Other` variant.][85746] This is to better reflect that these
+ `ErrorKind::Other` variant.](https://github.com/rust-lang/rust/pull/85746) This is to better reflect that these
kinds of errors could be categorised [into newer more specific `ErrorKind`
- variants][79965], and that they do not represent a user error.
+ variants](https://github.com/rust-lang/rust/pull/79965), and that they do not represent a user error.
- [Using environment variable names with `process::Command` on Windows now
- behaves as expected.][85270] Previously using environment variables with
+ behaves as expected.](https://github.com/rust-lang/rust/pull/85270) Previously using environment variables with
`Command` would cause them to be ASCII-uppercased.
- [Rustdoc will now warn on using rustdoc lints that aren't prefixed
- with `rustdoc::`][86849]
+ with `rustdoc::`](https://github.com/rust-lang/rust/pull/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)
+ [documentation](https://doc.rust-lang.org/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
-[86334]: https://github.com/rust-lang/rust/pull/86334
-[86260]: https://github.com/rust-lang/rust/pull/86260
-[85970]: https://github.com/rust-lang/rust/pull/85970
-[85876]: https://github.com/rust-lang/rust/pull/85876
-[83572]: https://github.com/rust-lang/rust/pull/83572
-[86294]: https://github.com/rust-lang/rust/pull/86294
-[86858]: https://github.com/rust-lang/rust/pull/86858
-[86761]: https://github.com/rust-lang/rust/pull/86761
-[85746]: https://github.com/rust-lang/rust/pull/85746
-[85270]: https://github.com/rust-lang/rust/pull/85270
-[83918]: https://github.com/rust-lang/rust/pull/83918
-[79965]: https://github.com/rust-lang/rust/pull/79965
-[cargo/9663]: https://github.com/rust-lang/cargo/pull/9663
-[cargo/9675]: https://github.com/rust-lang/cargo/pull/9675
-[cargo/9550]: https://github.com/rust-lang/cargo/pull/9550
-[cargo/9680]: https://github.com/rust-lang/cargo/pull/9680
-[`array::map`]: https://doc.rust-lang.org/stable/std/primitive.array.html#method.map
-[`Bound::cloned`]: https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.cloned
-[`Drain::as_str`]: https://doc.rust-lang.org/stable/std/string/struct.Drain.html#method.as_str
-[`IntoInnerError::into_error`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_error
-[`IntoInnerError::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_parts
-[`MaybeUninit::assume_init_mut`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_mut
-[`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref
-[`MaybeUninit::write`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write
-[`ops::ControlFlow`]: https://doc.rust-lang.org/stable/std/ops/enum.ControlFlow.html
-[`str::from_utf8_unchecked`]: https://doc.rust-lang.org/stable/std/str/fn.from_utf8_unchecked.html
-[`x86::_bittest`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittest.html
-[`x86::_bittestandcomplement`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandcomplement.html
-[`x86::_bittestandreset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandreset.html
-[`x86::_bittestandset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandset.html
-[`x86_64::_bittest64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittest64.html
-[`x86_64::_bittestandcomplement64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandcomplement64.html
-[`x86_64::_bittestandreset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandreset64.html
-[`x86_64::_bittestandset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandset64.html
Version 1.54.0 (2021-07-29)
@@ -2183,7 +1750,7 @@ Version 1.54.0 (2021-07-29)
Language
-----------------------
-- [You can now use macros for values in some built-in attributes.][83366]
+- [You can now use macros for values in some built-in attributes.](https://github.com/rust-lang/rust/pull/83366)
This primarily allows you to call macros within the `#[doc]` attribute. For
example, to include external documentation in your crate, you can now write
the following:
@@ -2192,9 +1759,9 @@ Language
```
- [You can now cast between unsized slice types (and types which contain
- unsized slices) in `const fn`.][85078]
+ unsized slices) in `const fn`.](https://github.com/rust-lang/rust/pull/85078)
- [You can now use multiple generic lifetimes with `impl Trait` where the
- lifetimes don't explicitly outlive another.][84701] In code this means
+ lifetimes don't explicitly outlive another.](https://github.com/rust-lang/rust/pull/84701) In code this means
that you can now have `impl Trait<'a, 'b>` where as before you could
only have `impl Trait<'a, 'b> where 'b: 'a`.
@@ -2203,15 +1770,15 @@ Compiler
- [Rustc will now search for custom JSON targets in
`/lib/rustlib//target.json` where `/` is the "sysroot"
- directory.][83800] You can find your sysroot directory by running
+ directory.](https://github.com/rust-lang/rust/pull/83800) You can find your sysroot directory by running
`rustc --print sysroot`.
-- [Added `wasm` as a `target_family` for WebAssembly platforms.][84072]
+- [Added `wasm` as a `target_family` for WebAssembly platforms.](https://github.com/rust-lang/rust/pull/84072)
- [You can now use `#[target_feature]` on safe functions when targeting
- WebAssembly platforms.][84988]
-- [Improved debugger output for enums on Windows MSVC platforms.][85292]
+ WebAssembly platforms.](https://github.com/rust-lang/rust/pull/84988)
+- [Improved debugger output for enums on Windows MSVC platforms.](https://github.com/rust-lang/rust/pull/85292)
- [Added tier 3\* support for `bpfel-unknown-none`
- and `bpfeb-unknown-none`.][79608]
-- [`-Zmutable-noalias=yes`][82834] is enabled by default when using LLVM 12 or above.
+ and `bpfeb-unknown-none`.](https://github.com/rust-lang/rust/pull/79608)
+- [`-Zmutable-noalias=yes`](https://github.com/rust-lang/rust/pull/82834) is enabled by default when using LLVM 12 or above.
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -2219,11 +1786,11 @@ Compiler
Libraries
-----------------------
-- [`panic::panic_any` will now `#[track_caller]`.][85745]
-- [Added `OutOfMemory` as a variant of `io::ErrorKind`.][84744]
-- [ `proc_macro::Literal` now implements `FromStr`.][84717]
+- [`panic::panic_any` will now `#[track_caller]`.](https://github.com/rust-lang/rust/pull/85745)
+- [Added `OutOfMemory` as a variant of `io::ErrorKind`.](https://github.com/rust-lang/rust/pull/84744)
+- [ `proc_macro::Literal` now implements `FromStr`.](https://github.com/rust-lang/rust/pull/84717)
- [The implementations of vendor intrinsics in core::arch have been
- significantly refactored.][83278] The main user-visible changes are
+ significantly refactored.](https://github.com/rust-lang/rust/pull/83278) The main user-visible changes are
a 50% reduction in the size of libcore.rlib and stricter validation
of constant operands passed to intrinsics. The latter is technically
a breaking change, but allows Rust to more closely match the C vendor
@@ -2232,83 +1799,54 @@ Libraries
Stabilized APIs
---------------
-- [`BTreeMap::into_keys`]
-- [`BTreeMap::into_values`]
-- [`HashMap::into_keys`]
-- [`HashMap::into_values`]
-- [`arch::wasm32`]
-- [`VecDeque::binary_search`]
-- [`VecDeque::binary_search_by`]
-- [`VecDeque::binary_search_by_key`]
-- [`VecDeque::partition_point`]
+- [`BTreeMap::into_keys`](https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_keys)
+- [`BTreeMap::into_values`](https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_values)
+- [`HashMap::into_keys`](https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_keys)
+- [`HashMap::into_values`](https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_values)
+- [`arch::wasm32`](https://doc.rust-lang.org/core/arch/wasm32/index.html)
+- [`VecDeque::binary_search`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search)
+- [`VecDeque::binary_search_by`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search_by)
+- [`VecDeque::binary_search_by_key`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search_by_key)
+- [`VecDeque::partition_point`](https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.partition_point)
Cargo
-----
- [Added the `--prune ` option to `cargo-tree` to remove a package from
- the dependency graph.][cargo/9520]
+ the dependency graph.](https://github.com/rust-lang/cargo/pull/9520)
- [Added the `--depth` option to `cargo-tree` to print only to a certain depth
- in the tree ][cargo/9499]
+ in the tree ](https://github.com/rust-lang/cargo/pull/9499)
- [Added the `no-proc-macro` value to `cargo-tree --edges` to hide procedural
- macro dependencies.][cargo/9488]
-- [A new environment variable named `CARGO_TARGET_TMPDIR` is available.][cargo/9375]
+ macro dependencies.](https://github.com/rust-lang/cargo/pull/9488)
+- [A new environment variable named `CARGO_TARGET_TMPDIR` is available.](https://github.com/rust-lang/cargo/pull/9375)
This variable points to a directory that integration tests and benches
can use as a "scratchpad" for testing filesystem operations.
Compatibility Notes
-------------------
-- [Mixing Option and Result via `?` is no longer permitted in closures for inferred types.][86831]
+- [Mixing Option and Result via `?` is no longer permitted in closures for inferred types.](https://github.com/rust-lang/rust/issues/86831)
- [Previously unsound code is no longer permitted where different constructors in branches
- could require different lifetimes.][85574]
-- As previously mentioned the [`std::arch` intrinsics now uses stricter const checking][83278]
+ could require different lifetimes.](https://github.com/rust-lang/rust/issues/85574)
+- As previously mentioned the [`std::arch` intrinsics now uses stricter const checking](https://github.com/rust-lang/rust/pull/83278)
than before and may reject some previously accepted code.
- [`i128` multiplication on Cortex M0+ platforms currently unconditionally causes overflow
- when compiled with `codegen-units = 1`.][86063]
-
-[85574]: https://github.com/rust-lang/rust/issues/85574
-[86831]: https://github.com/rust-lang/rust/issues/86831
-[86063]: https://github.com/rust-lang/rust/issues/86063
-[79608]: https://github.com/rust-lang/rust/pull/79608
-[84988]: https://github.com/rust-lang/rust/pull/84988
-[84701]: https://github.com/rust-lang/rust/pull/84701
-[84072]: https://github.com/rust-lang/rust/pull/84072
-[85745]: https://github.com/rust-lang/rust/pull/85745
-[84744]: https://github.com/rust-lang/rust/pull/84744
-[85078]: https://github.com/rust-lang/rust/pull/85078
-[84717]: https://github.com/rust-lang/rust/pull/84717
-[83800]: https://github.com/rust-lang/rust/pull/83800
-[83366]: https://github.com/rust-lang/rust/pull/83366
-[83278]: https://github.com/rust-lang/rust/pull/83278
-[85292]: https://github.com/rust-lang/rust/pull/85292
-[82834]: https://github.com/rust-lang/rust/pull/82834
-[cargo/9520]: https://github.com/rust-lang/cargo/pull/9520
-[cargo/9499]: https://github.com/rust-lang/cargo/pull/9499
-[cargo/9488]: https://github.com/rust-lang/cargo/pull/9488
-[cargo/9375]: https://github.com/rust-lang/cargo/pull/9375
-[`BTreeMap::into_keys`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_keys
-[`BTreeMap::into_values`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_values
-[`HashMap::into_keys`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_keys
-[`HashMap::into_values`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_values
-[`arch::wasm32`]: https://doc.rust-lang.org/core/arch/wasm32/index.html
-[`VecDeque::binary_search`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search
-[`VecDeque::binary_search_by`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search_by
-
-[`VecDeque::binary_search_by_key`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search_by_key
-
-[`VecDeque::partition_point`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.partition_point
+ when compiled with `codegen-units = 1`.](https://github.com/rust-lang/rust/issues/86063)
+
+
+
Version 1.53.0 (2021-06-17)
============================
Language
-----------------------
-- [You can now use unicode for identifiers.][83799] This allows multilingual
+- [You can now use unicode for identifiers.](https://github.com/rust-lang/rust/pull/83799) This allows multilingual
identifiers but still doesn't allow glyphs that are not considered characters
such as `◆` or `🦀`. More specifically you can now use any identifier that
matches the UAX #31 "Unicode Identifier and Pattern Syntax" standard. This
is the same standard as languages like Python, however Rust uses NFC
normalization which may be different from other languages.
-- [You can now specify "or patterns" inside pattern matches.][79278]
+- [You can now specify "or patterns" inside pattern matches.](https://github.com/rust-lang/rust/pull/79278)
Previously you could only use `|` (OR) on complete patterns. E.g.
```rust
let x = Some(2u8);
@@ -2317,15 +1855,15 @@ Language
// Now
matches!(x, Some(1 | 2));
```
-- [Added the `:pat_param` `macro_rules!` matcher.][83386] This matcher
+- [Added the `:pat_param` `macro_rules!` matcher.](https://github.com/rust-lang/rust/pull/83386) This matcher
has the same semantics as the `:pat` matcher. This is to allow `:pat`
to change semantics to being a pattern fragment in a future edition.
Compiler
-----------------------
-- [Updated the minimum external LLVM version to LLVM 10.][83387]
-- [Added Tier 3\* support for the `wasm64-unknown-unknown` target.][80525]
-- [Improved debuginfo for closures and async functions on Windows MSVC.][83941]
+- [Updated the minimum external LLVM version to LLVM 10.](https://github.com/rust-lang/rust/pull/83387)
+- [Added Tier 3\* support for the `wasm64-unknown-unknown` target.](https://github.com/rust-lang/rust/pull/80525)
+- [Improved debuginfo for closures and async functions on Windows MSVC.](https://github.com/rust-lang/rust/pull/83941)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -2333,82 +1871,82 @@ information on Rust's tiered platform support.
Libraries
-----------------------
- [Abort messages will now forward to `android_set_abort_message` on
- Android platforms when available.][81469]
-- [`slice::IterMut<'_, T>` now implements `AsRef<[T]>`][82771]
-- [Arrays of any length now implement `IntoIterator`.][84147]
+ Android platforms when available.](https://github.com/rust-lang/rust/pull/81469)
+- [`slice::IterMut<'_, T>` now implements `AsRef<[T]>`](https://github.com/rust-lang/rust/pull/82771)
+- [Arrays of any length now implement `IntoIterator`.](https://github.com/rust-lang/rust/pull/84147)
Currently calling `.into_iter()` as a method on an array will
return `impl Iterator- `, but this may change in a
future edition to change `Item` to `T`. Calling `IntoIterator::into_iter`
directly on arrays will provide `impl Iterator
- ` as expected.
- [`leading_zeros`, and `trailing_zeros` are now available on all
- `NonZero` integer types.][84082]
+ `NonZero` integer types.](https://github.com/rust-lang/rust/pull/84082)
- [`{f32, f64}::from_str` now parse and print special values
- (`NaN`, `-0`) according to IEEE 754.][78618]
-- [You can now index into slices using `(Bound, Bound)`.][77704]
-- [Add the `BITS` associated constant to all numeric types.][82565]
+ (`NaN`, `-0`) according to IEEE 754.](https://github.com/rust-lang/rust/pull/78618)
+- [You can now index into slices using `(Bound, Bound)`.](https://github.com/rust-lang/rust/pull/77704)
+- [Add the `BITS` associated constant to all numeric types.](https://github.com/rust-lang/rust/pull/82565)
Stabilised APIs
---------------
-- [`AtomicBool::fetch_update`]
-- [`AtomicPtr::fetch_update`]
-- [`BTreeMap::retain`]
-- [`BTreeSet::retain`]
-- [`BufReader::seek_relative`]
-- [`DebugStruct::non_exhaustive`]
-- [`Duration::MAX`]
-- [`Duration::ZERO`]
-- [`Duration::is_zero`]
-- [`Duration::saturating_add`]
-- [`Duration::saturating_mul`]
-- [`Duration::saturating_sub`]
-- [`ErrorKind::Unsupported`]
-- [`Option::insert`]
-- [`Ordering::is_eq`]
-- [`Ordering::is_ge`]
-- [`Ordering::is_gt`]
-- [`Ordering::is_le`]
-- [`Ordering::is_lt`]
-- [`Ordering::is_ne`]
-- [`OsStr::is_ascii`]
-- [`OsStr::make_ascii_lowercase`]
-- [`OsStr::make_ascii_uppercase`]
-- [`OsStr::to_ascii_lowercase`]
-- [`OsStr::to_ascii_uppercase`]
-- [`Peekable::peek_mut`]
-- [`Rc::decrement_strong_count`]
-- [`Rc::increment_strong_count`]
-- [`Vec::extend_from_within`]
-- [`array::from_mut`]
-- [`array::from_ref`]
-- [`cmp::max_by_key`]
-- [`cmp::max_by`]
-- [`cmp::min_by_key`]
-- [`cmp::min_by`]
-- [`f32::is_subnormal`]
-- [`f64::is_subnormal`]
+- [`AtomicBool::fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicBool.html#method.fetch_update)
+- [`AtomicPtr::fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicPtr.html#method.fetch_update)
+- [`BTreeMap::retain`](https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.retain)
+- [`BTreeSet::retain`](https://doc.rust-lang.org/std/collections/struct.BTreeSet.html#method.retain)
+- [`BufReader::seek_relative`](https://doc.rust-lang.org/std/io/struct.BufReader.html#method.seek_relative)
+- [`DebugStruct::non_exhaustive`](https://doc.rust-lang.org/std/fmt/struct.DebugStruct.html#method.finish_non_exhaustive)
+- [`Duration::MAX`](https://doc.rust-lang.org/std/time/struct.Duration.html#associatedconstant.MAX)
+- [`Duration::ZERO`](https://doc.rust-lang.org/std/time/struct.Duration.html#associatedconstant.ZERO)
+- [`Duration::is_zero`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.is_zero)
+- [`Duration::saturating_add`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_add)
+- [`Duration::saturating_mul`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_mul)
+- [`Duration::saturating_sub`](https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_sub)
+- [`ErrorKind::Unsupported`](https://doc.rust-lang.org/std/io/enum.ErrorKind.html#variant.Unsupported)
+- [`Option::insert`](https://doc.rust-lang.org/std/option/enum.Option.html#method.insert)
+- [`Ordering::is_eq`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_eq)
+- [`Ordering::is_ge`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_ge)
+- [`Ordering::is_gt`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_gt)
+- [`Ordering::is_le`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_le)
+- [`Ordering::is_lt`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_lt)
+- [`Ordering::is_ne`](https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_ne)
+- [`OsStr::is_ascii`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.is_ascii)
+- [`OsStr::make_ascii_lowercase`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.make_ascii_lowercase)
+- [`OsStr::make_ascii_uppercase`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.make_ascii_uppercase)
+- [`OsStr::to_ascii_lowercase`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_ascii_lowercase)
+- [`OsStr::to_ascii_uppercase`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_ascii_uppercase)
+- [`Peekable::peek_mut`](https://doc.rust-lang.org/std/iter/struct.Peekable.html#method.peek_mut)
+- [`Rc::decrement_strong_count`](https://doc.rust-lang.org/std/rc/struct.Rc.html#method.increment_strong_count)
+- [`Rc::increment_strong_count`](https://doc.rust-lang.org/std/rc/struct.Rc.html#method.increment_strong_count)
+- [`Vec::extend_from_within`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.extend_from_within)
+- [`array::from_mut`](https://doc.rust-lang.org/std/array/fn.from_mut.html)
+- [`array::from_ref`](https://doc.rust-lang.org/std/array/fn.from_ref.html)
+- [`cmp::max_by_key`](https://doc.rust-lang.org/std/cmp/fn.max_by_key.html)
+- [`cmp::max_by`](https://doc.rust-lang.org/std/cmp/fn.max_by.html)
+- [`cmp::min_by_key`](https://doc.rust-lang.org/std/cmp/fn.min_by_key.html)
+- [`cmp::min_by`](https://doc.rust-lang.org/std/cmp/fn.min_by.html)
+- [`f32::is_subnormal`](https://doc.rust-lang.org/std/primitive.f64.html#method.is_subnormal)
+- [`f64::is_subnormal`](https://doc.rust-lang.org/std/primitive.f64.html#method.is_subnormal)
Cargo
-----------------------
- [Cargo now supports git repositories where the default `HEAD` branch is not
- "master".][cargo/9392] This also includes a switch to the version 3 `Cargo.lock` format
+ "master".](https://github.com/rust-lang/cargo/pull/9392) This also includes a switch to the version 3 `Cargo.lock` format
which can handle default branches correctly.
-- [macOS targets now default to `unpacked` split-debuginfo.][cargo/9298]
+- [macOS targets now default to `unpacked` split-debuginfo.](https://github.com/rust-lang/cargo/pull/9298)
- [The `authors` field is no longer included in `Cargo.toml` for new
- projects.][cargo/9282]
+ projects.](https://github.com/rust-lang/cargo/pull/9282)
Rustdoc
-----------------------
- [Added the `rustdoc::bare_urls` lint that warns when you have URLs
- without hyperlinks.][81764]
+ without hyperlinks.](https://github.com/rust-lang/rust/pull/81764)
Compatibility Notes
-------------------
-- [Implement token-based handling of attributes during expansion][82608]
+- [Implement token-based handling of attributes during expansion](https://github.com/rust-lang/rust/pull/82608)
- [`Ipv4::from_str` will now reject octal format IP addresses in addition
- to rejecting hexadecimal IP addresses.][83652] The octal format can lead
+ to rejecting hexadecimal IP addresses.](https://github.com/rust-lang/rust/pull/83652) The octal format can lead
to confusion and potential security vulnerabilities and [is no
- longer recommended][ietf6943].
-- [The added `BITS` constant may conflict with external definitions.][85667]
+ longer recommended](https://datatracker.ietf.org/doc/html/rfc6943#section-3.1.1).
+- [The added `BITS` constant may conflict with external definitions.](https://github.com/rust-lang/rust/pull/85667)
In particular, this was known to be a problem in the `lexical-core` crate,
but they have published fixes for semantic versions 0.4 through 0.7. To
update this dependency alone, use `cargo update -p lexical-core`.
@@ -2420,73 +1958,11 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.
-- [Rework the `std::sys::windows::alloc` implementation.][83065]
-- [rustdoc: Don't enter an infer_ctxt in get_blanket_impls for impls that aren't blanket impls.][82864]
-- [rustdoc: Only look at blanket impls in `get_blanket_impls`][83681]
-- [Rework rustdoc const type][82873]
-
-[85667]: https://github.com/rust-lang/rust/pull/85667
-[83386]: https://github.com/rust-lang/rust/pull/83386
-[82771]: https://github.com/rust-lang/rust/pull/82771
-[84147]: https://github.com/rust-lang/rust/pull/84147
-[84082]: https://github.com/rust-lang/rust/pull/84082
-[83799]: https://github.com/rust-lang/rust/pull/83799
-[83681]: https://github.com/rust-lang/rust/pull/83681
-[83652]: https://github.com/rust-lang/rust/pull/83652
-[83387]: https://github.com/rust-lang/rust/pull/83387
-[82873]: https://github.com/rust-lang/rust/pull/82873
-[82864]: https://github.com/rust-lang/rust/pull/82864
-[82608]: https://github.com/rust-lang/rust/pull/82608
-[82565]: https://github.com/rust-lang/rust/pull/82565
-[80525]: https://github.com/rust-lang/rust/pull/80525
-[79278]: https://github.com/rust-lang/rust/pull/79278
-[78618]: https://github.com/rust-lang/rust/pull/78618
-[77704]: https://github.com/rust-lang/rust/pull/77704
-[83941]: https://github.com/rust-lang/rust/pull/83941
-[83065]: https://github.com/rust-lang/rust/pull/83065
-[81764]: https://github.com/rust-lang/rust/pull/81764
-[81469]: https://github.com/rust-lang/rust/pull/81469
-[cargo/9298]: https://github.com/rust-lang/cargo/pull/9298
-[cargo/9282]: https://github.com/rust-lang/cargo/pull/9282
-[cargo/9392]: https://github.com/rust-lang/cargo/pull/9392
-[`AtomicBool::fetch_update`]: https://doc.rust-lang.org/std/sync/atomic/struct.AtomicBool.html#method.fetch_update
-[`AtomicPtr::fetch_update`]: https://doc.rust-lang.org/std/sync/atomic/struct.AtomicPtr.html#method.fetch_update
-[`BTreeMap::retain`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.retain
-[`BTreeSet::retain`]: https://doc.rust-lang.org/std/collections/struct.BTreeSet.html#method.retain
-[`BufReader::seek_relative`]: https://doc.rust-lang.org/std/io/struct.BufReader.html#method.seek_relative
-[`DebugStruct::non_exhaustive`]: https://doc.rust-lang.org/std/fmt/struct.DebugStruct.html#method.finish_non_exhaustive
-[`Duration::MAX`]: https://doc.rust-lang.org/std/time/struct.Duration.html#associatedconstant.MAX
-[`Duration::ZERO`]: https://doc.rust-lang.org/std/time/struct.Duration.html#associatedconstant.ZERO
-[`Duration::is_zero`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.is_zero
-[`Duration::saturating_add`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_add
-[`Duration::saturating_mul`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_mul
-[`Duration::saturating_sub`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.saturating_sub
-[`ErrorKind::Unsupported`]: https://doc.rust-lang.org/std/io/enum.ErrorKind.html#variant.Unsupported
-[`Option::insert`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.insert
-[`Ordering::is_eq`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_eq
-[`Ordering::is_ge`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_ge
-[`Ordering::is_gt`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_gt
-[`Ordering::is_le`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_le
-[`Ordering::is_lt`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_lt
-[`Ordering::is_ne`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.is_ne
-[`OsStr::is_ascii`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.is_ascii
-[`OsStr::make_ascii_lowercase`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.make_ascii_lowercase
-[`OsStr::make_ascii_uppercase`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.make_ascii_uppercase
-[`OsStr::to_ascii_lowercase`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_ascii_lowercase
-[`OsStr::to_ascii_uppercase`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_ascii_uppercase
-[`Peekable::peek_mut`]: https://doc.rust-lang.org/std/iter/struct.Peekable.html#method.peek_mut
-[`Rc::decrement_strong_count`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.increment_strong_count
-[`Rc::increment_strong_count`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.increment_strong_count
-[`Vec::extend_from_within`]: https://doc.rust-lang.org/beta/std/vec/struct.Vec.html#method.extend_from_within
-[`array::from_mut`]: https://doc.rust-lang.org/beta/std/array/fn.from_mut.html
-[`array::from_ref`]: https://doc.rust-lang.org/beta/std/array/fn.from_ref.html
-[`cmp::max_by_key`]: https://doc.rust-lang.org/beta/std/cmp/fn.max_by_key.html
-[`cmp::max_by`]: https://doc.rust-lang.org/beta/std/cmp/fn.max_by.html
-[`cmp::min_by_key`]: https://doc.rust-lang.org/beta/std/cmp/fn.min_by_key.html
-[`cmp::min_by`]: https://doc.rust-lang.org/beta/std/cmp/fn.min_by.html
-[`f32::is_subnormal`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_subnormal
-[`f64::is_subnormal`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_subnormal
-[ietf6943]: https://datatracker.ietf.org/doc/html/rfc6943#section-3.1.1
+- [Rework the `std::sys::windows::alloc` implementation.](https://github.com/rust-lang/rust/pull/83065)
+- [rustdoc: Don't enter an infer_ctxt in get_blanket_impls for impls that aren't blanket impls.](https://github.com/rust-lang/rust/pull/82864)
+- [rustdoc: Only look at blanket impls in `get_blanket_impls`](https://github.com/rust-lang/rust/pull/83681)
+- [Rework rustdoc const type](https://github.com/rust-lang/rust/pull/82873)
+
Version 1.52.1 (2021-05-10)
@@ -2506,9 +1982,8 @@ These problems only affect incremental builds, so release builds with Cargo
should not be affected unless the user has explicitly opted into incremental.
Debug and check builds are affected.
-See [84970] for more details.
+See [84970](https://github.com/rust-lang/rust/issues/84970) for more details.
-[84970]: https://github.com/rust-lang/rust/issues/84970
Version 1.52.0 (2021-05-06)
============================
@@ -2516,66 +1991,66 @@ Version 1.52.0 (2021-05-06)
Language
--------
- [Added the `unsafe_op_in_unsafe_fn` lint, which checks whether the unsafe code
- in an `unsafe fn` is wrapped in a `unsafe` block.][79208] This lint
+ in an `unsafe fn` is wrapped in a `unsafe` block.](https://github.com/rust-lang/rust/pull/79208) This lint
is allowed by default, and may become a warning or hard error in a
future edition.
- [You can now cast mutable references to arrays to a pointer of the same type as
- the element.][81479]
+ the element.](https://github.com/rust-lang/rust/pull/81479)
Compiler
--------
-- [Upgraded the default LLVM to LLVM 12.][81451]
+- [Upgraded the default LLVM to LLVM 12.](https://github.com/rust-lang/rust/pull/81451)
Added tier 3\* support for the following targets.
-- [`s390x-unknown-linux-musl`][82166]
-- [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202]
-- [`powerpc-unknown-openbsd`][82733]
+- [`s390x-unknown-linux-musl`](https://github.com/rust-lang/rust/pull/82166)
+- [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`](https://github.com/rust-lang/rust/pull/82202)
+- [`powerpc-unknown-openbsd`](https://github.com/rust-lang/rust/pull/82733)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
Libraries
---------
-- [`OsString` now implements `Extend` and `FromIterator`.][82121]
-- [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879]
-- [`Arc` now implements `error::Error`.][80553]
-- [All integer division and remainder operations are now `const`.][80962]
+- [`OsString` now implements `Extend` and `FromIterator`.](https://github.com/rust-lang/rust/pull/82121)
+- [`cmp::Reverse` now has `#[repr(transparent)]` representation.](https://github.com/rust-lang/rust/pull/81879)
+- [`Arc` now implements `error::Error`.](https://github.com/rust-lang/rust/pull/80553)
+- [All integer division and remainder operations are now `const`.](https://github.com/rust-lang/rust/pull/80962)
Stabilised APIs
-------------
-- [`Arguments::as_str`]
-- [`char::MAX`]
-- [`char::REPLACEMENT_CHARACTER`]
-- [`char::UNICODE_VERSION`]
-- [`char::decode_utf16`]
-- [`char::from_digit`]
-- [`char::from_u32_unchecked`]
-- [`char::from_u32`]
-- [`slice::partition_point`]
-- [`str::rsplit_once`]
-- [`str::split_once`]
+- [`Arguments::as_str`](https://doc.rust-lang.org/std/fmt/struct.Arguments.html#method.as_str)
+- [`char::MAX`](https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX)
+- [`char::REPLACEMENT_CHARACTER`](https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER)
+- [`char::UNICODE_VERSION`](https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION)
+- [`char::decode_utf16`](https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16)
+- [`char::from_digit`](https://doc.rust-lang.org/std/primitive.char.html#method.from_digit)
+- [`char::from_u32_unchecked`](https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked)
+- [`char::from_u32`](https://doc.rust-lang.org/std/primitive.char.html#method.from_u32)
+- [`slice::partition_point`](https://doc.rust-lang.org/std/primitive.slice.html#method.partition_point)
+- [`str::rsplit_once`](https://doc.rust-lang.org/std/primitive.str.html#method.rsplit_once)
+- [`str::split_once`](https://doc.rust-lang.org/std/primitive.str.html#method.split_once)
The following previously stable APIs are now `const`.
-- [`char::len_utf8`]
-- [`char::len_utf16`]
-- [`char::to_ascii_uppercase`]
-- [`char::to_ascii_lowercase`]
-- [`char::eq_ignore_ascii_case`]
-- [`u8::to_ascii_uppercase`]
-- [`u8::to_ascii_lowercase`]
-- [`u8::eq_ignore_ascii_case`]
+- [`char::len_utf8`](https://doc.rust-lang.org/std/primitive.char.html#method.len_utf8)
+- [`char::len_utf16`](https://doc.rust-lang.org/std/primitive.char.html#method.len_utf16)
+- [`char::to_ascii_uppercase`](https://doc.rust-lang.org/std/primitive.char.html#method.to_ascii_uppercase)
+- [`char::to_ascii_lowercase`](https://doc.rust-lang.org/std/primitive.char.html#method.to_ascii_lowercase)
+- [`char::eq_ignore_ascii_case`](https://doc.rust-lang.org/std/primitive.char.html#method.eq_ignore_ascii_case)
+- [`u8::to_ascii_uppercase`](https://doc.rust-lang.org/std/primitive.u8.html#method.to_ascii_uppercase)
+- [`u8::to_ascii_lowercase`](https://doc.rust-lang.org/std/primitive.u8.html#method.to_ascii_lowercase)
+- [`u8::eq_ignore_ascii_case`](https://doc.rust-lang.org/std/primitive.u8.html#method.eq_ignore_ascii_case)
Rustdoc
-------
- [Rustdoc lints are now treated as a tool lint, meaning that
- lints are now prefixed with `rustdoc::` (e.g. `#[warn(rustdoc::broken_intra_doc_links)]`).][80527]
+ lints are now prefixed with `rustdoc::` (e.g. `#[warn(rustdoc::broken_intra_doc_links)]`).](https://github.com/rust-lang/rust/pull/80527)
Using the old style is still allowed, and will become a warning in
a future release.
-- [Rustdoc now supports argument files.][82261]
-- [Rustdoc now generates smart punctuation for documentation.][79423]
-- [You can now use "task lists" in Rustdoc Markdown.][81766] E.g.
+- [Rustdoc now supports argument files.](https://github.com/rust-lang/rust/pull/82261)
+- [Rustdoc now generates smart punctuation for documentation.](https://github.com/rust-lang/rust/pull/79423)
+- [You can now use "task lists" in Rustdoc Markdown.](https://github.com/rust-lang/rust/pull/81766) E.g.
```markdown
- [x] Complete
- [ ] Todo
@@ -2583,10 +2058,10 @@ Rustdoc
Misc
----
-- [You can now pass multiple filters to tests.][81356] E.g.
+- [You can now pass multiple filters to tests.](https://github.com/rust-lang/rust/pull/81356) E.g.
`cargo test -- foo bar` will run all tests that match `foo` and `bar`.
- [Rustup now distributes PDB symbols for the `std` library on Windows,
- allowing you to see `std` symbols when debugging.][82218]
+ allowing you to see `std` symbols when debugging.](https://github.com/rust-lang/rust/pull/82218)
Internal Only
-------------
@@ -2594,71 +2069,23 @@ These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.
-- [Check the result cache before the DepGraph when ensuring queries][81855]
-- [Try fast_reject::simplify_type in coherence before doing full check][81744]
-- [Only store a LocalDefId in some HIR nodes][81611]
-- [Store HIR attributes in a side table][79519]
+- [Check the result cache before the DepGraph when ensuring queries](https://github.com/rust-lang/rust/pull/81855)
+- [Try fast_reject::simplify_type in coherence before doing full check](https://github.com/rust-lang/rust/pull/81744)
+- [Only store a LocalDefId in some HIR nodes](https://github.com/rust-lang/rust/pull/81611)
+- [Store HIR attributes in a side table](https://github.com/rust-lang/rust/pull/79519)
Compatibility Notes
-------------------
-- [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.][cargo/9181]
-- [Removed support for the `x86_64-rumprun-netbsd` target.][82594]
-- [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.][82216]
+- [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.](https://github.com/rust-lang/cargo/pull/9181)
+- [Removed support for the `x86_64-rumprun-netbsd` target.](https://github.com/rust-lang/rust/pull/82594)
+- [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.](https://github.com/rust-lang/rust/pull/82216)
- [Rustdoc now only accepts `,`, ` `, and `\t` as delimiters for specifying
- languages in code blocks.][78429]
-- [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763]
+ languages in code blocks.](https://github.com/rust-lang/rust/pull/78429)
+- [Rustc now catches more cases of `pub_use_of_private_extern_crate`](https://github.com/rust-lang/rust/pull/80763)
- [Changes in how proc macros handle whitespace may lead to panics when used
- with older `proc-macro-hack` versions. A `cargo update` should be sufficient to fix this in all cases.][84136]
-- [Turn `#[derive]` into a regular macro attribute][79078]
-
-[84136]: https://github.com/rust-lang/rust/issues/84136
-[80763]: https://github.com/rust-lang/rust/pull/80763
-[82166]: https://github.com/rust-lang/rust/pull/82166
-[82121]: https://github.com/rust-lang/rust/pull/82121
-[81879]: https://github.com/rust-lang/rust/pull/81879
-[82261]: https://github.com/rust-lang/rust/pull/82261
-[82218]: https://github.com/rust-lang/rust/pull/82218
-[82216]: https://github.com/rust-lang/rust/pull/82216
-[82202]: https://github.com/rust-lang/rust/pull/82202
-[81855]: https://github.com/rust-lang/rust/pull/81855
-[81766]: https://github.com/rust-lang/rust/pull/81766
-[81744]: https://github.com/rust-lang/rust/pull/81744
-[81611]: https://github.com/rust-lang/rust/pull/81611
-[81479]: https://github.com/rust-lang/rust/pull/81479
-[81451]: https://github.com/rust-lang/rust/pull/81451
-[81356]: https://github.com/rust-lang/rust/pull/81356
-[80962]: https://github.com/rust-lang/rust/pull/80962
-[80553]: https://github.com/rust-lang/rust/pull/80553
-[80527]: https://github.com/rust-lang/rust/pull/80527
-[79519]: https://github.com/rust-lang/rust/pull/79519
-[79423]: https://github.com/rust-lang/rust/pull/79423
-[79208]: https://github.com/rust-lang/rust/pull/79208
-[78429]: https://github.com/rust-lang/rust/pull/78429
-[82733]: https://github.com/rust-lang/rust/pull/82733
-[82594]: https://github.com/rust-lang/rust/pull/82594
-[79078]: https://github.com/rust-lang/rust/pull/79078
-[cargo/9181]: https://github.com/rust-lang/cargo/pull/9181
-[`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX
-[`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER
-[`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION
-[`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16
-[`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32
-[`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked
-[`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit
-[`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if
-[`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq
-[`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str
-[`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once
-[`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once
-[`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point
-[`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8
-[`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16
-[`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase
-[`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase
-[`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case
-[`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase
-[`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase
-[`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case
+ with older `proc-macro-hack` versions. A `cargo update` should be sufficient to fix this in all cases.](https://github.com/rust-lang/rust/issues/84136)
+- [Turn `#[derive]` into a regular macro attribute](https://github.com/rust-lang/rust/pull/79078)
+
Version 1.51.0 (2021-03-25)
============================
@@ -2666,7 +2093,7 @@ Version 1.51.0 (2021-03-25)
Language
--------
- [You can now parameterize items such as functions, traits, and `struct`s by constant
- values in addition to by types and lifetimes.][79135] Also known as "const generics"
+ values in addition to by types and lifetimes.](https://github.com/rust-lang/rust/pull/79135) Also known as "const generics"
E.g. you can now write the following. Note: Only values of primitive integers,
`bool`, or `char` types are currently permitted.
```rust
@@ -2689,13 +2116,13 @@ Language
Compiler
--------
-- [Added the `-Csplit-debuginfo` codegen option for macOS platforms.][79570]
+- [Added the `-Csplit-debuginfo` codegen option for macOS platforms.](https://github.com/rust-lang/rust/pull/79570)
This option controls whether debug information is split across multiple files
or packed into a single file. **Note** This option is unstable on other platforms.
- [Added tier 3\* support for `aarch64_be-unknown-linux-gnu`,
- `aarch64-unknown-linux-gnu_ilp32`, and `aarch64_be-unknown-linux-gnu_ilp32` targets.][81455]
-- [Added tier 3 support for `i386-unknown-linux-gnu` and `i486-unknown-linux-gnu` targets.][80662]
-- [The `target-cpu=native` option will now detect individual features of CPUs.][80749]
+ `aarch64-unknown-linux-gnu_ilp32`, and `aarch64_be-unknown-linux-gnu_ilp32` targets.](https://github.com/rust-lang/rust/pull/81455)
+- [Added tier 3 support for `i386-unknown-linux-gnu` and `i486-unknown-linux-gnu` targets.](https://github.com/rust-lang/rust/pull/80662)
+- [The `target-cpu=native` option will now detect individual features of CPUs.](https://github.com/rust-lang/rust/pull/80749)
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
@@ -2703,155 +2130,107 @@ information on Rust's tiered platform support.
Libraries
---------
-- [`Box::downcast` is now also implemented for any `dyn Any + Send + Sync` object.][80945]
-- [`str` now implements `AsMut`.][80279]
-- [`u64` and `u128` now implement `From`.][79502]
-- [`Error` is now implemented for `&T` where `T` implements `Error`.][75180]
-- [`Poll::{map_ok, map_err}` are now implemented for `Poll