linker: Remove the "--whole-archive
in test mode" backcompat hack by petrochenkov · Pull Request #128400 · rust-lang/rust (original) (raw)
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation27 Commits1 Checks6 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
r? @Nadrieril
rustbot has assigned @Nadrieril.
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 S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
bors added a commit to rust-lang-ci/rust that referenced this pull request
linker: Remove the "--whole-archive
in test mode" backcompat hack
Fixes rust-lang#116910.
☀️ Try build successful - checks-actions
Build commit: 33f1d8b (33f1d8bb92813a1bfc23c093c9f443ab09290307
)
@craterbot run mode=build-and-test +cargoflags=--no-run
🚨 Error: failed to parse the command
🆘 If you have any trouble with Crater please ping @rust-lang/infra
!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
🚧 Experiment pr-128400
is now running
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
🚧 Experiment pr-128400-1
is now running
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
📌 Commit 3d2d7cf has been approved by bjorn3
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
linker: Remove the "--whole-archive
in test mode" backcompat hack
Fixes rust-lang#116910.
The job x86_64-msvc-ext
failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
@bors retry failed to remove executable with "Access is denied"
Finished benchmarking commit (04dff01): comparison URL.
Overall result: no relevant changes - no action needed
@rustbot label: -perf-regression
Instruction count
This benchmark run did not return any relevant results for this metric.
Max RSS (memory usage)
Results (primary 3.2%, secondary 2.5%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
mean | range | count | |
---|---|---|---|
Regressions ❌ (primary) | 3.2% | [3.2%, 3.2%] | 1 |
Regressions ❌ (secondary) | 2.5% | [2.5%, 2.5%] | 1 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 3.2% | [3.2%, 3.2%] | 1 |
Cycles
Results (secondary -4.4%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
mean | range | count | |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | -4.4% | [-4.4%, -4.3%] | 2 |
All ❌✅ (primary) | - | - | 0 |
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: 758.54s -> 756.781s (-0.23%)
Artifact size: 339.24 MiB -> 339.30 MiB (0.02%)
Marks issues that should be documented in the release notes of the next release.
label
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 const
and&raw mut
operators (RFC 2582) - Stabilize unsafe extern blocks (RFC 3484)
- Stabilize nested field access in
offset_of!
- Do not require
T
to be live when dropping[T; 0]
- Stabilize
const
operands 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-macabi
andx86_64-apple-ios-macabi
to 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-darwin
to Tier 1 - Add Trusty OS target
aarch64-unknown-trusty
andarmv7-unknown-trusty
as tier 3 targets - Promote
wasm32-wasip2
to Tier 2.
Libraries
Stabilized APIs
std::thread::Builder::spawn_unchecked
std::str::CharIndices::offset
std::option::Option::is_none_or
[T]::is_sorted
[T]::is_sorted_by
[T]::is_sorted_by_key
Iterator::is_sorted
Iterator::is_sorted_by
Iterator::is_sorted_by_key
std::future::Ready::into_inner
std::iter::repeat_n
impl<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::Iter
impl Default for std::collections::btree_map::RangeMut
impl Default for std::collections::btree_map::ValuesMut
impl Default for std::collections::vec_deque::Iter
impl Default for std::collections::vec_deque::IterMut
Rc<T>::new_uninit
Rc<T>::assume_init
Rc<[T]>::new_uninit_slice
Rc<[MaybeUninit<T>]>::assume_init
Arc<T>::new_uninit
Arc<T>::assume_init
Arc<[T]>::new_uninit_slice
Arc<[MaybeUninit<T>]>::assume_init
Box<T>::new_uninit
Box<T>::assume_init
Box<[T]>::new_uninit_slice
Box<[MaybeUninit<T>]>::assume_init
core::arch::x86_64::_bextri_u64
core::arch::x86_64::_bextri_u32
core::arch::x86::_mm_broadcastsi128_si256
core::arch::x86::_mm256_stream_load_si256
core::arch::x86::_tzcnt_u16
core::arch::x86::_mm_extracti_si64
core::arch::x86::_mm_inserti_si64
core::arch::x86::_mm_storeu_si16
core::arch::x86::_mm_storeu_si32
core::arch::x86::_mm_storeu_si64
core::arch::x86::_mm_loadu_si16
core::arch::x86::_mm_loadu_si32
core::arch::wasm32::u8x16_relaxed_swizzle
core::arch::wasm32::i8x16_relaxed_swizzle
core::arch::wasm32::i32x4_relaxed_trunc_f32x4
core::arch::wasm32::u32x4_relaxed_trunc_f32x4
core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zero
core::arch::wasm32::u32x4_relaxed_trunc_f64x2_zero
core::arch::wasm32::f32x4_relaxed_madd
core::arch::wasm32::f32x4_relaxed_nmadd
core::arch::wasm32::f64x2_relaxed_madd
core::arch::wasm32::f64x2_relaxed_nmadd
core::arch::wasm32::i8x16_relaxed_laneselect
core::arch::wasm32::u8x16_relaxed_laneselect
core::arch::wasm32::i16x8_relaxed_laneselect
core::arch::wasm32::u16x8_relaxed_laneselect
core::arch::wasm32::i32x4_relaxed_laneselect
core::arch::wasm32::u32x4_relaxed_laneselect
core::arch::wasm32::i64x2_relaxed_laneselect
core::arch::wasm32::u64x2_relaxed_laneselect
core::arch::wasm32::f32x4_relaxed_min
core::arch::wasm32::f32x4_relaxed_max
core::arch::wasm32::f64x2_relaxed_min
core::arch::wasm32::f64x2_relaxed_max
core::arch::wasm32::i16x8_relaxed_q15mulr
core::arch::wasm32::u16x8_relaxed_q15mulr
core::arch::wasm32::i16x8_relaxed_dot_i8x16_i7x16
core::arch::wasm32::u16x8_relaxed_dot_i8x16_i7x16
core::arch::wasm32::i32x4_relaxed_dot_i8x16_i7x16_add
core::arch::wasm32::u32x4_relaxed_dot_i8x16_i7x16_add
These APIs are now stable in const contexts:
std::task::Waker::from_raw
std::task::Context::from_waker
std::task::Context::waker
$integer::from_str_radix
std::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_flags
lint in order to prevent incoherent state, eg.windows
cfg active but target is Linux based. The appropriaterustc
flag should be used instead. - The standard library has a new implementation of
binary_search
which 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_NOSIGNAL
when 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
multivalue
andreference-types
are now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivalue
feature, WebAssembly target support has changed when upgrading to LLVM 19. Support for generating functions with multiple returns no longer works and-Ctarget-feature=+multivalue
has 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-types
feature 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-types
proposal 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_features
custom section and may affect downstream tooling such aswasm-opt
consuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-std
support 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.
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 const
and&raw mut
operators (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
T
to be live when dropping[T; 0]
] (rust-lang/rust#128438) - [Stabilize
const
operands 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-macabi
andx86_64-apple-ios-macabi
to 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-darwin
to Tier 1] (rust-lang/rust#128592) - [Add Trusty OS target
aarch64-unknown-trusty
andarmv7-unknown-trusty
as tier 3 targets] (rust-lang/rust#129490) - [Promote
wasm32-wasip2
to 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
info
cargo 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.windows
cfg active but target is Linux based. The appropriate [rustc
flag] (https://doc.rust-lang.org/rustc/command-line-arguments.html) should be used instead.The standard library has a new implementation of
binary_search
which 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_NOSIGNAL
when 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
multivalue
andreference-types
are now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivalue
feature, WebAssembly target support has changed when upgrading to LLVM 19. Support for generating functions with multiple returns no longer works and-Ctarget-feature=+multivalue
has 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-types
feature 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-types
proposal 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_features
custom section and may affect downstream tooling such aswasm-opt
consuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-std
support 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)
ehuss mentioned this pull request
jetuk added a commit to pywr/pywr-next that referenced this pull request
Rust 1.82 removed a linker option (--whole-archive
) which has
broken linking on Linux. This reorders the building / linking
so that the linker finds the correct libraries.
jetuk mentioned this pull request
jetuk added a commit to pywr/pywr-next that referenced this pull request
Rust 1.82 removed a linker option (--whole-archive
) which has
broken linking on Linux. This reorders the building / linking
so that the linker finds the correct libraries.
@petrochenkov I hit an issue with this - my project has a large cmake-based C++ code, and I'm trying to write a Rust wrapper using cxx bridge. cargo test
was passing on older Rust, but unexpectedly failed with 1.82+ until I saw that kuzu project also did a hack here, which did work. This seems like a major hack - is this the expected usage of this feature?
if rustversion::cfg!(since(1.82)) { println!("cargo:rustc-link-lib=static:+whole-archive=kuzu"); } else { println!("cargo:rustc-link-lib=static=kuzu"); }
The recommended fixes are the same as in https://doc.rust-lang.org/beta/releases.html#compatibility-notes-21.
It's more likely that some native dependencies should be reordered, and less likely that +whole-archive
needs to be added (which can be done unconditionally, without a version check). I cannot say which alternative is appropriate without looking at the specific libraries in more detail.
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 const
and&raw mut
operators (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
T
to be live when dropping[T; 0]
] (rust-lang/rust#128438) - [Stabilize
const
operands 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-macabi
andx86_64-apple-ios-macabi
to 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-darwin
to Tier 1] (rust-lang/rust#128592) - [Add Trusty OS target
aarch64-unknown-trusty
andarmv7-unknown-trusty
as tier 3 targets] (rust-lang/rust#129490) - [Promote
wasm32-wasip2
to 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
info
cargo 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.windows
cfg active but target is Linux based. The appropriate [rustc
flag] (https://doc.rust-lang.org/rustc/command-line-arguments.html) should be used instead.The standard library has a new implementation of
binary_search
which 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_NOSIGNAL
when 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
multivalue
andreference-types
are now both enabled by default. These two features both have subtle changes implied for generated WebAssembly binaries. For themultivalue
feature, WebAssembly target support has changed when upgrading to LLVM 19. Support for generating functions with multiple returns no longer works and-Ctarget-feature=+multivalue
has 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-types
feature 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-types
proposal 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_features
custom section and may affect downstream tooling such aswasm-opt
consuming the module. Generating a WebAssembly module that disables default features requires-Zbuild-std
support 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)
Labels
This PR was explicitly merged by bors.
Marks issues that should be documented in the release notes of the next release.
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the compiler team, which will review and decide on the PR/issue.