1.84.0
版本发布时间: 2025-01-09 23:41:56
rust-lang/rust最新发布版本:1.84.0(2025-01-09 23:41:56)
Language
-
Allow
#[deny]
inside#[forbid]
as a no-op -
Show a warning when
-Ctarget-feature
is 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-tuple
flag 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_cfgs
lint to also warn in external macros -
Stabilize WebAssembly
multivalue
,reference-types
, andtail-call
target features -
Added Tier 2 support for the
wasm32v1-none
target
Libraries
-
Implement
From<&mut {slice}>
forBox/Rc/Arc<{slice}>
-
Move
<float>::copysign
,<float>::abs
,<float>::signum
tocore
-
Add
LowerExp
andUpperExp
implementations toNonZero
-
Implement
FromStr
forCString
andTryFrom<CString>
forString
-
std::os::darwin
has 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
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
LSX
target feature for LoongArch Linux targets -
The unstable
-Zprofile
flag (“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-wasi
has been removed as the target is now namedwasm32-wasip1
. This completes the transition plan for this target following the introduction ofwasm32-wasip1
in Rust 1.78. Compiler warnings on use ofwasm32-wasi
introduced in Rust 1.81 are now gone as well as the target is removed. -
The syntax
&pin (mut|const) T
is now parsed as a type which in theory could affect macro expansion results in some edge cases -
Legacy syntax for calling
std::arch
functions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks). - The
wasm32-unknown-emscripten
target's binary release of the standard library is now built with the latest emsdk 3.1.68, which fixes an ABI-incompatibility with Emscripten >= 3.1.42. If you are locally using a version of emsdk with an incompatible ABI (e.g. before 3.1.42 or a future one), you should build your code with-Zbuild-std
to ensure thatstd
uses the correct ABI. - 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