Recommended update for rust, rust1.86

Announcement ID: SUSE-RU-2025:1350-1
Release Date: 2025-04-20T17:59:05Z
Rating: moderate
References:
Affected Products:
  • Development Tools Module 15-SP6
  • openSUSE Leap 15.3
  • openSUSE Leap 15.4
  • openSUSE Leap 15.5
  • openSUSE Leap 15.6
  • SUSE Enterprise Storage 7.1
  • SUSE Linux Enterprise Desktop 15 SP6
  • SUSE Linux Enterprise High Performance Computing 15 SP3
  • SUSE Linux Enterprise High Performance Computing 15 SP4
  • SUSE Linux Enterprise High Performance Computing 15 SP5
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP3
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP4
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP5
  • SUSE Linux Enterprise Real Time 15 SP6
  • SUSE Linux Enterprise Server 15 SP3
  • SUSE Linux Enterprise Server 15 SP3 LTSS
  • SUSE Linux Enterprise Server 15 SP4
  • SUSE Linux Enterprise Server 15 SP4 LTSS
  • SUSE Linux Enterprise Server 15 SP5
  • SUSE Linux Enterprise Server 15 SP5 LTSS
  • SUSE Linux Enterprise Server 15 SP6
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4
  • SUSE Linux Enterprise Server for SAP Applications 15 SP5
  • SUSE Linux Enterprise Server for SAP Applications 15 SP6

An update that contains two features can now be installed.

Description:

This update for rust, rust1.86 fixes the following issues:

Changes in rust1.86:

Version 1.86.0 (2025-04-03)

