Recommended update for rust

Announcement ID: SUSE-RU-2022:3633-1
Rating: moderate
References:
Affected Products:
  • Development Tools Module 15-SP3
  • Development Tools Module 15-SP4
  • openSUSE Leap 15.3
  • openSUSE Leap 15.4
  • SUSE Linux Enterprise Desktop 15 SP3
  • SUSE Linux Enterprise Desktop 15 SP4
  • SUSE Linux Enterprise High Performance Computing 15 SP3
  • SUSE Linux Enterprise High Performance Computing 15 SP4
  • SUSE Linux Enterprise Real Time 15 SP3
  • SUSE Linux Enterprise Real Time 15 SP4
  • SUSE Linux Enterprise Server 15 SP3
  • SUSE Linux Enterprise Server 15 SP3 Business Critical Linux 15-SP3
  • SUSE Linux Enterprise Server 15 SP4
  • SUSE Linux Enterprise Server for SAP Applications 15 SP3
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4
  • SUSE Manager Proxy 4.2
  • SUSE Manager Proxy 4.3
  • SUSE Manager Retail Branch Server 4.2
  • SUSE Manager Retail Branch Server 4.3
  • SUSE Manager Server 4.2
  • SUSE Manager Server 4.3

An update that contains one feature can now be installed.

Description:

This update for rust fixes the following issues:

Rust was updated to ship in version 1.64.0 in rust1.64.

Version 1.64.0 (2022-09-22)

Language

  • Unions with mutable references or tuples of allowed types are now allowed
  • It is now considered valid to deallocate memory pointed to by a shared reference &T [if every byte in T is inside an UnsafeCell]
  • Unused tuple struct fields are now warned against in an allow-by-default lint, [unused_tuple_struct_fields]

Compiler

  • Add Nintendo Switch as tier 3 target
  • Refer to Rust's platform support page for more information on Rust's tiered platform support.
  • Only compile #[used] as llvm.compiler.used for ELF targets
  • Add the --diagnostic-width compiler flag to define the terminal width.
  • Add support for link-flavor rust-lld for iOS, tvOS and watchOS

Libraries

  • Remove restrictions on compare-exchange memory ordering.
  • You can now write! or writeln! into an OsString: [Implement fmt::Write for OsString]
  • Make RwLockReadGuard covariant
  • Implement FusedIterator for std::net::[Into]Incoming
  • impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>
  • ptr::copy and ptr::swap are doing untyped copies
  • Add cgroupv1 support to available_parallelism
  • Mitigate many incorrect uses of mem::uninitialized

Stabilized APIs

  • future::IntoFuture
  • future::poll_fn
  • task::ready!
  • num::NonZero*::checked_mul
  • num::NonZero*::checked_pow
  • num::NonZero*::saturating_mul
  • num::NonZero*::saturating_pow
  • num::NonZeroI*::abs
  • num::NonZeroI*::checked_abs
  • num::NonZeroI*::overflowing_abs
  • num::NonZeroI*::saturating_abs
  • num::NonZeroI*::unsigned_abs
  • num::NonZeroI*::wrapping_abs
  • num::NonZeroU*::checked_add
  • num::NonZeroU*::checked_next_power_of_two
  • num::NonZeroU*::saturating_add
  • os::unix::process::CommandExt::process_group
  • os::windows::fs::FileTypeExt::is_symlink_dir
  • os::windows::fs::FileTypeExt::is_symlink_file

These types were previously stable in std::ffi, but are now also available in core and alloc:

  • core::ffi::CStr
  • core::ffi::FromBytesWithNulError
  • alloc::ffi::CString
  • alloc::ffi::FromVecWithNulError
  • alloc::ffi::IntoStringError
  • alloc::ffi::NulError

