Rust 1.85.0
Language
- The 2024 Edition is now stable. See the edition guide for more details.
- Stabilize async closures See RFC 3668 for more details.
- Stabilize
#[diagnostic::do_not_recommend] - Add
unpredictable_function_pointer_comparisonslint to warn against function pointer comparisons - Lint on combining
#[no_mangle]and#[export_name]attributes.
Compiler
- The unstable flag
-Zpolymorphizehas been removed, see rust-lang/compiler-team#810 for some background.
Platform Support
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
-
Panics in the standard library now have a leading
library/in their path -
std::env::home_dir()on Windows now ignores the non-standard$HOMEenvironment variableIt will be un-deprecated in a subsequent release.
Stabilized APIs
BuildHasherDefault::newptr::fn_addr_eqio::ErrorKind::QuotaExceededio::ErrorKind::CrossesDevices{float}::midpoint- Unsigned
{integer}::midpoint NonZeroU*::midpoint- impl
std::iter::Extendfor tuples with arity 1 through 12 FromIterator<(A, ...)>for tuples with arity 1 through 12std::task::Waker::noop
These APIs are now stable in const contexts:
mem::size_of_valmem::align_of_valLayout::for_valueLayout::align_toLayout::pad_to_alignLayout::extendLayout::arraystd::mem::swapstd::ptr::swapNonNull::newHashMap::with_hasherHashSet::with_hasherBuildHasherDefault::new<float>::recip<float>::to_degrees<float>::to_radians<float>::max<float>::min<float>::clamp<float>::abs<float>::signum<float>::copysignMaybeUninit::write
Cargo
- Add future-incompatibility warning against keywords in cfgs and add raw-idents
- Stabilize higher precedence trailing flags
- Pass
CARGO_CFG_FEATUREto build scripts
Rustdoc
Compatibility Notes
-
rustcno longer treats thetestcfg as a well known check-cfg, instead it is up to the build systems and users of--check-cfg[^check-cfg] to set it as a well known cfg using--check-cfg=cfg(test).This is done to enable build systems like Cargo to set it conditionally, as not all source files are suitable for unit tests. Cargo (for now) unconditionally sets the
testcfg as a well known cfg. [^check-cfg]: https://doc.rust-lang.org/nightly/rustc/check-cfg.html -
Disable potentially incorrect type inference if there are trivial and non-trivial where-clauses
-
std::env::home_dir()has been deprecated for years, because it can give surprising results in some Windows configurations if theHOMEenvironment variable is set (which is not the normal configuration on Windows). We had previously avoided changing its behavior, out of concern for compatibility with code depending on this non-standard configuration. Given how long this function has been deprecated, we're now fixing its behavior as a bugfix. A subsequent release will remove the deprecation for this function. -
Make
core::ffi::c_charsignedness more closely match that of the platform-defaultcharThis changed
c_charfrom ani8tou8or vice versa on many Tier 2 and 3 targets (mostly Arm and RISC-V embedded targets). The new definition may result in compilation failures but fixes compatibility issues with C.The
libccrate matches this change as of its 0.2.169 release. -
Increase
sparcv9-sun-solarisandx86_64-pc-solarisSolaris baseline to 11.4. -
Show
abi_unsupported_vector_typeslint in future breakage reports
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.