Update dependency rust to v1.84.0 #1376
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.80.0->1.84.0Release Notes
rust-lang/rust (rust)
v1.84.0Compare Source
==========================
Language
#[deny]inside#[forbid]as a no-op-Ctarget-featureis used to toggle features that can lead to unsoundness due to ABI mismatches/as the path separator forinclude!()in all cases on Windowsraw (const|mut)) of a deref of a pointer (*ptr) is now safeextern "C"functionCompiler
--print host-tupleflag to print the host target tuple and affirm the "target tuple" terminology over "target triple"loongarch64-unknown-linux-{musl,ohos}unexpected_cfgslint to also warn in external macrosmultivalue,reference-types, andtail-calltarget featureswasm32v1-nonetargetLibraries
From<&mut {slice}>forBox/Rc/Arc<{slice}><float>::copysign,<float>::abs,<float>::signumtocoreLowerExpandUpperExpimplementations toNonZeroFromStrforCStringandTryFrom<CString>forStringstd::os::darwinhas been made publicStabilized APIs
Ipv6Addr::is_unique_localIpv6Addr::is_unicast_link_localcore::ptr::with_exposed_provenancecore::ptr::with_exposed_provenance_mut<ptr>::addr<ptr>::expose_provenance<ptr>::with_addr<ptr>::map_addr<int>::isqrt<int>::checked_isqrt<uint>::isqrtNonZero::isqrtcore::ptr::without_provenancecore::ptr::without_provenance_mutcore::ptr::danglingcore::ptr::dangling_mutPin::as_deref_mutThese APIs are now stable in const contexts
AtomicBool::from_ptrAtomicPtr::from_ptrAtomicU8::from_ptrAtomicU16::from_ptrAtomicU32::from_ptrAtomicU64::from_ptrAtomicUsize::from_ptrAtomicI8::from_ptrAtomicI16::from_ptrAtomicI32::from_ptrAtomicI64::from_ptrAtomicIsize::from_ptr<ptr>::is_null<ptr>::as_ref<ptr>::as_mutPin::newPin::new_uncheckedPin::get_refPin::into_refPin::get_mutPin::get_unchecked_mutPin::static_refPin::static_mutCargo
Rustdoc
Compatibility Notes
LSXtarget feature for LoongArch Linux targets-Zprofileflag (“gcov-style” coverage instrumentation) has been removed. This does not affect the stable flags for coverage instrumentation (-Cinstrument-coverage) and profile-guided optimization (-Cprofile-generate,-Cprofile-use), which are unrelated and remain available.wasm32-wasihas been removed as the target is now namedwasm32-wasip1. This completes the transition plan for this target following the introduction ofwasm32-wasip1in Rust 1.78. Compiler warnings on use ofwasm32-wasiintroduced in Rust 1.81 are now gone as well as the target is removed.&pin (mut|const) Tis now parsed as a type which in theory could affect macro expansion results in some edge casesstd::archfunctions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).wasm32-unknown-emscriptentarget's binary release of the standard library is now built with the latest emsdk 3.1.68, which fixes an ABI-incompatibility with Emscripten >= 3.1.42. If you are locally using a version of emsdk with an incompatible ABI (e.g. before 3.1.42 or a future one), you should build your code with-Zbuild-stdto ensure thatstduses the correct ABI.v1.83.0Compare Source
==========================
Language
&mut,*mut,&Cell, and*const Cellin const.constinitializers.'r#ident).!const externfunctions can now be defined for other calling conventions.expr_2021macro fragment specifier in all editions.non_local_definitionslint now fires on less code and warns by default.Compiler
-Csoft-floatflag.aarch64_unknown_nto_qnx700arm64e-apple-tvosarmv7-rtems-eabihfloongarch64-unknown-linux-ohosriscv32-wrs-vxworksandriscv64-wrs-vxworksriscv32{e|em|emc}-unknown-none-elfx86_64-unknown-hurd-gnux86_64-unknown-trustyRefer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
PartialEqforExitCode.catch_unwindcan deal with foreign exceptions without UB, although the exact behavior is unspecified.DefaultforHashMap/HashSetiterators that don't already have it.ptr::add/subto not claim equivalence withoffset.Stabilized APIs
BufRead::skip_untilControlFlow::break_valueControlFlow::continue_valueControlFlow::map_breakControlFlow::map_continueDebugList::finish_non_exhaustiveDebugMap::finish_non_exhaustiveDebugSet::finish_non_exhaustiveDebugTuple::finish_non_exhaustiveErrorKind::ArgumentListTooLongErrorKind::DeadlockErrorKind::DirectoryNotEmptyErrorKind::ExecutableFileBusyErrorKind::FileTooLargeErrorKind::HostUnreachableErrorKind::IsADirectoryErrorKind::NetworkDownErrorKind::NetworkUnreachableErrorKind::NotADirectoryErrorKind::NotSeekableErrorKind::ReadOnlyFilesystemErrorKind::ResourceBusyErrorKind::StaleNetworkFileHandleErrorKind::StorageFullErrorKind::TooManyLinksOption::get_or_insert_defaultWaker::dataWaker::newWaker::vtablechar::MINhash_map::Entry::insert_entryhash_map::VacantEntry::insert_entryThese APIs are now stable in const contexts:
Cell::into_innerDuration::as_secs_f32Duration::as_secs_f64Duration::div_duration_f32Duration::div_duration_f64MaybeUninit::as_mut_ptrNonNull::as_mutNonNull::copy_fromNonNull::copy_from_nonoverlappingNonNull::copy_toNonNull::copy_to_nonoverlappingNonNull::slice_from_raw_partsNonNull::writeNonNull::write_bytesNonNull::write_unalignedOnceCell::into_innerOption::as_mutOption::expectOption::replaceOption::takeOption::unwrapOption::unwrap_uncheckedOption::<&_>::copiedOption::<&mut _>::copiedOption::<Option<_>>::flattenOption::<Result<_, _>>::transposeRefCell::into_innerResult::as_mutResult::<&_, _>::copiedResult::<&mut _, _>::copiedResult::<Option<_>, _>::transposeUnsafeCell::get_mutUnsafeCell::into_innerarray::from_mutchar::encode_utf8{float}::classify{float}::is_finite{float}::is_infinite{float}::is_nan{float}::is_normal{float}::is_sign_negative{float}::is_sign_positive{float}::is_subnormal{float}::from_bits{float}::from_be_bytes{float}::from_le_bytes{float}::from_ne_bytes{float}::to_bits{float}::to_be_bytes{float}::to_le_bytes{float}::to_ne_bytesmem::replaceptr::replaceptr::slice_from_raw_parts_mutptr::writeptr::write_unaligned<*const _>::copy_to<*const _>::copy_to_nonoverlapping<*mut _>::copy_from<*mut _>::copy_from_nonoverlapping<*mut _>::copy_to<*mut _>::copy_to_nonoverlapping<*mut _>::write<*mut _>::write_bytes<*mut _>::write_unalignedslice::from_mutslice::from_raw_parts_mut<[_]>::first_mut<[_]>::last_mut<[_]>::first_chunk_mut<[_]>::last_chunk_mut<[_]>::split_at_mut<[_]>::split_at_mut_checked<[_]>::split_at_mut_unchecked<[_]>::split_first_mut<[_]>::split_last_mut<[_]>::split_first_chunk_mut<[_]>::split_last_chunk_mutstr::as_bytes_mutstr::as_mut_ptrstr::from_utf8_unchecked_mutCargo
CARGO_MANIFEST_PATHenvironment variable, similar toCARGO_MANIFEST_DIRbut pointing directly to the manifest file.package.autolibto the manifest, allowing[lib]auto-discovery to be disabled.Rustdoc
# headersfrom the main item's doc comment. This is similar to a third-party feature provided by the rustdoc-search-enhancements browser extension.Compatibility Notes
Warn against function pointers using unsupported ABI strings.
Check well-formedness of the source type's signature in fn pointer casts. This partly closes a soundness hole that comes when casting a function item to function pointer
Use equality instead of subtyping when resolving type dependent paths.
Linking on macOS now correctly includes Rust's default deployment target. Due to a linker bug, you might have to pass
MACOSX_DEPLOYMENT_TARGETor fix your#[link]attributes to point to the correct frameworks. See #129369.Rust will now correctly raise an error for
repr(Rust)written on non-struct/enum/unionitems, since it previous did not have any effect.The future incompatibility lint
deprecated_cfg_attr_crate_type_namehas been made into a hard error. It was used to deny usage of#![crate_type]and#![crate_name]attributes in#![cfg_attr], which required a hack in the compiler to be able to change the used crate type and crate name after cfg expansion.Users can use
--crate-typeinstead of#![cfg_attr(..., crate_type = "...")]and--crate-nameinstead of#![cfg_attr(..., crate_name = "...")]when runningrustc/cargo rustcon the command line.Use of those two attributes outside of
#![cfg_attr]continue to be fully supported.Until now, paths into the sysroot were always prefixed with
/rustc/$hashin diagnostics, codegen, backtrace, e.g.RFC 3127 said
#129687 implements this behaviour, when
rust-srcis present at compile time,rustcreplaces/rustc/$hashwith a real path into the localrust-srccomponent with best effort.To sanitize this, users must explicitly supply
--remap-path-prefix=<path to rust-src>=fooor not have therust-srccomponent installed.The allow-by-default
missing_docslint used to disable itself when invoked throughrustc --test/cargo test, resulting in#[expect(missing_docs)]emitting false positives due to the expectation being wrongly unfulfilled. This behavior has now been removed, which allows#[expect(missing_docs)]to be fulfilled in all scenarios, but will also report newmissing_docsdiagnostics for publicly reachable#[cfg(test)]items, integration test crate-level documentation, and publicly reachable items in integration tests.The
armv8r-none-eabihftarget now uses the Armv8-R required set of floating-point features.Fix a soundness bug where rustc wouldn't detect unconstrained higher-ranked lifetimes in a
dyn Trait's associated types that occur due to supertraits.Update the minimum external LLVM version to 18.
Remove
aarch64-fuchsiaandx86_64-fuchsiatarget aliases in favor ofaarch64-unknown-fuchsiaandx86_64-unknown-fuchsiarespectively.The ABI-level exception class of a Rust panic is now encoded with native-endian bytes, so it is legible in hex dumps.
Visual Studio 2013 is no longer supported for MSVC targets.
The sysroot no longer contains the
stddynamic library in its top-levellib/dir.v1.82.0Compare Source
==========================
Language
addr_of(_mut)!macros and the newly stabilized&raw (const|mut)are now safe to use with all static itemsfor<...>binder in trait bounds&raw constand&raw mutoperators (RFC 2582)offset_of!Tto be live when dropping[T; 0]constoperands in inline assemblyconst fnCompiler
aarch64-apple-ios-macabiandx86_64-apple-ios-macabito Tier 2, and ship them with rustup-> !aarch64-apple-darwinto Tier 1aarch64-unknown-trustyandarmv7-unknown-trustyas tier 3 targetswasm32-wasip2to Tier 2.Libraries
{Rc,Arc}::make_mut()toPath,OsStr, andCStr.Stabilized APIs
std::thread::Builder::spawn_uncheckedstd::str::CharIndices::offsetstd::option::Option::is_none_or[T]::is_sorted[T]::is_sorted_by[T]::is_sorted_by_keyIterator::is_sortedIterator::is_sorted_byIterator::is_sorted_by_keystd::future::Ready::into_innerstd::iter::repeat_nimpl<T: Clone> DoubleEndedIterator for Take<Repeat<T>>impl<T: Clone> ExactSizeIterator for Take<Repeat<T>>impl<T: Clone> ExactSizeIterator for Take<RepeatWith<T>>impl Default for std::collections::binary_heap::Iterimpl Default for std::collections::btree_map::RangeMutimpl Default for std::collections::btree_map::ValuesMutimpl Default for std::collections::vec_deque::Iterimpl Default for std::collections::vec_deque::IterMutRc<T>::new_uninitRc<MaybeUninit<T>>::assume_initRc<[T]>::new_uninit_sliceRc<[MaybeUninit<T>]>::assume_initArc<T>::new_uninitArc<MaybeUninit<T>>::assume_initArc<[T]>::new_uninit_sliceArc<[MaybeUninit<T>]>::assume_initBox<T>::new_uninitBox<MaybeUninit<T>>::assume_initBox<[T]>::new_uninit_sliceBox<[MaybeUninit<T>]>::assume_initcore::arch::x86_64::_bextri_u64core::arch::x86_64::_bextri_u32core::arch::x86::_mm_broadcastsi128_si256core::arch::x86::_mm256_stream_load_si256core::arch::x86::_tzcnt_u16core::arch::x86::_mm_extracti_si64core::arch::x86::_mm_inserti_si64core::arch::x86::_mm_storeu_si16core::arch::x86::_mm_storeu_si32core::arch::x86::_mm_storeu_si64core::arch::x86::_mm_loadu_si16core::arch::x86::_mm_loadu_si32core::arch::wasm32::u8x16_relaxed_swizzlecore::arch::wasm32::i8x16_relaxed_swizzlecore::arch::wasm32::i32x4_relaxed_trunc_f32x4core::arch::wasm32::u32x4_relaxed_trunc_f32x4core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zerocore::arch::wasm32::u32x4_relaxed_trunc_f64x2_zerocore::arch::wasm32::f32x4_relaxed_maddcore::arch::wasm32::f32x4_relaxed_nmaddcore::arch::wasm32::f64x2_relaxed_maddcore::arch::wasm32::f64x2_relaxed_nmaddcore::arch::wasm32::i8x16_relaxed_laneselectcore::arch::wasm32::u8x16_relaxed_laneselectcore::arch::wasm32::i16x8_relaxed_laneselectcore::arch::wasm32::u16x8_relaxed_laneselectcore::arch::wasm32::i32x4_relaxed_laneselectcore::arch::wasm32::u32x4_relaxed_laneselectcore::arch::wasm32::i64x2_relaxed_laneselectcore::arch::wasm32::u64x2_relaxed_laneselectcore::arch::wasm32::f32x4_relaxed_mincore::arch::wasm32::f32x4_relaxed_maxcore::arch::wasm32::f64x2_relaxed_mincore::arch::wasm32::f64x2_relaxed_maxcore::arch::wasm32::i16x8_relaxed_q15mulrcore::arch::wasm32::u16x8_relaxed_q15mulrcore::arch::wasm32::i16x8_relaxed_dot_i8x16_i7x16core::arch::wasm32::u16x8_relaxed_dot_i8x16_i7x16core::arch::wasm32::i32x4_relaxed_dot_i8x16_i7x16_addcore::arch::wasm32::u32x4_relaxed_dot_i8x16_i7x16_addThese APIs are now stable in const contexts:
std::task::Waker::from_rawstd::task::Context::from_wakerstd::task::Context::waker$integer::from_str_radixstd::num::ParseIntError::kindCargo
infocargo subcommandCompatibility Notes
explicit_builtin_cfgs_in_flagslint in order to prevent incoherent state, eg.windowscfg active but target is Linux based. The appropriaterustcflag should be used instead.binary_searchwhich is significantly improves performance (#128254). However when a sorted slice has multiple values which compare equal, the new implementation may select a different value among the equal ones than the old implementation.MSG_NOSIGNALwhen writing to sockets. This avoids killing the process with SIGPIPE when writing to a closed socket, which matches the existing behavior on other UNIX targets.multivalueandreference-typesare nowboth enabled by default. These two features both have subtle changes implied
for generated WebAssembly binaries. For the
multivaluefeature, WebAssemblytarget support has changed when upgrading to LLVM 19. Support for generating
functions with multiple returns no longer works and
-Ctarget-feature=+multivaluehas a different meaning than it did in LLVM 18and prior. There is no longer any supported means to generate a module that has
a function with multiple returns in WebAssembly from Rust source code. For the
reference-typesfeature the encoding of immediates in thecall_indirect, acommonly used instruction by the WebAssembly backend, has changed. Validators
and parsers which don't understand the
reference-typesproposal will nolonger accept modules produced by LLVM due to this change in encoding of
immediates. Additionally these features being enabled are encoded in the
target_featurescustom section and may affect downstream tooling such aswasm-optconsuming the module. Generating a WebAssembly module that disablesdefault features requires
-Zbuild-stdsupport from Cargo and more informationcan be found at
rust-lang/rust#128511.
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.
v1.81.0Compare Source
==========================
Language
extern "C"functions.&in elided self lifetimes.#[expect]for lints (RFC 2383), like#[allow]with a warning if the lint is not fulfilled.elided_lifetimes_in_associated_constantto deny.offset_from: always allow pointers to point to the same address.Compiler
-Cinline-threshold=....transmutesize checks.box_pointerslint.no_stdXtensa targets:xtensa-esp32-none-elf,xtensa-esp32s2-none-elf,xtensa-esp32s3-none-elfstdXtensa targets:xtensa-esp32-espidf,xtensa-esp32s2-espidf,xtensa-esp32s3-espidfi686-unknown-redoxarm64ec-pc-windows-msvcto Tier 2.loongarch64-unknown-linux-muslto Tier 2 with host tools.wasm32-wasi. (see compatibility note below)Libraries
PanicInfoand std'sPanicInfo. (see compatibility note below){Rc,Arc}::make_mut()to unsized types.driftsortand unstableipnsort. Allslice::sort*andslice::select_nth*methods are expected to see significant performance improvements. See the research project for more details.create_dir_allwith respect to empty paths.Stabilized APIs
core::errorhint::assert_uncheckedfs::existsAtomicBool::fetch_notDuration::abs_diffIoSlice::advanceIoSlice::advance_slicesIoSliceMut::advanceIoSliceMut::advance_slicesPanicHookInfoPanicInfo::messagePanicMessageThese APIs are now stable in const contexts:
char::from_u32_unchecked(function)char::from_u32_unchecked(method)CStr::count_bytesCStr::from_ptrCargo
.cargo_vcs_info.jsonis always included, even when--allow-dirtyis passed.package.license-fileandpackage.readmepointing to non-existent files during packaging.--release/--debugflag along with the--profileflag.lib.pluginkey support inCargo.toml. Rust plugin support has been deprecated for four years and was removed in 1.75.0.Compatibility Notes
Usage of the
wasm32-wasitarget will now issue a compiler warning and request users switch to thewasm32-wasip1target instead. Both targets are the same,wasm32-wasiis only being renamed, and this change to the WASI target is being done to enable removingwasm32-wasiin January 2025.We have renamed
std::panic::PanicInfotostd::panic::PanicHookInfo. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0.core::panic::PanicInfowill remain unchanged, however, as this is now a different type.The reason is that these types have different roles:
std::panic::PanicHookInfois the argument to the panic hook in std context (where panics can have an arbitrary payload), whilecore::panic::PanicInfois the argument to the#[panic_handler]in no_std context (where panics always carry a formatted message). Separating these types allows us to add more useful methods to these types, such asstd::panic::PanicHookInfo::payload_as_str()andcore::panic::PanicInfo::message().The new sort implementations may panic if a type's implementation of
Ord(or the given comparison function) does not implement a total order as the trait requires.Ord's supertraits (PartialOrd,Eq, andPartialEq) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data.In very rare cases, a change in the internal evaluation order of the trait
solver may result in new fatal overflow errors.
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.
autoCI job to check kernel builds.v1.80.1[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.80.0...1
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.