These types were previously stable in std::os::raw, but are now also available in core::ffi and std::ffi:

  • ffi::c_char
  • ffi::c_double
  • ffi::c_float
  • ffi::c_int
  • ffi::c_long
  • ffi::c_longlong
  • ffi::c_schar
  • ffi::c_short
  • ffi::c_uchar
  • ffi::c_uint
  • ffi::c_ulong
  • ffi::c_ulonglong
  • ffi::c_ushort

These APIs are now usable in const contexts:

  • slice::from_raw_parts

Cargo

  • Packages can now inherit settings from the workspace so that the settings can be centralized in one place.
  • Cargo commands can now accept multiple --target flags to build for multiple targets at once
  • The --jobs argument can now take a negative number to count backwards from the max CPUs.
  • cargo add will now update Cargo.lock.
  • Added the --crate-type flag to cargo rustc to override the crate type.
  • Significantly improved the performance fetching git dependencies from GitHub when using a hash in the rev field.

Misc

  • The rust-analyzer rustup component is now available on the stable channel.

Compatibility Notes

  • The minimum required versions for all -linux-nu` targets are now at least kernel 3.2 and glibc 2.17, for targets that previously supported older versions.
  • Network primitives are now implemented with the ideal Rust layout, not the C system layout
  • Add assertion that transmute_copy's U is not larger than T
  • A soundness bug in BTreeMap was fixed
  • The Drop behavior of C-like enums cast to ints has changed
  • Relate late-bound closure lifetimes to parent fn in NLL
  • Errors at const-eval time are now in future incompatibility reports
  • On the thumbv6m-none-eabi target, some incorrect asm! statements were erroneously accepted if they used the high registers (r8 to r14) as an input/output operand. This is no longer accepted.
  • impl Trait was accidentally accepted as the associated type value of return-position impl Trait, without fulfilling all the trait bounds of that associated type, as long as the hidden type satisfies said bounds. This has been fixed.

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.3
    zypper in -t patch SUSE-2022-3633=1
  • openSUSE Leap 15.4
    zypper in -t patch openSUSE-SLE-15.4-2022-3633=1
  • Development Tools Module 15-SP3
    zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP3-2022-3633=1
  • Development Tools Module 15-SP4
    zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP4-2022-3633=1

Package List:

  • openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64 i586)
    • cargo-1.64.0-150300.21.35.1
    • rust-1.64.0-150300.21.35.1
    • cargo1.64-debuginfo-1.64.0-150300.7.3.1
    • rust1.64-1.64.0-150300.7.3.1
    • cargo1.64-1.64.0-150300.7.3.1
    • rust1.64-debuginfo-1.64.0-150300.7.3.1
  • openSUSE Leap 15.4 (aarch64 ppc64le s390x x86_64)
    • cargo-1.64.0-150300.21.35.1
    • rust-1.64.0-150300.21.35.1
    • cargo1.64-debuginfo-1.64.0-150300.7.3.1
    • rust1.64-1.64.0-150300.7.3.1
    • cargo1.64-1.64.0-150300.7.3.1
    • rust1.64-debuginfo-1.64.0-150300.7.3.1
  • Development Tools Module 15-SP3 (aarch64 ppc64le s390x x86_64)
    • cargo-1.64.0-150300.21.35.1
    • rust-1.64.0-150300.21.35.1
    • cargo1.64-debuginfo-1.64.0-150300.7.3.1
    • rust1.64-1.64.0-150300.7.3.1
    • cargo1.64-1.64.0-150300.7.3.1
    • rust1.64-debuginfo-1.64.0-150300.7.3.1
  • Development Tools Module 15-SP4 (aarch64 ppc64le s390x x86_64)
    • cargo-1.64.0-150300.21.35.1
    • rust-1.64.0-150300.21.35.1
    • cargo1.64-debuginfo-1.64.0-150300.7.3.1
    • rust1.64-1.64.0-150300.7.3.1
    • cargo1.64-1.64.0-150300.7.3.1
    • rust1.64-debuginfo-1.64.0-150300.7.3.1

References: