Promote riscv64gc-unknown-linux-musl to tier 2 by Amanieu · Pull Request #122049 · rust-lang/rust (original) (raw)
rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.
Use r? to explicitly pick a reviewer
rustbot added A-testsuite
Area: The testsuite used to check the correctness of rustc
Status: Awaiting review from the assignee but also interested parties.
Relevant to the infrastructure team, which will review and decide on the PR/issue.
labels
I'm looking for a second target maintainer, this is required for tier 2 support.
cc @kraj @nmeum since you were involved in #82202
I'm looking for a second target maintainer, this is required for tier 2 support.
@Amanieu I will be happy to help. Please add me.
kraj approved these changes Mar 5, 2024
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Amanieu changed the title
Promote riscv64gc-unknown-linux-gnu to tier 2 Promote riscv64gc-unknown-linux-musl to tier 2
This should probably update the platform support docs to indicate the tier 2 target.
Dylan-DPC added S-waiting-on-MCP
Status: PR has a compiler MCP and is waiting for the compiler MCP to complete.
and removed S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
labels
Amanieu marked this pull request as ready for review
Some changes occurred in src/doc/rustc/src/platform-support
cc @Nilstrieb
These commits modify compiler targets.
(See the Target Tier Policy.)
Amanieu added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
and removed S-waiting-on-MCP
Status: PR has a compiler MCP and is waiting for the compiler MCP to complete.
labels
📌 Commit 7478987 has been approved by Mark-Simulacrum
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
bors added a commit to rust-lang-ci/rust that referenced this pull request
…imulacrum
Promote riscv64gc-unknown-linux-musl to tier 2
This comment has been minimized.
bors added the S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
label
bors added a commit to rust-lang-ci/rust that referenced this pull request
…imulacrum
Promote riscv64gc-unknown-linux-musl to tier 2
bors added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
and removed S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
labels
A job failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
@bors retry
Looks like some kind of networking error
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
tgross35 added a commit to tgross35/rust that referenced this pull request
…-Simulacrum
Promote riscv64gc-unknown-linux-musl to tier 2
bors added a commit to rust-lang-ci/rust that referenced this pull request
bors added a commit to rust-lang-ci/rust that referenced this pull request
…iaskrgr
Rollup of 5 pull requests
Successful merges:
- rust-lang#122049 (Promote riscv64gc-unknown-linux-musl to tier 2)
- rust-lang#128580 (Use
ParamEnv::reveal_allin CFI) - rust-lang#128688 (custom MIR: add support for tail calls)
- rust-lang#128694 (Normalize when equating
dyntails in MIR borrowck) - rust-lang#128697 (interpret: move nullary-op evaluation into operator.rs)
r? @ghost
@rustbot modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#122049 - Amanieu:riscv64-musl-tier2, r=Mark-Simulacrum
Promote riscv64gc-unknown-linux-musl to tier 2
Mark-Simulacrum added relnotes
Marks issues that should be documented in the release notes of the next release.
and removed relnotes
Marks issues that should be documented in the release notes of the next release.
labels
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| rust | minor | 1.81.0 -> 1.82.0 |
MR created with the help of el-capitano/tools/renovate-bot.
Proposed changes to behavior should be submitted there as MRs.
Release Notes
rust-lang/rust (rust)
v1.82.0
==========================
Language
- Don't make statement nonterminals match pattern nonterminals
- Patterns matching empty types can now be omitted in common cases
- Enforce supertrait outlives obligations when using trait impls
addr_of(_mut)!macros and the newly stabilized&raw (const|mut)are now safe to use with all static items- size_of_val_raw: for length 0 this is safe to call
- Reorder trait bound modifiers after
for<...>binder in trait bounds - Stabilize opaque type precise capturing (RFC 3617)
- Stabilize
&raw constand&raw mutoperators (RFC 2582) - Stabilize unsafe extern blocks (RFC 3484)
- Stabilize nested field access in
offset_of! - Do not require
Tto be live when dropping[T; 0] - Stabilize
constoperands in inline assembly - Stabilize floating-point arithmetic in
const fn - Stabilize explicit opt-in to unsafe attributes
- Document NaN bit patterns guarantees
Compiler
- Promote riscv64gc-unknown-linux-musl to tier 2
- Promote Mac Catalyst targets
aarch64-apple-ios-macabiandx86_64-apple-ios-macabito Tier 2, and ship them with rustup - Add tier 3 NuttX based targets for RISC-V and ARM
- Add tier 3 powerpc-unknown-linux-muslspe target
- Improved diagnostics to explain why a pattern is unreachable
- The compiler now triggers the unreachable code warning properly for async functions that don't return/are
-> ! - Promote
aarch64-apple-darwinto Tier 1 - Add Trusty OS target
aarch64-unknown-trustyandarmv7-unknown-trustyas tier 3 targets - Promote
wasm32-wasip2to Tier 2.
Libraries
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<T>::assume_initRc<[T]>::new_uninit_sliceRc<[MaybeUninit<T>]>::assume_initArc<T>::new_uninitArc<T>::assume_initArc<[T]>::new_uninit_sliceArc<[MaybeUninit<T>]>::assume_initBox<T>::new_uninitBox<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_add
These 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::kind
Cargo
Compatibility Notes
- We now disallow setting some built-in cfgs via the command-line with the newly added
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. - The standard library has a new implementation of
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. - illumos/Solaris now sets
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. - Removes a problematic hack that always passed the --whole-archive linker flag for tests, which may cause linker errors for code accidentally relying on it.
- The WebAssembly target features
multivalueandreference-typesare now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivaluefeature, WebAssembly target 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 18 and 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 thereference-typesfeature the encoding of immediates in thecall_indirect, a commonly used instruction by the WebAssembly backend, has changed. Validators and parsers which don't understand thereference-typesproposal will no longer accept modules produced by LLVM due to this change in encoding of immediates. Additionally these features being enabled are encoded in thetarget_featurescustom section and may affect downstream tooling such aswasm-optconsuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-stdsupport from Cargo and more information can be found at rust-lang/rust#128511. - Rust now raises unsafety errors for union patterns in parameter-position
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.
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 MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this MR and you won't be reminded about this update again.
- If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.
kxxt added a commit to kxxt/archriscv-packages that referenced this pull request
Musl Patch
riscv64gc-unknown-linux-musl gets promoted to tier 2 and crt_static_default
is updated to false in rust-lang/rust#122049,
which triggers rust-lang/rust#82521 (comment)
when building stage2 library artifacts
(riscv64gc-unknown-linux-gnu -> riscv64gc-unknown-linux-musl).
I patched it to re-enable crt_static_default for riscv64gc-unknown-linux-musl
to fix the build and align with the behavior on x86 Arch Linux, where rust-musl
defaults to statically link musl.
Wasm compiler_builtins bug
Wasm compiler_builtins rlib from built rust-wasm package includes objects for
host architecture(riscv64 in our case, and x86_64 for x86 Arch Linux).
This is not reproducible for toolchains installed via rustup so I have reported it
to Arch Linux:
https://gitlab.archlinux.org/archlinux/packaging/packages/rust/-/issues/3
Complications when building 1.82.0
rust-lang/rust#125016 landed in 1.82.0, which breaks building rust 1.82.0 using our packaged rust 1.81.0. Compiling the new compiler_builtins component requires a rustc compiler that includes rust-lang/rust@99e6a28 but unfortunately 1.81.0 does not, leading to the following ICE: https://archriscv.felixc.at/.status/log.htm?url=logs/rust/rust-1:1.82.0-1.log
internal compiler error: compiler/rustc_codegen_llvm/src/abi.rs:126:22: unsupported float: Reg { kind: Float, size: Size(2 bytes) }This is mitigated upstream by bumping stage0 to 1.82: rust-lang/rust#129268 (comment)
So we need to first build 1.82.0 rustc once without the f16/f128 handling part in compiler_builtins, to get a compiler that is capable of handling f16/f128. And then we can use this compiler to compile compiler_builtins with f16/f128 handling. It's not easy to do so in one patch. The most easy way is to build and package rust 1.82.0 twice. This PR covers the first part and disable-f16-f128.diff will be removed in the second part.
kxxt added a commit to kxxt/archriscv-packages that referenced this pull request
Musl Patch
riscv64gc-unknown-linux-musl gets promoted to tier 2 and crt_static_default
is updated to false in rust-lang/rust#122049,
which triggers rust-lang/rust#82521 (comment)
when building stage2 library artifacts
(riscv64gc-unknown-linux-gnu -> riscv64gc-unknown-linux-musl).
I patched it to re-enable crt_static_default for riscv64gc-unknown-linux-musl
to fix the build and align with the behavior on x86 Arch Linux, where rust-musl
defaults to statically link musl.
Wasm compiler_builtins bug
Wasm compiler_builtins rlib from built rust-wasm package includes objects for
host architecture(riscv64 in our case, and x86_64 for x86 Arch Linux).
This is not reproducible for toolchains installed via rustup so I have reported it
to Arch Linux:
https://gitlab.archlinux.org/archlinux/packaging/packages/rust/-/issues/3
Complications when building 1.82.0
rust-lang/rust#125016 landed in 1.82.0, which breaks building rust 1.82.0 using our packaged rust 1.81.0. Compiling the new compiler_builtins component requires a rustc compiler that includes rust-lang/rust@99e6a28 but unfortunately 1.81.0 does not, leading to the following ICE: https://archriscv.felixc.at/.status/log.htm?url=logs/rust/rust-1:1.82.0-1.log
internal compiler error: compiler/rustc_codegen_llvm/src/abi.rs:126:22: unsupported float: Reg { kind: Float, size: Size(2 bytes) }This is mitigated upstream by bumping stage0 to 1.82: rust-lang/rust#129268 (comment)
So we need to first build 1.82.0 rustc once without the f16/f128 handling part in compiler_builtins, to get a compiler that is capable of handling f16/f128. And then we can use this compiler to compile compiler_builtins with f16/f128 handling. It's not easy to do so in one patch. The most easy way is to build and package rust 1.82.0 twice. This PR covers the first part and disable-f16-f128.diff will be removed in the second part.
kxxt mentioned this pull request
felixonmars pushed a commit to felixonmars/archriscv-packages that referenced this pull request
Musl Patch
riscv64gc-unknown-linux-musl gets promoted to tier 2 and crt_static_default
is updated to false in rust-lang/rust#122049,
which triggers rust-lang/rust#82521 (comment)
when building stage2 library artifacts
(riscv64gc-unknown-linux-gnu -> riscv64gc-unknown-linux-musl).
I patched it to re-enable crt_static_default for riscv64gc-unknown-linux-musl
to fix the build and align with the behavior on x86 Arch Linux, where rust-musl
defaults to statically link musl.
Wasm compiler_builtins bug
Wasm compiler_builtins rlib from built rust-wasm package includes objects for
host architecture(riscv64 in our case, and x86_64 for x86 Arch Linux).
This is not reproducible for toolchains installed via rustup so I have reported it
to Arch Linux:
https://gitlab.archlinux.org/archlinux/packaging/packages/rust/-/issues/3
Complications when building 1.82.0
rust-lang/rust#125016 landed in 1.82.0, which breaks building rust 1.82.0 using our packaged rust 1.81.0. Compiling the new compiler_builtins component requires a rustc compiler that includes rust-lang/rust@99e6a28 but unfortunately 1.81.0 does not, leading to the following ICE: https://archriscv.felixc.at/.status/log.htm?url=logs/rust/rust-1:1.82.0-1.log
internal compiler error: compiler/rustc_codegen_llvm/src/abi.rs:126:22: unsupported float: Reg { kind: Float, size: Size(2 bytes) }This is mitigated upstream by bumping stage0 to 1.82: rust-lang/rust#129268 (comment)
So we need to first build 1.82.0 rustc once without the f16/f128 handling part in compiler_builtins, to get a compiler that is capable of handling f16/f128. And then we can use this compiler to compile compiler_builtins with f16/f128 handling. It's not easy to do so in one patch. The most easy way is to build and package rust 1.82.0 twice. This PR covers the first part and disable-f16-f128.diff will be removed in the second part.
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request
Pkgsrc changes:
- Adapt patches, apply to new vendored crates where needed.
- Back-port rust pull request 130110, "make dist vendoring configurable"
- Disable "dist vendoring", otherwise cargo would try to access the network during the build phase.
Upstream changes:
Version 1.82.0 (2024-10-17)
Language
- [Don't make statement nonterminals match pattern nonterminals] (rust-lang/rust#120221)
- [Patterns matching empty types can now be omitted in common cases] (rust-lang/rust#122792)
- [Enforce supertrait outlives obligations when using trait impls] (rust-lang/rust#124336)
- [
addr_of(_mut)!macros and the newly stabilized&raw (const|mut)are now safe to use with all static items] (rust-lang/rust#125834) - [size_of_val_raw: for length 0 this is safe to call] (rust-lang/rust#126152)
- [Reorder trait bound modifiers after
for<...>binder in trait bounds] (rust-lang/rust#127054) - [Stabilize opaque type precise capturing (RFC 3617)] (rust-lang/rust#127672)
- [Stabilize
&raw constand&raw mutoperators (RFC 2582)] (rust-lang/rust#127679) - [Stabilize unsafe extern blocks (RFC 3484)] (rust-lang/rust#127921)
- [Stabilize nested field access in
offset_of!] (rust-lang/rust#128284) - [Do not require
Tto be live when dropping[T; 0]] (rust-lang/rust#128438) - [Stabilize
constoperands in inline assembly] (rust-lang/rust#128570) - [Stabilize floating-point arithmetic in
const fn] (rust-lang/rust#128596) - [Stabilize explicit opt-in to unsafe attributes] (rust-lang/rust#128771)
- [Document NaN bit patterns guarantees] (rust-lang/rust#129559)
Compiler
- [Promote riscv64gc-unknown-linux-musl to tier 2] (rust-lang/rust#122049)
- [Promote Mac Catalyst targets
aarch64-apple-ios-macabiandx86_64-apple-ios-macabito Tier 2, and ship them with rustup] (rust-lang/rust#126450) - [Add tier 3 NuttX based targets for RISC-V and ARM] (rust-lang/rust#127755)
- [Add tier 3 powerpc-unknown-linux-muslspe target] (rust-lang/rust#127905)
- [Improved diagnostics to explain why a pattern is unreachable] (rust-lang/rust#128034)
- [The compiler now triggers the unreachable code warning properly
for async functions that don't return/are
-> !] (rust-lang/rust#128443) - [Promote
aarch64-apple-darwinto Tier 1] (rust-lang/rust#128592) - [Add Trusty OS target
aarch64-unknown-trustyandarmv7-unknown-trustyas tier 3 targets] (rust-lang/rust#129490) - [Promote
wasm32-wasip2to Tier 2.] (rust-lang/rust#126967)
Libraries
- [Generalize
{Rc,Arc}::make_mut()toPath,OsStr, andCStr.] (rust-lang/rust#126877)
Stabilized APIs
- [
std::thread::Builder::spawn_unchecked] (https://doc.rust-lang.org/stable/std/thread/struct.Builder.html#method.spawn_unchecked) - [
std::str::CharIndices::offset] (https://doc.rust-lang.org/nightly/std/str/struct.CharIndices.html#method.offset) - [
std::option::Option::is_none_or] (https://doc.rust-lang.org/nightly/std/option/enum.Option.html#method.is_none_or) - [
[T]::is_sorted] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted) - [
[T]::is_sorted_by] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by) - [
[T]::is_sorted_by_key] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by_key) - [
Iterator::is_sorted] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted) - [
Iterator::is_sorted_by] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by) - [
Iterator::is_sorted_by_key] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by_key) - [
std::future::Ready::into_inner] (https://doc.rust-lang.org/nightly/std/future/struct.Ready.html#method.into_inner) - [
std::iter::repeat_n] (https://doc.rust-lang.org/nightly/std/iter/fn.repeat_n.html) - [
impl<T: Clone> DoubleEndedIterator for Take<Repeat<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-DoubleEndedIterator-for-Take%3CRepeat%3CT%3E%3E) - [
impl<T: Clone> ExactSizeIterator for Take<Repeat<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeat%3CT%3E%3E) - [
impl<T: Clone> ExactSizeIterator for Take<RepeatWith<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeatWith%3CF%3E%3E) - [
impl Default for std::collections::binary_heap::Iter] (https://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.Iter.html#impl-Default-for-Iter%3C'_,+T%3E) - [
impl Default for std::collections::btree_map::RangeMut] (https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.RangeMut.html#impl-Default-for-RangeMut%3C'_,+K,+V%3E) - [
impl Default for std::collections::btree_map::ValuesMut] (https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.ValuesMut.html#impl-Default-for-ValuesMut%3C'_,+K,+V%3E) - [
impl Default for std::collections::vec_deque::Iter] (https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.Iter.html#impl-Default-for-Iter%3C'_,+T%3E) - [
impl Default for std::collections::vec_deque::IterMut] (https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.IterMut.html#impl-Default-for-IterMut%3C'_,+T%3E) - [
Rc<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit) - [
Rc<T>::assume_init] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init) - [
Rc<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit_slice) - [
Rc<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init-1) - [
Arc<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit) - [
Arc<T>::assume_init] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init) - [
Arc<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit_slice) - [
Arc<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init-1) - [
Box<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit) - [
Box<T>::assume_init] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init) - [
Box<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit_slice) - [
Box<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init-1) - [
core::arch::x86_64::_bextri_u64] (https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bextri_u64.html) - [
core::arch::x86_64::_bextri_u32] (https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bextri_u32.html) - [
core::arch::x86::_mm_broadcastsi128_si256] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_broadcastsi128_si256.html) - [
core::arch::x86::_mm256_stream_load_si256] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm256_stream_load_si256.html) - [
core::arch::x86::_tzcnt_u16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._tzcnt_u16.html) - [
core::arch::x86::_mm_extracti_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_extracti_si64.html) - [
core::arch::x86::_mm_inserti_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_inserti_si64.html) - [
core::arch::x86::_mm_storeu_si16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si16.html) - [
core::arch::x86::_mm_storeu_si32] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si32.html) - [
core::arch::x86::_mm_storeu_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si64.html) - [
core::arch::x86::_mm_loadu_si16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_loadu_si16.html) - [
core::arch::x86::_mm_loadu_si32] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_loadu_si32.html) - [
core::arch::wasm32::u8x16_relaxed_swizzle] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16_relaxed_swizzle.html) - [
core::arch::wasm32::i8x16_relaxed_swizzle] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16_relaxed_swizzle.html) - [
core::arch::wasm32::i32x4_relaxed_trunc_f32x4] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_trunc_f32x4.html) - [
core::arch::wasm32::u32x4_relaxed_trunc_f32x4] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_trunc_f32x4.html) - [
core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zero] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_trunc_f64x2_zero.html) - [
core::arch::wasm32::u32x4_relaxed_trunc_f64x2_zero] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_trunc_f64x2_zero.html) - [
core::arch::wasm32::f32x4_relaxed_madd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_madd.html) - [
core::arch::wasm32::f32x4_relaxed_nmadd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_nmadd.html) - [
core::arch::wasm32::f64x2_relaxed_madd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_madd.html) - [
core::arch::wasm32::f64x2_relaxed_nmadd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_nmadd.html) - [
core::arch::wasm32::i8x16_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16_relaxed_laneselect.html) - [
core::arch::wasm32::u8x16_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16_relaxed_laneselect.html) - [
core::arch::wasm32::i16x8_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_laneselect.html) - [
core::arch::wasm32::u16x8_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_laneselect.html) - [
core::arch::wasm32::i32x4_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_laneselect.html) - [
core::arch::wasm32::u32x4_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_laneselect.html) - [
core::arch::wasm32::i64x2_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i64x2_relaxed_laneselect.html) - [
core::arch::wasm32::u64x2_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u64x2_relaxed_laneselect.html) - [
core::arch::wasm32::f32x4_relaxed_min] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_min.html) - [
core::arch::wasm32::f32x4_relaxed_max] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_max.html) - [
core::arch::wasm32::f64x2_relaxed_min] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_min.html) - [
core::arch::wasm32::f64x2_relaxed_max] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_max.html) - [
core::arch::wasm32::i16x8_relaxed_q15mulr] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_q15mulr.html) - [
core::arch::wasm32::u16x8_relaxed_q15mulr] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_q15mulr.html) - [
core::arch::wasm32::i16x8_relaxed_dot_i8x16_i7x16] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_dot_i8x16_i7x16.html) - [
core::arch::wasm32::u16x8_relaxed_dot_i8x16_i7x16] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_dot_i8x16_i7x16.html) - [
core::arch::wasm32::i32x4_relaxed_dot_i8x16_i7x16_add] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_dot_i8x16_i7x16_add.html) - [
core::arch::wasm32::u32x4_relaxed_dot_i8x16_i7x16_add] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_dot_i8x16_i7x16_add.html)
These APIs are now stable in const contexts:
- [
std::task::Waker::from_raw] (https://doc.rust-lang.org/nightly/std/task/struct.Waker.html#method.from_raw) - [
std::task::Waker::waker] (https://doc.rust-lang.org/nightly/std/task/struct.Waker.html#method.from_raw) - [
std::task::Context::from_waker] (https://doc.rust-lang.org/nightly/std/task/struct.Context.html#method.from_waker) - [
std::task::Context::waker] (https://doc.rust-lang.org/nightly/std/task/struct.Context.html#method.waker) - [
$integer::from_str_radix] (https://doc.rust-lang.org/nightly/std/primitive.u32.html#method.from_str_radix) - [
std::num::ParseIntError::kind] (https://doc.rust-lang.org/nightly/std/num/struct.ParseIntError.html#method.kind)
Cargo
- [feat: Add
infocargo subcommand] (rust-lang/cargo#14141)
Compatibility Notes
We now disallow setting some built-in cfgs via the command-line with the newly added [
explicit_builtin_cfgs_in_flags] (https://doc.rust-lang.org/rustc/lints/listing/deny-by-default.html#explicit-builtin-cfgs-in-flags) lint in order to prevent incoherent state, eg.windowscfg active but target is Linux based. The appropriate [rustcflag] (https://doc.rust-lang.org/rustc/command-line-arguments.html) should be used instead.The standard library has a new implementation of
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.illumos/Solaris now sets
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.[Removes a problematic hack that always passed the --whole-archive linker flag for tests, which may cause linker errors for code accidentally relying on it.] (rust-lang/rust#128400)
The WebAssembly target features
multivalueandreference-typesare now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivaluefeature, WebAssembly target 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 18 and 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 thereference-typesfeature the encoding of immediates in thecall_indirect, a commonly used instruction by the WebAssembly backend, has changed. Validators and parsers which don't understand thereference-typesproposal will no longer accept modules produced by LLVM due to this change in encoding of immediates. Additionally these features being enabled are encoded in thetarget_featurescustom section and may affect downstream tooling such aswasm-optconsuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-stdsupport from Cargo and more information can be found at rust-lang/rust#128511.[Rust now raises unsafety errors for union patterns in parameter-position] (rust-lang/rust#130531)
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.
- [Update to LLVM 19] (rust-lang/rust#127513)
Something seems to be off, because this platform doens't seem to work, even though it's promoted to Tier 2 with Host Tools?
curl -sSf https://sh.rustup.rs | sh -s -- --profile minimal -y
curl: (22) The requested URL returned error: 404
rustup: installer for platform 'riscv64gc-unknown-linux-musl' not found, this may be unsupported
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request
Pkgsrc changes:
- Adapt patches, apply to new vendored crates where needed.
- Back-port rust pull request 130110, "make dist vendoring configurable"
- Disable "dist vendoring", otherwise cargo would try to access the network during the build phase.
- Dial down the verbosity of the build by dropping -v argument to x.py.
Upstream changes:
Version 1.82.0 (2024-10-17)
Language
- [Don't make statement nonterminals match pattern nonterminals] (rust-lang/rust#120221)
- [Patterns matching empty types can now be omitted in common cases] (rust-lang/rust#122792)
- [Enforce supertrait outlives obligations when using trait impls] (rust-lang/rust#124336)
- [
addr_of(_mut)!macros and the newly stabilized&raw (const|mut)are now safe to use with all static items] (rust-lang/rust#125834) - [size_of_val_raw: for length 0 this is safe to call] (rust-lang/rust#126152)
- [Reorder trait bound modifiers after
for<...>binder in trait bounds] (rust-lang/rust#127054) - [Stabilize opaque type precise capturing (RFC 3617)] (rust-lang/rust#127672)
- [Stabilize
&raw constand&raw mutoperators (RFC 2582)] (rust-lang/rust#127679) - [Stabilize unsafe extern blocks (RFC 3484)] (rust-lang/rust#127921)
- [Stabilize nested field access in
offset_of!] (rust-lang/rust#128284) - [Do not require
Tto be live when dropping[T; 0]] (rust-lang/rust#128438) - [Stabilize
constoperands in inline assembly] (rust-lang/rust#128570) - [Stabilize floating-point arithmetic in
const fn] (rust-lang/rust#128596) - [Stabilize explicit opt-in to unsafe attributes] (rust-lang/rust#128771)
- [Document NaN bit patterns guarantees] (rust-lang/rust#129559)
Compiler
- [Promote riscv64gc-unknown-linux-musl to tier 2] (rust-lang/rust#122049)
- [Promote Mac Catalyst targets
aarch64-apple-ios-macabiandx86_64-apple-ios-macabito Tier 2, and ship them with rustup] (rust-lang/rust#126450) - [Add tier 3 NuttX based targets for RISC-V and ARM] (rust-lang/rust#127755)
- [Add tier 3 powerpc-unknown-linux-muslspe target] (rust-lang/rust#127905)
- [Improved diagnostics to explain why a pattern is unreachable] (rust-lang/rust#128034)
- [The compiler now triggers the unreachable code warning properly
for async functions that don't return/are
-> !] (rust-lang/rust#128443) - [Promote
aarch64-apple-darwinto Tier 1] (rust-lang/rust#128592) - [Add Trusty OS target
aarch64-unknown-trustyandarmv7-unknown-trustyas tier 3 targets] (rust-lang/rust#129490) - [Promote
wasm32-wasip2to Tier 2.] (rust-lang/rust#126967)
Libraries
- [Generalize
{Rc,Arc}::make_mut()toPath,OsStr, andCStr.] (rust-lang/rust#126877)
Stabilized APIs
- [
std::thread::Builder::spawn_unchecked] (https://doc.rust-lang.org/stable/std/thread/struct.Builder.html#method.spawn_unchecked) - [
std::str::CharIndices::offset] (https://doc.rust-lang.org/nightly/std/str/struct.CharIndices.html#method.offset) - [
std::option::Option::is_none_or] (https://doc.rust-lang.org/nightly/std/option/enum.Option.html#method.is_none_or) - [
[T]::is_sorted] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted) - [
[T]::is_sorted_by] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by) - [
[T]::is_sorted_by_key] (https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by_key) - [
Iterator::is_sorted] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted) - [
Iterator::is_sorted_by] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by) - [
Iterator::is_sorted_by_key] (https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by_key) - [
std::future::Ready::into_inner] (https://doc.rust-lang.org/nightly/std/future/struct.Ready.html#method.into_inner) - [
std::iter::repeat_n] (https://doc.rust-lang.org/nightly/std/iter/fn.repeat_n.html) - [
impl<T: Clone> DoubleEndedIterator for Take<Repeat<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-DoubleEndedIterator-for-Take%3CRepeat%3CT%3E%3E) - [
impl<T: Clone> ExactSizeIterator for Take<Repeat<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeat%3CT%3E%3E) - [
impl<T: Clone> ExactSizeIterator for Take<RepeatWith<T>>] (https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeatWith%3CF%3E%3E) - [
impl Default for std::collections::binary_heap::Iter] (https://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.Iter.html#impl-Default-for-Iter%3C'_,+T%3E) - [
impl Default for std::collections::btree_map::RangeMut] (https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.RangeMut.html#impl-Default-for-RangeMut%3C'_,+K,+V%3E) - [
impl Default for std::collections::btree_map::ValuesMut] (https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.ValuesMut.html#impl-Default-for-ValuesMut%3C'_,+K,+V%3E) - [
impl Default for std::collections::vec_deque::Iter] (https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.Iter.html#impl-Default-for-Iter%3C'_,+T%3E) - [
impl Default for std::collections::vec_deque::IterMut] (https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.IterMut.html#impl-Default-for-IterMut%3C'_,+T%3E) - [
Rc<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit) - [
Rc<T>::assume_init] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init) - [
Rc<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit_slice) - [
Rc<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init-1) - [
Arc<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit) - [
Arc<T>::assume_init] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init) - [
Arc<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit_slice) - [
Arc<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init-1) - [
Box<T>::new_uninit] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit) - [
Box<T>::assume_init] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init) - [
Box<[T]>::new_uninit_slice] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit_slice) - [
Box<[MaybeUninit<T>]>::assume_init] (https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init-1) - [
core::arch::x86_64::_bextri_u64] (https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bextri_u64.html) - [
core::arch::x86_64::_bextri_u32] (https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bextri_u32.html) - [
core::arch::x86::_mm_broadcastsi128_si256] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_broadcastsi128_si256.html) - [
core::arch::x86::_mm256_stream_load_si256] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm256_stream_load_si256.html) - [
core::arch::x86::_tzcnt_u16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._tzcnt_u16.html) - [
core::arch::x86::_mm_extracti_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_extracti_si64.html) - [
core::arch::x86::_mm_inserti_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_inserti_si64.html) - [
core::arch::x86::_mm_storeu_si16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si16.html) - [
core::arch::x86::_mm_storeu_si32] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si32.html) - [
core::arch::x86::_mm_storeu_si64] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_storeu_si64.html) - [
core::arch::x86::_mm_loadu_si16] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_loadu_si16.html) - [
core::arch::x86::_mm_loadu_si32] (https://doc.rust-lang.org/stable/core/arch/x86/fn._mm_loadu_si32.html) - [
core::arch::wasm32::u8x16_relaxed_swizzle] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16_relaxed_swizzle.html) - [
core::arch::wasm32::i8x16_relaxed_swizzle] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16_relaxed_swizzle.html) - [
core::arch::wasm32::i32x4_relaxed_trunc_f32x4] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_trunc_f32x4.html) - [
core::arch::wasm32::u32x4_relaxed_trunc_f32x4] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_trunc_f32x4.html) - [
core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zero] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_trunc_f64x2_zero.html) - [
core::arch::wasm32::u32x4_relaxed_trunc_f64x2_zero] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_trunc_f64x2_zero.html) - [
core::arch::wasm32::f32x4_relaxed_madd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_madd.html) - [
core::arch::wasm32::f32x4_relaxed_nmadd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_nmadd.html) - [
core::arch::wasm32::f64x2_relaxed_madd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_madd.html) - [
core::arch::wasm32::f64x2_relaxed_nmadd] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_nmadd.html) - [
core::arch::wasm32::i8x16_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16_relaxed_laneselect.html) - [
core::arch::wasm32::u8x16_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16_relaxed_laneselect.html) - [
core::arch::wasm32::i16x8_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_laneselect.html) - [
core::arch::wasm32::u16x8_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_laneselect.html) - [
core::arch::wasm32::i32x4_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_laneselect.html) - [
core::arch::wasm32::u32x4_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_laneselect.html) - [
core::arch::wasm32::i64x2_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i64x2_relaxed_laneselect.html) - [
core::arch::wasm32::u64x2_relaxed_laneselect] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u64x2_relaxed_laneselect.html) - [
core::arch::wasm32::f32x4_relaxed_min] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_min.html) - [
core::arch::wasm32::f32x4_relaxed_max] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4_relaxed_max.html) - [
core::arch::wasm32::f64x2_relaxed_min] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_min.html) - [
core::arch::wasm32::f64x2_relaxed_max] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2_relaxed_max.html) - [
core::arch::wasm32::i16x8_relaxed_q15mulr] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_q15mulr.html) - [
core::arch::wasm32::u16x8_relaxed_q15mulr] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_q15mulr.html) - [
core::arch::wasm32::i16x8_relaxed_dot_i8x16_i7x16] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8_relaxed_dot_i8x16_i7x16.html) - [
core::arch::wasm32::u16x8_relaxed_dot_i8x16_i7x16] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8_relaxed_dot_i8x16_i7x16.html) - [
core::arch::wasm32::i32x4_relaxed_dot_i8x16_i7x16_add] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4_relaxed_dot_i8x16_i7x16_add.html) - [
core::arch::wasm32::u32x4_relaxed_dot_i8x16_i7x16_add] (https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4_relaxed_dot_i8x16_i7x16_add.html)
These APIs are now stable in const contexts:
- [
std::task::Waker::from_raw] (https://doc.rust-lang.org/nightly/std/task/struct.Waker.html#method.from_raw) - [
std::task::Waker::waker] (https://doc.rust-lang.org/nightly/std/task/struct.Waker.html#method.from_raw) - [
std::task::Context::from_waker] (https://doc.rust-lang.org/nightly/std/task/struct.Context.html#method.from_waker) - [
std::task::Context::waker] (https://doc.rust-lang.org/nightly/std/task/struct.Context.html#method.waker) - [
$integer::from_str_radix] (https://doc.rust-lang.org/nightly/std/primitive.u32.html#method.from_str_radix) - [
std::num::ParseIntError::kind] (https://doc.rust-lang.org/nightly/std/num/struct.ParseIntError.html#method.kind)
Cargo
- [feat: Add
infocargo subcommand] (rust-lang/cargo#14141)
Compatibility Notes
We now disallow setting some built-in cfgs via the command-line with the newly added [
explicit_builtin_cfgs_in_flags] (https://doc.rust-lang.org/rustc/lints/listing/deny-by-default.html#explicit-builtin-cfgs-in-flags) lint in order to prevent incoherent state, eg.windowscfg active but target is Linux based. The appropriate [rustcflag] (https://doc.rust-lang.org/rustc/command-line-arguments.html) should be used instead.The standard library has a new implementation of
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.illumos/Solaris now sets
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.[Removes a problematic hack that always passed the --whole-archive linker flag for tests, which may cause linker errors for code accidentally relying on it.] (rust-lang/rust#128400)
The WebAssembly target features
multivalueandreference-typesare now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivaluefeature, WebAssembly target 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 18 and 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 thereference-typesfeature the encoding of immediates in thecall_indirect, a commonly used instruction by the WebAssembly backend, has changed. Validators and parsers which don't understand thereference-typesproposal will no longer accept modules produced by LLVM due to this change in encoding of immediates. Additionally these features being enabled are encoded in thetarget_featurescustom section and may affect downstream tooling such aswasm-optconsuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-stdsupport from Cargo and more information can be found at rust-lang/rust#128511.[Rust now raises unsafety errors for union patterns in parameter-position] (rust-lang/rust#130531)
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.
- [Update to LLVM 19] (rust-lang/rust#127513)