1.70.0 #
- Released on: 1 June, 2023
- Branched from master on: 14 April, 2023
Language #
- Relax ordering rules for asm!operands
- Properly allow macro expanded format_argsinvocations to uses captures
- Lint ambiguous glob re-exports
- Perform const and unsafe checking for expressions in let _ = exprposition.
Compiler #
- Extend -Cdebuginfo with new options and named aliases
This provides a smaller version of debuginfo for cases that only need line number information
(-Cdebuginfo=line-tables-only), which may eventually become the default for-Cdebuginfo=1.
- Make unused_allocationlint againstBox::newtoo
- Detect uninhabited types early in const eval
- Switch to LLD as default linker for {arm,thumb}v4t-none-eabi
- Add tier 3 target loongarch64-unknown-linux-gnu
- Add tier 3 target for i586-pc-nto-qnx700(QNX Neutrino RTOS, version 7.0),
- Insert alignment checks for pointer dereferences as debug assertions This catches undefined behavior at runtime, and may cause existing code to fail.
Refer to Rust’s [platform support page][platform-support-doc] for more information on Rust’s tiered platform support.
Libraries #
- Document NonZeroXxx layout guarantees
- Windows: make Commandprefer non-verbatim paths
- Implement Default for some alloc/core iterators
- Fix handling of trailing bare CR in str::lines
- allow negative numeric literals in concat!
- Add documentation about the memory layout of Cell
- Use partial_cmpto implement tuplelt/le/ge/gt
- Stabilize atomic_as_ptr
- Stabilize nonnull_slice_from_raw_parts
- Partial stabilization of once_cell
- Stabilize nonzero_min_max
- Flatten/inline format_args!() and (string and int) literal arguments into format_args!()
- Stabilize movbe target feature
- don’t splice from files into pipes in io::copy
- Add a builtin unstable FnPtrtrait that is implemented for all function pointers This extendsDebug,Pointer,Hash,PartialEq,Eq,PartialOrd, andOrdimplementations for function pointers with all ABIs.
Stabilized APIs #
- NonZero*::MIN/MAX
- BinaryHeap::retain
- Default for std::collections::binary_heap::IntoIter
- Default for std::collections::btree_map::{IntoIter, Iter, IterMut}
- Default for std::collections::btree_map::{IntoKeys, Keys}
- Default for std::collections::btree_map::{IntoValues, Values}
- Default for std::collections::btree_map::Range
- Default for std::collections::btree_set::{IntoIter, Iter}
- Default for std::collections::btree_set::Range
- Default for std::collections::linked_list::{IntoIter, Iter, IterMut}
- Default for std::vec::IntoIter
- Default for std::iter::Chain
- Default for std::iter::Cloned
- Default for std::iter::Copied
- Default for std::iter::Enumerate
- Default for std::iter::Flatten
- Default for std::iter::Fuse
- Default for std::iter::Rev
- Default for std::slice::Iter
- Default for std::slice::IterMut
- Rc::into_inner
- Arc::into_inner
- std::cell::OnceCell
- Option::is_some_and
- NonNull::slice_from_raw_parts
- Result::is_ok_and
- Result::is_err_and
- std::sync::atomic::Atomic*::as_ptr
- std::io::IsTerminal
- std::os::linux::net::SocketAddrExt
- std::os::unix::net::UnixDatagram::bind_addr
- std::os::unix::net::UnixDatagram::connect_addr
- std::os::unix::net::UnixDatagram::send_to_addr
- std::os::unix::net::UnixListener::bind_addr
- std::path::Path::as_mut_os_str
- std::sync::OnceLock
Cargo #
- Add CARGO_PKG_README
- Make sparsethe default protocol for crates.io
- Accurately show status when downgrading dependencies
- Use registry.default for login/logout
- Stabilize cargo logout
Misc #
Compatibility Notes #
- Prevent stable libtestfrom supporting-Zunstable-options
- Perform const and unsafe checking for expressions in let _ = exprposition.
- WebAssembly targets enable sign-extandmutable-globalsfeatures in codegen This may cause incompatibility with older execution environments.
- Insert alignment checks for pointer dereferences as debug assertions This catches undefined behavior at runtime, and may cause existing code to fail.
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.