Version 1.74.1 (2023-12-07)
- Resolved spurious STATUS_ACCESS_VIOLATIONs in LLVM
- Clarify guarantees for std::mem::discriminant
- Fix some subtyping-related regressions
Version 1.74.0 (2023-11-16)
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.