Rust 1.69.0
Language
- Deriving built-in traits on packed structs works with
Copy
fields. - Stabilize the
cmpxchg16b
target feature on x86 and x86_64. - Improve analysis of trait bounds for associated types.
- Allow associated types to be used as union fields.
- Allow
Self: Autotrait
bounds on dyn-safe trait methods. - Treat
str
as containing[u8]
for auto trait purposes.
Compiler
- Upgrade
*-pc-windows-gnu
on CI to mingw-w64 v10 and GCC 12.2. - Rework min_choice algorithm of member constraints.
- Support
true
andfalse
as boolean flags in compiler arguments. - Default
repr(C)
enums toc_int
size.
Libraries
- Implement the unstable
DispatchFromDyn
for cell types, allowing downstream experimentation with custom method receivers. - Document that
fmt::Arguments::as_str()
may returnSome(_)
in more cases after optimization, subject to change. - Implement
AsFd
andAsRawFd
forRc
.
Stabilized APIs
These APIs are now stable in const contexts:
SocketAddr::new
SocketAddr::ip
SocketAddr::port
SocketAddr::is_ipv4
SocketAddr::is_ipv6
SocketAddrV4::new
SocketAddrV4::ip
SocketAddrV4::port
SocketAddrV6::new
SocketAddrV6::ip
SocketAddrV6::port
SocketAddrV6::flowinfo
SocketAddrV6::scope_id
Cargo
- Cargo now suggests
cargo fix
orcargo clippy --fix
when compilation warnings are auto-fixable. - Cargo now suggests
cargo add
if you try to install a library crate. - Cargo now sets the
CARGO_BIN_NAME
environment variable also for binary examples.
Rustdoc
- Vertically compact trait bound formatting.
- Only include stable lints in
rustdoc::all
group. - Compute maximum Levenshtein distance based on the query.
- Remove inconsistently-present sidebar tooltips.
- Search by macro when query ends with
!
.
Compatibility Notes
- The
rust-analysis
component fromrustup
now only contains a warning placeholder. This was primarily intended for RLS, and the corresponding-Zsave-analysis
flag has been removed from the compiler as well. - Unaligned references to packed fields are now a hard error. This has been a warning since 1.53, and denied by default with a future-compatibility warning since 1.62.
- Update the minimum external LLVM to 14.
- Cargo now emits errors on invalid characters in a registry token.
- When
default-features
is set to false of a workspace dependency, and an inherited dependency of a member hasdefault-features = true
, Cargo will enable default features of that dependency. - Cargo denies
CARGO_HOME
in the[env]
configuration table. Cargo itself doesn't pick up this value, but recursive calls to cargo would, which was not intended. - Debuginfo for build dependencies is now off if not explicitly set. This is expected to improve the overall build time.
- The Rust distribution no longer always includes rustdoc If
tools = [...]
is set in config.toml, we will respect a missing rustdoc in that list. By default rustdoc remains included. To retain the prior behavior explicitly add"rustdoc"
to the list.
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.