Update Jan 9, 2025 tracked by Updatify
Rust 1.84.0
Language
-
Allow
#[deny]inside#[forbid]as a no-op -
Show a warning when
-Ctarget-featureis used to toggle features that can lead to unsoundness due to ABI mismatches - Use the next-generation trait solver in coherence
- Allow coercions to drop the principal of trait objects
-
Support
/as the path separator forinclude!()in all cases on Windows -
Taking a raw ref (
raw (const|mut)) of a deref of a pointer (*ptr) is now safe - Stabilize s390x inline assembly
- Stabilize Arm64EC inline assembly
- Lint against creating pointers to immediately dropped temporaries
-
Execute drop glue when unwinding in an
extern "C"function
Compiler
-
Add
--print host-tupleflag to print the host target tuple and affirm the “target tuple” terminology over “target triple” - Declaring functions with a calling convention not supported on the current target now triggers a hard error
-
Set up indirect access to external data for
loongarch64-unknown-linux-{musl,ohos} - Enable XRay instrumentation for LoongArch Linux targets
-
Extend the
unexpected_cfgslint to also warn in external macros -
Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features -
Added Tier 2 support for the
wasm32v1-nonetarget
Libraries
-
Implement
From<&mut {slice}>forBox/Rc/Arc<{slice}> -
Move
<float>::copysign,<float>::abs,<float>::signumtocore -
Add
LowerExpandUpperExpimplementations toNonZero -
Implement
FromStrforCStringandTryFrom<CString>forString -
std::os::darwinhas been made public
Stabilized APIs
-
Ipv6Addr::is_unique_local -
Ipv6Addr::is_unicast_link_local -
core::ptr::with_exposed_provenance -
core::ptr::with_exposed_provenance_mut -
<ptr>::addr -
<ptr>::expose_provenance -
<ptr>::with_addr -
<ptr>::map_addr -
<int>::isqrt -
<int>::checked_isqrt -
<uint>::isqrt -
NonZero::isqrt -
core::ptr::without_provenance -
core::ptr::without_provenance_mut -
core::ptr::dangling -
core::ptr::dangling_mut -
Pin::as_deref_mut
These APIs are now stable in const contexts
-
AtomicBool::from_ptr -
AtomicPtr::from_ptr -
AtomicU8::from_ptr -
AtomicU16::from_ptr -
AtomicU32::from_ptr -
AtomicU64::from_ptr -
AtomicUsize::from_ptr -
AtomicI8::from_ptr -
AtomicI16::from_ptr -
AtomicI32::from_ptr -
AtomicI64::from_ptr -
AtomicIsize::from_ptr -
<ptr>::is_null -
<ptr>::as_ref -
<ptr>::as_mut -
Pin::new -
Pin::new_unchecked -
Pin::get_ref -
Pin::into_ref -
Pin::get_mut -
Pin::get_unchecked_mut -
Pin::static_ref -
Pin::static_mut
Cargo
Rustdoc
Compatibility Notes
-
Enable by default the
LSXtarget feature for LoongArch Linux targets -
The unstable
-Zprofileflag (“gcov-style” coverage instrumentation) has been removed. This does not affect the stable flags for coverage instrumentation (-Cinstrument-coverage) and profile-guided optimization (-Cprofile-generate,-Cprofile-use), which are unrelated and remain available. -
Support for the target named
wasm32-wasihas been removed as the target is now namedwasm32-wasip1. This completes the transition plan for this target following the introduction ofwasm32-wasip1in Rust 1.78. Compiler warnings on use ofwasm32-wasiintroduced in Rust 1.81 are now gone as well as the target is removed. -
The syntax
&pin (mut|const) Tis now parsed as a type which in theory could affect macro expansion results in some edge cases -
Legacy syntax for calling
std::archfunctions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks). - Declaring functions with a calling convention not supported on the current target now triggers a hard error
- The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues