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
Compiler
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
Stabilized APIs
These previously stable APIs are now stable in const contexts:
Cargo
Rustdoc
Compatibility Notes
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.