New
Rust 1.90.0
Language
- Split up the
unknown_or_malformed_diagnostic_attributeslint. This lint has been split up into four finer-grained lints, withunknown_or_malformed_diagnostic_attributesnow being the lint group that contains these lints:unknown_diagnostic_attributes: unknown to the current compilermisplaced_diagnostic_attributes: placed on the wrong itemmalformed_diagnostic_attributes: malformed attribute syntax or optionsmalformed_diagnostic_format_literals: malformed format string literal
- Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns
- Allow volatile access to non-Rust memory, including address 0
Compiler
- Use
lldby default onx86_64-unknown-linux-gnu. - Tier 3
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
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
- Stabilize
u*::{checked,overflowing,saturating,wrapping}_sub_signed - Allow comparisons between
CStr,CString, andCow<CStr> - Remove some unsized tuple impls since unsized tuples can't be constructed
- Set
MSG_NOSIGNALforUnixStream - now supports .
Stabilized APIs
u{n}::checked_sub_signedu{n}::overflowing_sub_signedu{n}::saturating_sub_signedu{n}::wrapping_sub_signedimpl Copy for IntErrorKind
These previously stable APIs are now stable in const contexts:
Cargo
- Add
http.proxy-cainfoconfig for proxy certs - Use
gixforcargo package - feat(publish): Stabilize multi-package publishing
Rustdoc
- Add ways to collapse all impl blocks. Previously the "Summary" button and "-" keyboard shortcut would never collapse
implblocks, now they do when shift is held - Display unsafe attributes with
unsafe()wrappers
Compatibility Notes
- Use
lldby default onx86_64-unknown-linux-gnu. See also https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/. - Make
core::iter::Fuse'sDefaultimpl constructI::default()internally as promised in the docs instead of always being empty - Set for This may change program behavior but results in the same behavior as other primitives (e.g., stdout, network sockets). Programs relying on signals to terminate them should update handling of sockets to handle errors on write by exiting.