1.79.0
版本发布时间: 2024-06-13 22:04:46
rust-lang/rust最新发布版本:1.82.0(2024-10-18 00:44:34)
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_lifetimes
lint to detect lifetimes which are semantically redundant. -
Stabilize the
unnameable_types
lint for public types that can't be named. -
Enable debuginfo in macros, and stabilize
-C collapse-macro-debuginfo
and#[collapse_debuginfo]
. -
Propagate temporary lifetime extension into
if
andmatch
expressions. -
Restrict promotion of
const fn
calls. -
Warn against refining impls of crate-private traits with
refining_impl_trait
lint. - Stabilize associated type bounds (RFC 2289).
-
Stabilize importing
main
from other modules or crates. - Check return types of function types for well-formedness
-
Rework
impl Trait
lifetime inference - Change inductive trait solver cycles to be ambiguous
Compiler
-
Define
-C strip
to only affect binaries, not artifacts like.pdb
. -
Stabilize
-Crelro-level
for controlling runtime link hardening. -
Stabilize checking of
cfg
names 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-visionos
andaarch64-apple-visionos-sim
tier 3 targets. -
Add
riscv32ima-unknown-none-elf
tier 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
FromIterator
for(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
transmute
between 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
gitoxide
by 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.
-
RustcEncodable
andRustcDecodable
are soft-destabilized, to be removed from the prelude in next edition. -
The
wasm_c_abi
future-incompatibility lint will warn about use of the non-spec-compliant C ABI. Usewasm-bindgen v0.2.88
to generate forward-compatible bindings. - Check return types of function types for well-formedness