release notes
release notes
Published 5/28/2026
MinorContains breaking changes[blocked]
expr metavariable to cfgManuallyDrop as patterns (fixing a regression introduced in 1.94.0)[blocked]
riscv64gc-unknown-fuchsia baseline to RVA22 + vector[blocked]
NonZero integers[blocked]
assert_matches!debug_assert_matches!From<T> for AssertUnwindSafe<T>From<T> for LazyCell<T, F>From<T> for LazyLock<T, F>core::range::RangeToInclusivecore::range::RangeToInclusiveItercore::range::RangeFromcore::range::RangeFromItercore::range::Rangecore::range::RangeIter[blocked]
target.'cfg(..)'.rustdocflags support in configuration.[blocked]
white-space: pre-wrap; property and stripped any <p> elements from the rendered html, however this caused issues and unintuitive behavior. The new behavior should be more predictable, however some multi-line deprecation notes will now be rendered as as single lines. If this is undesirable, you can use the standard markdown method of forcing a linebreak, which is two spaces followed by a newline ("\n").missing_doc_code_examples lint on impl items[blocked]
#[repr(Int)] enums in some edge cases involving fields of uninhabited zero-sized typesPin<Foo> where Foo doesn't implement Deref. Some such coercions were previously allowed, but produce a type with no useful public API.--allow-undefined on wasm targets#![reexport_test_harness_main] attributeuninhabited_static lint in dependencies and make it deny-by-default-Csoft-float::{self [as name]}, e.g., struct S {}; use S::{self as Other};, is now no longer permitted because {self} imports require a module parent.export_name, link_name, and link_section attributes, if multiple of the same attribute is present, the first one now takes precedence.avr targets, C's double type is 32-bit by default, so change c_double to f32 on avr targets to match. This is a breaking change, but necessary to make c_double match C's double.BTreeMap::append() was optimized, which may now cause panics for types with incorrect Ord impls[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 5/28/2026
MinorContains breaking changes[blocked]
expr metavariable to cfgManuallyDrop as patterns (fixing a regression introduced in 1.94.0)[blocked]
riscv64gc-unknown-fuchsia baseline to RVA22 + vector[blocked]
NonZero integers[blocked]
assert_matches!debug_assert_matches!From<T> for AssertUnwindSafe<T>From<T> for LazyCell<T, F>From<T> for LazyLock<T, F>core::range::RangeToInclusivecore::range::RangeToInclusiveItercore::range::RangeFromcore::range::RangeFromItercore::range::Rangecore::range::RangeIter[blocked]
target.'cfg(..)'.rustdocflags support in configuration.[blocked]
white-space: pre-wrap; property and stripped any <p> elements from the rendered html, however this caused issues and unintuitive behavior. The new behavior should be more predictable, however some multi-line deprecation notes will now be rendered as as single lines. If this is undesirable, you can use the standard markdown method of forcing a linebreak, which is two spaces followed by a newline ("\n").missing_doc_code_examples lint on impl items[blocked]
#[repr(Int)] enums in some edge cases involving fields of uninhabited zero-sized typesPin<Foo> where Foo doesn't implement Deref. Some such coercions were previously allowed, but produce a type with no useful public API.--allow-undefined on wasm targets#![reexport_test_harness_main] attributeuninhabited_static lint in dependencies and make it deny-by-default-Csoft-float::{self [as name]}, e.g., struct S {}; use S::{self as Other};, is now no longer permitted because {self} imports require a module parent.export_name, link_name, and link_section attributes, if multiple of the same attribute is present, the first one now takes precedence.avr targets, C's double type is 32-bit by default, so change c_double to f32 on avr targets to match. This is a breaking change, but necessary to make c_double match C's double.BTreeMap::append() was optimized, which may now cause panics for types with incorrect Ord impls[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.