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_publiclint withprivate_interfacesandprivate_boundsper 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
asyncblocks - Stabilize
impl_trait_projections
Compiler #
- stabilize combining +bundle and +whole-archive link modifiers
- Stabilize
PATHoption for--print KIND=PATH - Enable ASAN/LSAN/TSAN for
*-apple-ios-macabi - Promote loongarch64-unknown-none* to Tier 2
- Add
i686-pc-windows-gnullvmas 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_otherfeature - Stabilize the
Saturatingtype - Stabilize const_transmute_copy
Stabilized APIs #
core::num::Saturatingimpl From<io::Stdout> for std::process::Stdioimpl From<io::Stderr> for std::process::Stdioimpl 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_uncheckedstd::ffi::OsString::into_encoded_bytesstd::ffi::OsStr::from_encoded_bytes_uncheckedstd::ffi::OsStr::as_encoded_bytesstd::io::Error::otherimpl TryFrom<char> for u16impl<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-goingbuild flag - Add styling to
--helpoutput - For
cargo clean, add--dry-runflag and summary line at the end - For
cargo update, make--packagemore 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.
--packageflags) 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 thetuicrate, the combination ofAsRef<_>andInto<Vec>leaves the middle type ambiguous, and the newimpladds 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.