Language

  • Stabilize upcasting trait objects to supertraits.
  • Allow safe functions to be marked with the #[target_feature] attribute.
  • The missing_abi lint now warns-by-default.
  • Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (--x) as written in other languages. This was previously a clippy lint, clippy::double_neg, and is [now available directly in Rust as double_negations.
  • More pointers are now detected as definitely not-null based on their alignment in const eval.
  • Empty repr() attribute applied to invalid items are now correctly rejected.
  • Inner attributes #![test] and #![rustfmt::skip] are no longer accepted in more places than intended.

Compiler

  • Debug-assert that raw pointers are non-null on access.
  • Change -O to mean -C opt-level=3 instead of -C opt-level=2 to match Cargo's defaults.
  • Fix emission of overflowing_literals under certain macro environments.

Platform Support

  • Replace i686-unknown-redox target with i586-unknown-redox.
  • Increase baseline CPU of i686-unknown-hurd-gnu to Pentium 4.
  • New tier 3 targets:

  • {aarch64-unknown,x86_64-pc}-nto-qnx710_iosock For supporting Neutrino QNX 7.1 with io-socket network stack.

  • {aarch64-unknown,x86_64-pc}-nto-qnx800 For supporting Neutrino QNX 8.0 (no_std-only).
  • {x86_64,i686}-win7-windows-gnu Intended for backwards compatibility with Windows 7. {x86_64,i686}-win7-windows-msvc are the Windows MSVC counterparts that already exist as Tier 3 targets.
  • amdgcn-amd-amdhsa
  • x86_64-pc-cygwin
  • {mips,mipsel}-mti-none-elf Initial bare-metal support.
  • m68k-unknown-none-elf
  • armv7a-nuttx-{eabi,eabihf}, aarch64-unknown-nuttx, and thumbv7a-nuttx-{eabi,eabihf}

Refer to Rust's platform support page for more information on Rust's tiered platform support.

Libraries

  • The type of FromBytesWithNulError in CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError> was changed from an opaque struct to an enum, allowing users to examine why the conversion failed.
  • Remove RustcDecodable and RustcEncodable.
  • Deprecate libtest's --logfile option.
  • On recent versions of Windows, std::fs::remove_file will now remove read-only files.

Stabilized APIs

  • {float}::next_down https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down
  • {float}::next_up https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up
  • <[_]>::get_disjoint_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut
  • <[_]>::get_disjoint_unchecked_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut
  • slice::GetDisjointMutError https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html
  • HashMap::get_disjoint_mut https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut
  • HashMap::get_disjoint_unchecked_mut https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut
  • NonZero::count_ones https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones
  • Vec::pop_if https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if
  • sync::Once::wait https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait
  • sync::Once::wait_force https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force
  • sync::OnceLock::wait https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait

These APIs are now stable in const contexts:

  • hint::black_box https://doc.rust-lang.org/stable/std/hint/fn.black_box.html
  • io::Cursor::get_mut https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut
  • io::Cursor::set_position https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position
  • str::is_char_boundary https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary
  • str::split_at https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at
  • str::split_at_checked https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked
  • str::split_at_mut https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut
  • str::split_at_mut_checked https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked

Cargo

  • When merging, replace rather than combine configuration keys that refer to a program path and its arguments.
  • Error if both --package and --workspace are passed but the requested package is missing. This was previously silently ignored, which was considered a bug since missing packages should be reported.
  • Deprecate the token argument in cargo login to avoid shell history leaks.
  • Simplify the implementation of SourceID comparisons. This may potentially change behavior if the canonicalized URL compares differently in alternative registries.

Rustdoc

  • Add a sans-serif font setting.

Compatibility Notes

  • The wasm_c_abi future compatibility warning is now a hard error. Users of wasm-bindgen should upgrade to at least version 0.2.89, otherwise compilation will fail.
  • Remove long-deprecated no-op attributes #![no_start] and #![crate_id].
  • The future incompatibility lint cenum_impl_drop_cast has been made into a hard error. This means it is now an error to cast a field-less enum to an integer if the enum implements Drop.
  • SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually. To compile for pre-SSE2 32-bit x86, use a "i586" target instead.

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.

  • Build the rustc on AArch64 Linux with ThinLTO + PGO. The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster.

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.6
    zypper in -t patch openSUSE-SLE-15.6-2025-1350=1
  • Development Tools Module 15-SP6
    zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2025-1350=1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP3
    zypper in -t patch SUSE-SLE-Product-HPC-15-SP3-LTSS-2025-1350=1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4
    zypper in -t patch SUSE-SLE-Product-HPC-15-SP4-ESPOS-2025-1350=1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP4
    zypper in -t patch SUSE-SLE-Product-HPC-15-SP4-LTSS-2025-1350=1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5
    zypper in -t patch SUSE-SLE-Product-HPC-15-SP5-ESPOS-2025-1350=1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP5
    zypper in -t patch SUSE-SLE-Product-HPC-15-SP5-LTSS-2025-1350=1
  • SUSE Linux Enterprise Server 15 SP3 LTSS
    zypper in -t patch SUSE-SLE-Product-SLES-15-SP3-LTSS-2025-1350=1
  • SUSE Linux Enterprise Server 15 SP4 LTSS
    zypper in -t patch SUSE-SLE-Product-SLES-15-SP4-LTSS-2025-1350=1
  • SUSE Linux Enterprise Server 15 SP5 LTSS
    zypper in -t patch SUSE-SLE-Product-SLES-15-SP5-LTSS-2025-1350=1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3
    zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP3-2025-1350=1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4
    zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP4-2025-1350=1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP5
    zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP5-2025-1350=1
  • SUSE Enterprise Storage 7.1
    zypper in -t patch SUSE-Storage-7.1-2025-1350=1
  • openSUSE Leap 15.3
    zypper in -t patch SUSE-2025-1350=1
  • openSUSE Leap 15.4
    zypper in -t patch SUSE-2025-1350=1
  • openSUSE Leap 15.5
    zypper in -t patch SUSE-2025-1350=1

Package List:

  • openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • openSUSE Leap 15.6 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • Development Tools Module 15-SP6 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP3 (aarch64 x86_64)
    • cargo-1.86.0-150300.21.52.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150300.21.52.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP3 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP3 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4 (aarch64 x86_64)
    • rust-1.86.0-150400.24.42.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150400.24.42.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP4 (aarch64 x86_64)
    • rust-1.86.0-150400.24.42.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150400.24.42.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP4 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP4 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5 (aarch64 x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP5 (aarch64 x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP5 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise High Performance Computing LTSS 15 SP5 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP3 LTSS (aarch64 ppc64le s390x x86_64)
    • cargo-1.86.0-150300.21.52.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150300.21.52.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP3 LTSS (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP3 LTSS (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP4 LTSS (aarch64 ppc64le s390x x86_64)
    • rust-1.86.0-150400.24.42.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150400.24.42.1
  • SUSE Linux Enterprise Server 15 SP4 LTSS (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP4 LTSS (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP5 LTSS (aarch64 ppc64le s390x x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • SUSE Linux Enterprise Server 15 SP5 LTSS (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server 15 SP5 LTSS (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3 (ppc64le x86_64)
    • cargo-1.86.0-150300.21.52.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150300.21.52.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3 (nosrc ppc64le x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4 (ppc64le x86_64)
    • rust-1.86.0-150400.24.42.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150400.24.42.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4 (nosrc ppc64le x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP5 (ppc64le x86_64)
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150500.27.36.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
    • cargo-1.86.0-150500.27.36.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP5 (nosrc ppc64le x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Linux Enterprise Server for SAP Applications 15 SP5 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • SUSE Enterprise Storage 7.1 (aarch64 x86_64)
    • cargo-1.86.0-150300.21.52.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150300.21.52.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
  • SUSE Enterprise Storage 7.1 (aarch64 nosrc x86_64)
    • rust1.86-1.86.0-150300.7.5.1
  • SUSE Enterprise Storage 7.1 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64 i586)
    • cargo-1.86.0-150300.21.52.1
    • cargo1.86-debuginfo-1.86.0-150300.7.5.1
    • rust-1.86.0-150300.21.52.1
    • rust1.86-debuginfo-1.86.0-150300.7.5.1
    • cargo1.86-1.86.0-150300.7.5.1
  • openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64 i586 nosrc)
    • rust1.86-1.86.0-150300.7.5.1
  • openSUSE Leap 15.3 (noarch)
    • rust1.86-src-1.86.0-150300.7.5.1
  • openSUSE Leap 15.3 (nosrc)
    • rust1.86-test-1.86.0-150300.7.5.1
  • openSUSE Leap 15.4 (aarch64 ppc64le s390x x86_64 i586)
    • cargo-1.86.0-150400.24.42.1
    • rust-1.86.0-150400.24.42.1
  • openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
    • cargo-1.86.0-150500.27.36.1
    • rust-1.86.0-150500.27.36.1

References: