release notes
release notes
Published 4/16/2026
MinorContains new features[blocked]
if let guards on match armsirrefutable_let_patterns lint no longer lints on let chains[blocked]
--remap-path-scope for controlling the scoping of how paths get remapped in the resulting binary[blocked]
powerpc64-unknown-linux-musl to Tier 2 with host toolsaarch64-apple-tvos to Tier 2aarch64-apple-tvos-sim to Tier 2aarch64-apple-watchos to Tier 2aarch64-apple-watchos-sim to Tier 2aarch64-apple-visionos to Tier 2aarch64-apple-visionos-sim to Tier 2Refer to Rust's platform support page for more information on Rust's tiered platform support.
[blocked]
thread::scope: document how join interacts with TLS destructorsstr::contains on aarch64 targets with neon target feature enabled by default[blocked]
MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>[MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>>Cell<[T; N]>: AsRef<[Cell<T>; N]>Cell<[T; N]>: AsRef<[Cell<T>]>Cell<[T]>: AsRef<[Cell<T>]>bool: TryFrom<{integer}>AtomicPtr::updateAtomicPtr::try_updateAtomicBool::updateAtomicBool::try_updateAtomicIn::updateAtomicIn::try_updateAtomicUn::updateAtomicUn::try_updatecfg_select!mod core::rangecore::range::RangeInclusivecore::range::RangeInclusiveItercore::hint::cold_path<*const T>::as_ref_unchecked<*mut T>::as_ref_unchecked<*mut T>::as_mut_uncheckedVec::push_mutVec::insert_mutVecDeque::push_front_mutVecDeque::push_back_mutVecDeque::insert_mutLinkedList::push_front_mutLinkedList::push_back_mutLayout::dangling_ptrLayout::repeatLayout::repeat_packedLayout::extend_packedThese previously stable APIs are now stable in const contexts:
[blocked]
[blocked]
$crate without renaming, i.e. use $crate::{self};, is now no longer permitted due to stricter error checking for self imports.const or static.ambiguous_glob_imported_traits is now reported when using an ambiguously glob imported traitEq::assert_receiver_is_total_eq and emit future compatibility warnings on manual impls#[non_exhaustive] enum now reads the discriminant, even if the enum has only one variant. This can cause closures to capture values that they previously wouldn't.mut ref and mut ref mut patterns, part of the unstable Match Ergonomics 2024 RFC, were accidentally allowed on stable within struct pattern field shorthand. These patterns are now correctly feature-gated as unstable in this position.-Z unstable-options to use. Previously, they could not be used without the standard library, which has no stable build mechanism. In preparation for the build-std project adding that support, JSON target specs are being proactively gated to ensure they remain unstable even if build-std is stabilized. Cargo now includes the -Z json-target-spec CLI flag to automatically pass -Z unstable-options to the compiler when needed. See #150151, #151534, and rust-lang/cargo#16557.#[feature] attributes on invalid targets are now checked[blocked]
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
release notes
Published 4/16/2026
MinorContains new features[blocked]
if let guards on match armsirrefutable_let_patterns lint no longer lints on let chains[blocked]
--remap-path-scope for controlling the scoping of how paths get remapped in the resulting binary[blocked]
powerpc64-unknown-linux-musl to Tier 2 with host toolsaarch64-apple-tvos to Tier 2aarch64-apple-tvos-sim to Tier 2aarch64-apple-watchos to Tier 2aarch64-apple-watchos-sim to Tier 2aarch64-apple-visionos to Tier 2aarch64-apple-visionos-sim to Tier 2Refer to Rust's platform support page for more information on Rust's tiered platform support.
[blocked]
thread::scope: document how join interacts with TLS destructorsstr::contains on aarch64 targets with neon target feature enabled by default[blocked]
MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>[MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>>Cell<[T; N]>: AsRef<[Cell<T>; N]>Cell<[T; N]>: AsRef<[Cell<T>]>Cell<[T]>: AsRef<[Cell<T>]>bool: TryFrom<{integer}>AtomicPtr::updateAtomicPtr::try_updateAtomicBool::updateAtomicBool::try_updateAtomicIn::updateAtomicIn::try_updateAtomicUn::updateAtomicUn::try_updatecfg_select!mod core::rangecore::range::RangeInclusivecore::range::RangeInclusiveItercore::hint::cold_path<*const T>::as_ref_unchecked<*mut T>::as_ref_unchecked<*mut T>::as_mut_uncheckedVec::push_mutVec::insert_mutVecDeque::push_front_mutVecDeque::push_back_mutVecDeque::insert_mutLinkedList::push_front_mutLinkedList::push_back_mutLayout::dangling_ptrLayout::repeatLayout::repeat_packedLayout::extend_packedThese previously stable APIs are now stable in const contexts:
[blocked]
[blocked]
$crate without renaming, i.e. use $crate::{self};, is now no longer permitted due to stricter error checking for self imports.const or static.ambiguous_glob_imported_traits is now reported when using an ambiguously glob imported traitEq::assert_receiver_is_total_eq and emit future compatibility warnings on manual impls#[non_exhaustive] enum now reads the discriminant, even if the enum has only one variant. This can cause closures to capture values that they previously wouldn't.mut ref and mut ref mut patterns, part of the unstable Match Ergonomics 2024 RFC, were accidentally allowed on stable within struct pattern field shorthand. These patterns are now correctly feature-gated as unstable in this position.-Z unstable-options to use. Previously, they could not be used without the standard library, which has no stable build mechanism. In preparation for the build-std project adding that support, JSON target specs are being proactively gated to ensure they remain unstable even if build-std is stabilized. Cargo now includes the -Z json-target-spec CLI flag to automatically pass -Z unstable-options to the compiler when needed. See #150151, #151534, and rust-lang/cargo#16557.#[feature] attributes on invalid targets are now checked[blocked]
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
Empowering everyone to build reliable and efficient software.