You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NOTE: Use the 馃摑 links to edit those that have a relnotes-tracking-issue,
and they will be updated when we regenerate the notes periodically (manually).
Prevent deref coercions in pin!, in order to prevent unsoundness. The most likely case where this might impact users is: writing pin!(x) where x has type &mut T will now always correctly produce a value of type Pin<&mut &mut T>, instead of sometimes allowing a coercion that produces a value of type Pin<&mut T>. This coercion was previously incorrectly allowed since Rust 1.88.0. 馃摑
The encoding of certain enums have changed. This is not a breaking change, as it only applies to enums without layout guarantees, but is noted here as we've seen people impacted from having made assumptions about the layout algorithm. 馃摑
On Windows, after calling shutdown on a socket to shut down the write side, attempting to write to the socket will now produce a BrokenPipe error rather than Other. Map WSAESHUTDOWN to io::ErrorKind::BrokenPipe 馃摑
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.
NOTE: Use the 馃摑 links to edit those that have a
relnotes-tracking-issue,and they will be updated when we regenerate the notes periodically (manually).
Version 1.97.0 (2026-07-09)
Language
{float}tof32in some cases馃摑
Result<T, Uninhabited>andControlFlow<Uninhabited, T>to be equivalent toTfor must use lint馃摑
div32,lam-bh,lamcas,ld-seq-saandscqtarget features馃摑
cfg(target_has_atomic_primitive_alignment)馃摑
selfin imports in more cases馃摑
Compiler
馃摑
Platform Support
馃摑
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
Stabilized APIs
Default for RepeatN馃摑
Copy for ffi::FromBytesUntilNulError馃摑
Send for std::fs::Fileon UEFI馃摑
<{integer}>::isolate_highest_one<{integer}>::isolate_lowest_oneNonZero<{integer}>::isolate_highest_oneNonZero<{integer}>::isolate_lowest_one馃摑
<{integer}>::bit_widthNonZero<{integer}>::bit_width馃摑
NonZero<{integer}>::highest_oneNonZero<{integer}>::lowest_one<{integer}>::lowest_one<{integer}>::highest_one馃摑
These previously stable APIs are now stable in const contexts:
char::is_control馃摑
Cargo
resolver.lockfile-pathconfigbuild.warnings-mshorthand for--manifest-pathRustdoc
--emitflag馃摑
--remap-path-prefix馃摑
Compatibility Notes
馃摑
pin!, in order to prevent unsoundness. The most likely case where this might impact users is: writingpin!(x)wherexhas type&mut Twill now always correctly produce a value of typePin<&mut &mut T>, instead of sometimes allowing a coercion that produces a value of typePin<&mut T>. This coercion was previously incorrectly allowed since Rust 1.88.0.馃摑
std::charconstants and functions馃摑
馃摑
f64methods which have been deprecated since 1.0馃摑
varargs_without_patternlint in deps馃摑
馃摑
link_sectionspecifier馃摑
enums have changed. This is not a breaking change, as it only applies toenums without layout guarantees, but is noted here as we've seen people impacted from having made assumptions about the layout algorithm.馃摑
#[export_name = "..."]where the name is empty馃摑
馃摑
#[link_name = "..."]&#[link(name = "...")]parameters馃摑
shutdownon a socket to shut down the write side, attempting to write to the socket will now produce aBrokenPipeerror rather thanOther. MapWSAESHUTDOWNtoio::ErrorKind::BrokenPipe馃摑
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.