NOTE: We are trying this issue as a new way to work on the draft release notes.
Use the 📝 links to edit those that have a relnotes-tracking-issue,
and they will be updated when we regenerate the notes periodically.
cc @rust-lang/release
Version 1.90 (2025-09-18)
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.
Other
NOTE: We are trying this issue as a new way to work on the draft release notes.
Use the 📝 links to edit those that have a
relnotes-tracking-issue,and they will be updated when we regenerate the notes periodically.
cc @rust-lang/release
Version 1.90 (2025-09-18)
Language
unknown_or_malformed_diagnostic_attributeslint. This lint has been split up into four finer grained lints; whether the diagnostic attribute is unknown, placed on the wrong item, malformed or its format string is invalid.unknown_or_malformed_diagnostic_attributesis now the name of the lint group comprising them📝
📝
📝
Compiler
lldby default onx86_64-unknown-linux-gnu.📝
musltargets now link dynamically by default. Affected targets:mips64-unknown-linux-muslabi64powerpc64-unknown-linux-muslpowerpc-unknown-linux-muslpowerpc-unknown-linux-muslsperiscv32gc-unknown-linux-musls390x-unknown-linux-muslthumbv7neon-unknown-linux-musleabihf📝
Platform Support
x86_64-apple-darwinto Tier 2 with host tools📝
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
u*::{checked,overflowing,saturating,wrapping}_sub_signed📝
CStr,CString, andCow<CStr>📝
📝
MSG_NOSIGNALforUnixStream📝
proc_macro::Ident::newnow supports$crate.📝
const_slice_reverseThread::into_rawhas at least 8 bytes of alignment📝
Stabilized APIs
u{n}::checked_sub_signedu{n}::overflowing_sub_signedu{n}::saturating_sub_signedu{n}::wrapping_sub_signed📝
impl Copy for IntErrorKindimpl Hash for IntErrorKind📝
impl PartialEq<&CStr> for CStrimpl PartialEq<CString> for CStrimpl PartialEq<Cow<CStr>> for CStrimpl PartialEq<&CStr> for CStringimpl PartialEq<CStr> for CStringimpl PartialEq<Cow<CStr>> for CStringimpl PartialEq<&CStr> for Cow<CStr>impl PartialEq<CStr> for Cow<CStr>impl PartialEq<CString> for Cow<CStr>📝
These previously stable APIs are now stable in const contexts:
<[T]>::reverse📝
f32::floorf32::ceilf32::truncf32::fractf32::roundf32::round_ties_evenf64::floorf64::ceilf64::truncf64::fractf64::roundf64::round_ties_even📝
Cargo
http.proxy-cainfoconfig for proxy certsgixforcargo package[hints]table inCargo.toml, and ahints.mostly-unusedhintRustdoc
implblocks, now they do when shift is held📝
unsafe()wrappers📝
Compatibility Notes
core::iter::Fuse'sDefaultimpl constructI::default()internally as promised in the docs instead of always being empty📝
std::env::home_dirwill use the fallback if theHOMEenvironment variable is empty📝
extern "{abi}"s consistently in all positions. This primarily affects the use of implementing traits on anextern "{abi}"function pointer, likeextern "stdcall" fn(), on a platform that doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of these unsupported ABI strings by declaring or defining functions was already rejected, so this is only a change for consistency.📝
📝
proc_macro_derivemacro has correct arguments when applied to the crate root📝
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.
Other