From 76de222d0d0baf554128717a9c8bbcc85114b21b Mon Sep 17 00:00:00 2001 From: Boxy Uwu Date: Mon, 25 May 2026 20:07:28 +0100 Subject: [PATCH 1/5] add relnotes --- RELEASES.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index 87768b2f74e76..747ef283699a0 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,101 @@ +Version 1.96.0 (2026-05-28) +========================== + + + +Language +-------- +- [Allow passing `expr` metavariable to `cfg`](https://github.com/rust-lang/rust/pull/146961) +- [Always coerce never types in tuple expressions](https://github.com/rust-lang/rust/pull/147834) +- [Avoid incorrect inference guidance of function arguments in rare cases](https://github.com/rust-lang/rust/pull/150316) +- [Support s390x vector registers in inline assembly](https://github.com/rust-lang/rust/pull/154184) +- [Allow using constants of type `ManuallyDrop` as patterns (fixing a regression introduced in 1.94.0)](https://github.com/rust-lang/rust/pull/154891) + + + + +Compiler +-------- +- [Enable link relaxation feature for LoongArch Linux targets](https://github.com/rust-lang/rust/pull/153427) +- [Update `riscv64gc-unknown-fuchsia` baseline to RVA22 + vector](https://github.com/rust-lang/rust/pull/155072) + + + + + + +Libraries +--------- +- [Support iterating over ranges of `NonZero` integers](https://github.com/rust-lang/rust/pull/127534) +- [refactor 'valid for read/write' definition: exclude null; add that as an exception on individual methods instead](https://github.com/rust-lang/rust/pull/152615) +- [Fix SGX delayed host lookup via ToSocketAddr](https://github.com/rust-lang/rust/pull/152851) + + + + +Stabilized APIs +--------------- + +- [`assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) +- [`debug_assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) +- [`From for AssertUnwindSafe`](https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E) +- [`From for LazyCell`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E) +- [`From for LazyLock`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E) +- +- [`core::range::RangeToInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html) +- [`core::range::RangeToInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusiveIter.html) +- [`core::range::RangeFrom`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFrom.html) +- [`core::range::RangeFromIter`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFromIter.html) +- [`core::range::Range`](https://doc.rust-lang.org/stable/std/range/struct.Range.html) +- [`core::range::RangeIter`](https://doc.rust-lang.org/stable/std/range/struct.RangeIter.html) + + + + +Cargo +----- +- [Allow a dependency to specify both a git repository and an alternate registry.](https://github.com/rust-lang/cargo/pull/16810/) Just like with crates.io, the git repository will be used locally, but the registry version will be used when published. +- [Added `target.'cfg(..)'.rustdocflags` support in configuration.](https://github.com/rust-lang/cargo/pull/16846) + +Rustdoc +----- +- [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `

` 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 `" \n"` (two spaces followed by a newline). +- [Don't emit rustdoc `missing_doc_code_examples` lint on impl items](https://github.com/rust-lang/rust/pull/154048) +- [Seperate methods and associated functions in sidebar](https://github.com/rust-lang/rust/pull/154644) + + +Compatibility Notes +------------------- +- [Fix layout of `#[repr(Int)]` enums in some edge cases involving fields of uninhabited zero-sized types](https://github.com/rust-lang/rust/pull/146989) +- [Prevent unsize-coercing into `Pin` where `Foo` doesn't implement `Deref`. Some such coercions were previously allowed, but produce a type with no useful public API.](https://github.com/rust-lang/rust/pull/149218) +- [rustc: Stop passing `--allow-undefined` on wasm targets](https://github.com/rust-lang/rust/pull/149868) +- [Gate the accidentally stabilized #![reexport_test_harness_main] attribute](https://github.com/rust-lang/rust/pull/152210) +- [Error on return-position-impl-trait-in-traits whose types are too private](https://github.com/rust-lang/rust/pull/152543) +- [Report the `uninhabited_static` lint in dependencies and make it deny-by-default](https://github.com/rust-lang/rust/pull/152853) +- [Distributed builds now contain non-split debuginfo for windows-gnu](https://github.com/rust-lang/rust/pull/152870) + This appears to improve the quality of backtraces. This change has no effect on the defaults for the output of rustc/cargo on these targets. +- [Check const generic arguments are correctly typed in more positions](https://github.com/rust-lang/rust/pull/152931) +- [Remove -Csoft-float](https://github.com/rust-lang/rust/pull/152973) +- [Importing structs with `::{self [as name]}`, e.g., `struct S {}; use S::{self as Other};`, is now no longer permitted because `{self}` imports require a module parent.](https://github.com/rust-lang/rust/pull/152996) +- [For `export_name`, `link_name`, and `link_section` attributes, if multiple of the same attribute is present, the first one now takes precedence.](https://github.com/rust-lang/rust/pull/153041) +- [Update the minimum external LLVM to 21](https://github.com/rust-lang/rust/pull/153684) +- On `avr` targets, C's `double` type is 32-bit by default, so [change `c_double` to `f32` on `avr` targets to match](https://github.com/rust-lang/rust/pull/154647). This is a breaking change, but necessary to make `c_double` match C's double. + + + + +Internal Changes +---------------- + +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. + +- [JSON targets: `aarch64` softfloat targets now have to have `rustc_abi` set to `"softfloat"`](https://github.com/rust-lang/rust/pull/152941) +- [target specs: stricter checks for LLVM ABI values, and correlate that with cfg(target_abi)](https://github.com/rust-lang/rust/pull/153769) + + + Version 1.95.0 (2026-04-16) =========================== From a7cdee19d8223eaa401712150962fac237d9c655 Mon Sep 17 00:00:00 2001 From: Boxy Date: Mon, 25 May 2026 20:11:01 +0100 Subject: [PATCH 2/5] Apply suggestion from @BoxyUwU --- RELEASES.md | 1 - 1 file changed, 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index 747ef283699a0..854dfa4631bbd 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -41,7 +41,6 @@ Stabilized APIs - [`From for AssertUnwindSafe`](https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E) - [`From for LazyCell`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E) - [`From for LazyLock`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E) -- - [`core::range::RangeToInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html) - [`core::range::RangeToInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusiveIter.html) - [`core::range::RangeFrom`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFrom.html) From fd3b569601ad8c889c709fb943a384aa0aab65c8 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 27 May 2026 20:47:04 -0700 Subject: [PATCH 3/5] Apply suggestions from code review Co-authored-by: Josh Stone Co-authored-by: alexey semenyuk --- RELEASES.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 854dfa4631bbd..f46077ee409b8 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -55,10 +55,11 @@ Cargo ----- - [Allow a dependency to specify both a git repository and an alternate registry.](https://github.com/rust-lang/cargo/pull/16810/) Just like with crates.io, the git repository will be used locally, but the registry version will be used when published. - [Added `target.'cfg(..)'.rustdocflags` support in configuration.](https://github.com/rust-lang/cargo/pull/16846) +- Fixed [CVE-2026-5222](https://blog.rust-lang.org/2026/05/25/cve-2026-5222/) and [CVE-2026-5223](https://blog.rust-lang.org/2026/05/25/cve-2026-5223/). Rustdoc ----- -- [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `

` 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 `" \n"` (two spaces followed by a newline). +- [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `

` 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"`). - [Don't emit rustdoc `missing_doc_code_examples` lint on impl items](https://github.com/rust-lang/rust/pull/154048) - [Seperate methods and associated functions in sidebar](https://github.com/rust-lang/rust/pull/154644) @@ -68,13 +69,13 @@ Compatibility Notes - [Fix layout of `#[repr(Int)]` enums in some edge cases involving fields of uninhabited zero-sized types](https://github.com/rust-lang/rust/pull/146989) - [Prevent unsize-coercing into `Pin` where `Foo` doesn't implement `Deref`. Some such coercions were previously allowed, but produce a type with no useful public API.](https://github.com/rust-lang/rust/pull/149218) - [rustc: Stop passing `--allow-undefined` on wasm targets](https://github.com/rust-lang/rust/pull/149868) -- [Gate the accidentally stabilized #![reexport_test_harness_main] attribute](https://github.com/rust-lang/rust/pull/152210) +- [Gate the accidentally stabilized `#![reexport_test_harness_main]` attribute](https://github.com/rust-lang/rust/pull/152210) - [Error on return-position-impl-trait-in-traits whose types are too private](https://github.com/rust-lang/rust/pull/152543) - [Report the `uninhabited_static` lint in dependencies and make it deny-by-default](https://github.com/rust-lang/rust/pull/152853) - [Distributed builds now contain non-split debuginfo for windows-gnu](https://github.com/rust-lang/rust/pull/152870) This appears to improve the quality of backtraces. This change has no effect on the defaults for the output of rustc/cargo on these targets. - [Check const generic arguments are correctly typed in more positions](https://github.com/rust-lang/rust/pull/152931) -- [Remove -Csoft-float](https://github.com/rust-lang/rust/pull/152973) +- [Remove `-Csoft-float`](https://github.com/rust-lang/rust/pull/152973) - [Importing structs with `::{self [as name]}`, e.g., `struct S {}; use S::{self as Other};`, is now no longer permitted because `{self}` imports require a module parent.](https://github.com/rust-lang/rust/pull/152996) - [For `export_name`, `link_name`, and `link_section` attributes, if multiple of the same attribute is present, the first one now takes precedence.](https://github.com/rust-lang/rust/pull/153041) - [Update the minimum external LLVM to 21](https://github.com/rust-lang/rust/pull/153684) @@ -91,7 +92,7 @@ significant improvements to the performance or internals of rustc and related tools. - [JSON targets: `aarch64` softfloat targets now have to have `rustc_abi` set to `"softfloat"`](https://github.com/rust-lang/rust/pull/152941) -- [target specs: stricter checks for LLVM ABI values, and correlate that with cfg(target_abi)](https://github.com/rust-lang/rust/pull/153769) +- [target specs: stricter checks for LLVM ABI values, and correlate that with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769) From dd6f520f7ec5c1cd4e86c646cc8cc45c67f3a947 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 27 May 2026 20:49:44 -0700 Subject: [PATCH 4/5] clean up spaces and add a rustdoc anchor --- RELEASES.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index f46077ee409b8..e3ab7a4b370e4 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -11,7 +11,6 @@ Language - [Support s390x vector registers in inline assembly](https://github.com/rust-lang/rust/pull/154184) - [Allow using constants of type `ManuallyDrop` as patterns (fixing a regression introduced in 1.94.0)](https://github.com/rust-lang/rust/pull/154891) - Compiler @@ -19,9 +18,6 @@ Compiler - [Enable link relaxation feature for LoongArch Linux targets](https://github.com/rust-lang/rust/pull/153427) - [Update `riscv64gc-unknown-fuchsia` baseline to RVA22 + vector](https://github.com/rust-lang/rust/pull/155072) - - - Libraries @@ -30,7 +26,6 @@ Libraries - [refactor 'valid for read/write' definition: exclude null; add that as an exception on individual methods instead](https://github.com/rust-lang/rust/pull/152615) - [Fix SGX delayed host lookup via ToSocketAddr](https://github.com/rust-lang/rust/pull/152851) - Stabilized APIs @@ -48,7 +43,6 @@ Stabilized APIs - [`core::range::Range`](https://doc.rust-lang.org/stable/std/range/struct.Range.html) - [`core::range::RangeIter`](https://doc.rust-lang.org/stable/std/range/struct.RangeIter.html) - Cargo @@ -57,11 +51,14 @@ Cargo - [Added `target.'cfg(..)'.rustdocflags` support in configuration.](https://github.com/rust-lang/cargo/pull/16846) - Fixed [CVE-2026-5222](https://blog.rust-lang.org/2026/05/25/cve-2026-5222/) and [CVE-2026-5223](https://blog.rust-lang.org/2026/05/25/cve-2026-5223/). + + Rustdoc ----- - [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `

` 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"`). - [Don't emit rustdoc `missing_doc_code_examples` lint on impl items](https://github.com/rust-lang/rust/pull/154048) - [Seperate methods and associated functions in sidebar](https://github.com/rust-lang/rust/pull/154644) + Compatibility Notes @@ -81,7 +78,6 @@ Compatibility Notes - [Update the minimum external LLVM to 21](https://github.com/rust-lang/rust/pull/153684) - On `avr` targets, C's `double` type is 32-bit by default, so [change `c_double` to `f32` on `avr` targets to match](https://github.com/rust-lang/rust/pull/154647). This is a breaking change, but necessary to make `c_double` match C's double. - Internal Changes @@ -95,7 +91,6 @@ tools. - [target specs: stricter checks for LLVM ABI values, and correlate that with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769) - Version 1.95.0 (2026-04-16) =========================== From 63d96cbcc78dc191db6bc5388de75ef15bbb1628 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 27 May 2026 22:51:55 -0700 Subject: [PATCH 5/5] Fix `assert_matches!` link --- RELEASES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index e3ab7a4b370e4..4982b54f0f886 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -31,7 +31,7 @@ Libraries Stabilized APIs --------------- -- [`assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) +- [`assert_matches!`](https://doc.rust-lang.org/stable/std/macro.assert_matches.html) - [`debug_assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) - [`From for AssertUnwindSafe`](https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E) - [`From for LazyCell`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E)