Update Jun 13, 2024 tracked by Updatify
Rust 1.79.0
Language
-
Stabilize inline
const {}expressions. - Prevent opaque types being instantiated twice with different regions within the same function.
- Stabilize WebAssembly target features that are in phase 4 and 5.
-
Add the
redundant_lifetimeslint to detect lifetimes which are semantically redundant. -
Stabilize the
unnameable_typeslint for public types that can’t be named. -
Enable debuginfo in macros, and stabilize
-C collapse-macro-debuginfoand#[collapse_debuginfo]. -
Propagate temporary lifetime extension into
ifandmatchexpressions. -
Restrict promotion of
const fncalls. -
Warn against refining impls of crate-private traits with
refining_impl_traitlint. - Stabilize associated type bounds (RFC 2289).
-
Stabilize importing
mainfrom other modules or crates. - Check return types of function types for well-formedness
-
Rework
impl Traitlifetime inference - Change inductive trait solver cycles to be ambiguous
Compiler
-
Define
-C stripto only affect binaries, not artifacts like.pdb. -
Stabilize
-Crelro-levelfor controlling runtime link hardening. -
Stabilize checking of
cfgnames and values at compile-time with--check-cfg. Note that this only stabilizes the compiler part, the Cargo part is still unstable in this release. -
Add
aarch64-apple-visionosandaarch64-apple-visionos-simtier 3 targets. -
Add
riscv32ima-unknown-none-elftier 3 target. -
Promote several Windows targets to tier 2:
aarch64-pc-windows-gnullvm,i686-pc-windows-gnullvm, andx86_64-pc-windows-gnullvm.
Refer to Rust’s platform support page for more information on Rust’s tiered platform support.
Libraries
-
Implement
FromIteratorfor(impl Default + Extend, impl Default + Extend). -
Implement
{Div,Rem}Assign<NonZero<X>>onX. -
Document overrides of
clone_from()in core/std. - Link MSVC default lib in core.
-
Caution against using
transmutebetween pointers and integers. - Enable frame pointers for the standard library.
Stabilized APIs
-
{integer}::unchecked_add -
{integer}::unchecked_mul -
{integer}::unchecked_sub -
<[T]>::split_at_unchecked -
<[T]>::split_at_mut_unchecked -
<[u8]>::utf8_chunks -
str::Utf8Chunks -
str::Utf8Chunk -
<*const T>::is_aligned -
<*mut T>::is_aligned -
NonNull::is_aligned -
<*const [T]>::len -
<*mut [T]>::len -
<*const [T]>::is_empty -
<*mut [T]>::is_empty -
NonNull::<[T]>::is_empty -
CStr::count_bytes -
io::Error::downcast -
num::NonZero<T> -
path::absolute -
proc_macro::Literal::byte_character -
proc_macro::Literal::c_string
These APIs are now stable in const contexts:
-
Atomic*::into_inner -
io::Cursor::new -
io::Cursor::get_ref -
io::Cursor::position -
io::empty -
io::repeat -
io::sink -
panic::Location::caller -
panic::Location::file -
panic::Location::line -
panic::Location::column
Cargo
-
Prevent dashes in
lib.name, always normalizing to_. -
Stabilize MSRV-aware version requirement selection in
cargo add. -
Switch to using
gitoxideby default for listing files.
Rustdoc
- Always display stability version even if it’s the same as the containing item.
- Show a single search result for items with multiple paths.
-
Support typing
/in docs to begin a search.
Misc
Compatibility Notes
- Update the minimum external LLVM to 17.
-
RustcEncodableandRustcDecodableare soft-destabilized, to be removed from the prelude in next edition. -
The
wasm_c_abifuture-incompatibility lint will warn about use of the non-spec-compliant C ABI. Usewasm-bindgen v0.2.88to generate forward-compatible bindings. - Check return types of function types for well-formedness