Recommended update for rust, rust1.79

Announcement ID: SUSE-RU-2024:2188-1
Rating: moderate
References:
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, rust1.79 fixes the following issues:

Changes in rust1.79:

Version 1.79.0 (2024-06-13)

Language

  • Stabilize inline const {} expressions.
  • Prevent opaque types being instantiated twice with different regions within the same function.
  • Stabilize WebAssembly target features that are in phase 4 and 5.
  • Add the redundant_lifetimes lint to detect lifetimes which are semantically redundant.
  • Stabilize the unnameable_types lint for public types that can't be named.
  • Enable debuginfo in macros, and stabilize -C collapse-macro-debuginfo and #[collapse_debuginfo].
  • Propagate temporary lifetime extension into if and match expressions.
  • Restrict promotion of const fn calls.
  • Warn against refining impls of crate-private traits with refining_impl_trait lint.
  • Stabilize associated type bounds (RFC 2289).
  • Stabilize importing main from other modules or crates.
  • Check return types of function types for well-formedness
  • Rework impl Trait lifetime inference
  • Change inductive trait solver cycles to be ambiguous

Compiler

  • Define -C strip to only affect binaries, not artifacts like .pdb.
  • Stabilize -Crelro-level for controlling runtime link hardening.
  • Stabilize checking of cfg names and values at compile-time with --check-cfg. Note that this only stabilizes the compiler part, the Cargo part is still unstable in this release.
  • Add aarch64-apple-visionos and aarch64-apple-visionos-sim tier 3 targets.
  • Add riscv32ima-unknown-none-elf tier 3 target.
  • Promote several Windows targets to tier 2: aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm, and x86_64-pc-windows-gnullvm.

Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support.

Libraries

  • Implement FromIterator for (impl Default + Extend, impl Default + Extend).
  • Implement {Div,Rem}Assign<NonZero<X>> on X.
  • Document overrides of clone_from() in core/std.
  • Link MSVC default lib in core.
  • Caution against using transmute between pointers and integers.
  • Enable frame pointers for the standard library.

Stabilized APIs

  • {integer}::unchecked_add https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_add)
  • {integer}::unchecked_mul https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_mul)
  • {integer}::unchecked_sub https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_sub)
  • <[T]>::split_at_unchecked https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_unchecked)
  • <[T]>::split_at_mut_unchecked https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)
  • <[u8]>::utf8_chunks https://doc.rust-lang.org/stable/core/primitive.slice.html#method.utf8_chunks)
  • str::Utf8Chunks https://doc.rust-lang.org/stable/core/str/struct.Utf8Chunks.html)
  • str::Utf8Chunk https://doc.rust-lang.org/stable/core/str/struct.Utf8Chunk.html)
  • <*const T>::is_aligned https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_aligned)
  • <*mut T>::is_aligned https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_aligned-1)
  • NonNull::is_aligned https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.is_aligned)
  • <*const [T]>::len https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.len)
  • <*mut [T]>::len https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.len-1)
  • <*const [T]>::is_empty https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_empty)
  • <*mut [T]>::is_empty https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_empty-1)
  • NonNull::<[T]>::is_empty https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.is_empty)
  • CStr::count_bytes https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)
  • io::Error::downcast https://doc.rust-lang.org/stable/std/io/struct.Error.html#method.downcast)
  • num::NonZero<T> https://doc.rust-lang.org/stable/core/num/struct.NonZero.html)
  • path::absolute https://doc.rust-lang.org/stable/std/path/fn.absolute.html)
  • proc_macro::Literal::byte_character https://doc.rust-lang.org/stable/proc_macro/struct.Literal.html#method.byte_character)
  • proc_macro::Literal::c_string https://doc.rust-lang.org/stable/proc_macro/struct.Literal.html#method.c_string)

These APIs are now stable in const contexts:

  • Atomic*::into_inner https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.into_inner)
  • io::Cursor::new https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.new)
  • io::Cursor::get_ref https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_ref)
  • io::Cursor::position https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.position)
  • io::empty https://doc.rust-lang.org/stable/std/io/fn.empty.html)
  • io::repeat https://doc.rust-lang.org/stable/std/io/fn.repeat.html)
  • io::sink https://doc.rust-lang.org/stable/std/io/fn.sink.html)
  • panic::Location::caller https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.caller)
  • panic::Location::file https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.file)
  • panic::Location::line https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.line)
  • panic::Location::column https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.column)

Cargo

  • Prevent dashes in lib.name, always normalizing to _.
  • Stabilize MSRV-aware version requirement selection in cargo add.
  • Switch to using gitoxide by default for listing files.
  • Error on [project] in Edition 2024; cargo fix --edition will change it to [package].

Rustdoc

  • Always display stability version even if it's the same as the containing item.
  • Show a single search result for items with multiple paths.
  • Support typing / in docs to begin a search.

Compatibility Notes

  • Update the minimum external LLVM to 17.
  • RustcEncodable and RustcDecodable are soft-destabilized, to be removed from the prelude in next edition.
  • The wasm_c_abi future-incompatibility lint will warn about use of the non-spec-compliant C ABI. Use wasm-bindgen v0.2.88 to generate forward-compatible bindings.
  • Check return types of function types for well-formedness

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-2188=1 openSUSE-SLE-15.5-2024-2188=1
  • openSUSE Leap 15.6
    zypper in -t patch openSUSE-SLE-15.6-2024-2188=1
  • Development Tools Module 15-SP5
    zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP5-2024-2188=1
  • Development Tools Module 15-SP6
    zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2024-2188=1

Package List:

  • openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
    • rust1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo-1.79.0-150500.27.15.1
    • cargo1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo1.79-1.79.0-150500.11.3.1
    • rust-1.79.0-150500.27.15.1
  • openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586 nosrc)
    • rust1.79-1.79.0-150500.11.3.1
  • openSUSE Leap 15.5 (nosrc)
    • rust1.79-test-1.79.0-150500.11.3.1
  • openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
    • rust1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo-1.79.0-150500.27.15.1
    • cargo1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo1.79-1.79.0-150500.11.3.1
    • rust-1.79.0-150500.27.15.1
  • openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.79-1.79.0-150500.11.3.1
  • Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
    • rust1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo-1.79.0-150500.27.15.1
    • cargo1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo1.79-1.79.0-150500.11.3.1
    • rust-1.79.0-150500.27.15.1
  • Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.79-1.79.0-150500.11.3.1
  • Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
    • rust1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo-1.79.0-150500.27.15.1
    • cargo1.79-debuginfo-1.79.0-150500.11.3.1
    • cargo1.79-1.79.0-150500.11.3.1
    • rust-1.79.0-150500.27.15.1
  • Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
    • rust1.79-1.79.0-150500.11.3.1

References: