1.74.0 #
- Released on: 16 November, 2023
- Branched from master on: 29 September, 2023
Language #
- Codify that
std::mem::Discriminant<T>
does not depend on any lifetimes in T - Replace
private_in_public
lint withprivate_interfaces
andprivate_bounds
per RFC 2145. Read more in RFC 2145. - Allow explicit
#[repr(Rust)]
- closure field capturing: don’t depend on alignment of packed fields
- Enable MIR-based drop-tracking for
async
blocks - Stabilize
impl_trait_projections
Compiler #
- stabilize combining +bundle and +whole-archive link modifiers
- Stabilize
PATH
option for--print KIND=PATH
- Enable ASAN/LSAN/TSAN for
*-apple-ios-macabi
- Promote loongarch64-unknown-none* to Tier 2
- Add
i686-pc-windows-gnullvm
as a tier 3 target
Libraries #
- Implement
From<OwnedFd/Handle>
for ChildStdin/out/err - Implement
From<{&,&mut} [T; N]>
forVec<T>
whereT: Clone
- impl Step for IP addresses
- Implement
From<[T; N]>
forRc<[T]>
andArc<[T]>
impl TryFrom<char> for u16
- Stabilize
io_error_other
feature - Stabilize the
Saturating
type - Stabilize const_transmute_copy
Stabilized APIs #
core::num::Saturating
impl From<io::Stdout> for std::process::Stdio
impl From<io::Stderr> for std::process::Stdio
impl From<OwnedHandle> for std::process::Child{Stdin, Stdout, Stderr}
impl From<OwnedFd> for std::process::Child{Stdin, Stdout, Stderr}
std::ffi::OsString::from_encoded_bytes_unchecked
std::ffi::OsString::into_encoded_bytes
std::ffi::OsStr::from_encoded_bytes_unchecked
std::ffi::OsStr::as_encoded_bytes
std::io::Error::other
impl TryFrom<char> for u16
impl<T: Clone, const N: usize> From<&[T; N]> for Vec<T>
impl<T: Clone, const N: usize> From<&mut [T; N]> for Vec<T>
impl<T, const N: usize> From<[T; N]> for Arc<[T]>
impl<T, const N: usize> From<[T; N]> for Rc<[T]>
These APIs are now stable in const contexts:
Cargo #
- In
Cargo.toml
, stabilize[lints]
- Stabilize credential-process and registry-auth
- Stabilize
--keep-going
build flag - Add styling to
--help
output - For
cargo clean
, add--dry-run
flag and summary line at the end - For
cargo update
, make--package
more convenient by being positional - For
cargo update
, clarify meaning of –aggressive as –recursive - Add ‘-n’ as an alias for
--dry-run
- Allow version-prefixes in pkgid’s (e.g.
--package
flags) to resolve ambiguities - In
.cargo/config.toml
, merge lists in precedence order - Add support for
target.'cfg(..)'.linker
Rustdoc #
- Add warning block support in rustdoc
- rustdoc-search: add support for type parameters
- rustdoc: show inner enum and struct in type definition for concrete type
Compatibility Notes #
- Raise minimum supported Apple OS versions
- make Cell::swap panic if the Cells partially overlap
- Reject invalid crate names in
--extern
- Don’t resolve generic impls that may be shadowed by dyn built-in impls
- The new
impl From<{&,&mut} [T; N]> for Vec<T>
is known to cause some inference failures with overly-generic code. In those examples using thetui
crate, the combination ofAsRef<_>
andInto<Vec>
leaves the middle type ambiguous, and the newimpl
adds another possibility, so it now requires an explicit type annotation.
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.
None this cycle.