SUSE-RU-2024:3903-1: moderate: Recommended update for rust
SLE-UPDATES
null at suse.de
Mon Nov 4 16:30:33 UTC 2024
# Recommended update for rust
Announcement ID: SUSE-RU-2024:3903-1
Release Date: 2024-11-04T12:37:50Z
Rating: moderate
References:
* jsc#SLE-18626
Affected Products:
* Development Tools Module 15-SP5
* Development Tools Module 15-SP6
* openSUSE Leap 15.5
* openSUSE Leap 15.6
* SUSE Linux Enterprise Desktop 15 SP5
* SUSE Linux Enterprise Desktop 15 SP6
* SUSE Linux Enterprise High Performance Computing 15 SP5
* SUSE Linux Enterprise Real Time 15 SP5
* SUSE Linux Enterprise Real Time 15 SP6
* SUSE Linux Enterprise Server 15 SP5
* SUSE Linux Enterprise Server 15 SP6
* SUSE Linux Enterprise Server for SAP Applications 15 SP5
* SUSE Linux Enterprise Server for SAP Applications 15 SP6
An update that contains one feature can now be installed.
## Description:
This update for rust fixes the following issues:
# Version 1.82.0 (2024-10-17)
## 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` and `x86_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` and `armv7-unknown-trusty` as
tier 3 targets
* Promote `wasm32-wasip2` to Tier 2.
## Libraries
* Generalize `{Rc,Arc}::make_mut()` to `Path`, `OsStr`, and `CStr`.
## 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::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
## 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. 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.
* 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` and `reference-types` are now
both enabled by default. These two features both have subtle changes implied
for generated WebAssembly binaries. For the `multivalue` 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 the `reference-types` feature the encoding of immediates in the
`call_indirect`, a commonly used instruction by the WebAssembly backend, has
changed. Validators and parsers which don't understand the `reference-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 the `target_features` custom section and may affect downstream
tooling such as `wasm-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
## Patch Instructions:
To install this SUSE update use the SUSE recommended installation methods like
YaST online_update or "zypper patch".
Alternatively you can run the command listed for your product:
* openSUSE Leap 15.5
zypper in -t patch SUSE-2024-3903=1 openSUSE-SLE-15.5-2024-3903=1
* openSUSE Leap 15.6
zypper in -t patch openSUSE-SLE-15.6-2024-3903=1
* Development Tools Module 15-SP5
zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP5-2024-3903=1
* Development Tools Module 15-SP6
zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2024-3903=1
## Package List:
* openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
* rust1.82-debuginfo-1.82.0-150500.11.3.1
* rust-1.82.0-150500.27.24.1
* cargo1.82-debuginfo-1.82.0-150500.11.3.1
* cargo-1.82.0-150500.27.24.1
* cargo1.82-1.82.0-150500.11.3.1
* openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586 nosrc)
* rust1.82-1.82.0-150500.11.3.1
* openSUSE Leap 15.5 (noarch)
* rust1.82-src-1.82.0-150500.11.3.1
* openSUSE Leap 15.5 (nosrc)
* rust1.82-test-1.82.0-150500.11.3.1
* openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
* rust1.82-debuginfo-1.82.0-150500.11.3.1
* rust-1.82.0-150500.27.24.1
* cargo1.82-1.82.0-150500.11.3.1
* cargo-1.82.0-150500.27.24.1
* cargo1.82-debuginfo-1.82.0-150500.11.3.1
* openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
* rust1.82-1.82.0-150500.11.3.1
* openSUSE Leap 15.6 (noarch)
* rust1.82-src-1.82.0-150500.11.3.1
* Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
* rust1.82-debuginfo-1.82.0-150500.11.3.1
* rust-1.82.0-150500.27.24.1
* cargo1.82-1.82.0-150500.11.3.1
* cargo-1.82.0-150500.27.24.1
* cargo1.82-debuginfo-1.82.0-150500.11.3.1
* Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
* rust1.82-1.82.0-150500.11.3.1
* Development Tools Module 15-SP5 (noarch)
* rust1.82-src-1.82.0-150500.11.3.1
* Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
* rust1.82-debuginfo-1.82.0-150500.11.3.1
* rust-1.82.0-150500.27.24.1
* cargo1.82-1.82.0-150500.11.3.1
* cargo-1.82.0-150500.27.24.1
* cargo1.82-debuginfo-1.82.0-150500.11.3.1
* Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
* rust1.82-1.82.0-150500.11.3.1
* Development Tools Module 15-SP6 (noarch)
* rust1.82-src-1.82.0-150500.11.3.1
## References:
* https://jira.suse.com/browse/SLE-18626
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.suse.com/pipermail/sle-updates/attachments/20241104/c46dbe83/attachment.htm>
More information about the sle-updates
mailing list