shield
Recommended update for rust, rust1.86
SUSE-SLE-Module-Development-Tools-15-SP6-2025-1350
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.
-
Release DateApr 20 2025
-
References
-
Typerecommended
-
Severitymoderate
cloud_download Downloads
Development Tools Module 15.6 x86_64
-
Packagescargo
The Rust package managercargo1.861.86.0-150500.27.36.1 lock rpm
The Rust package managerrust1.86.0-150300.7.5.1 lock rpm
A systems programming languagerust1.861.86.0-150500.27.36.1 lock rpm lock src
A systems programming languagerust1.86-src1.86.0-150300.7.5.1 lock rpm lock nosrc
The Rust Standard Library Source1.86.0-150300.7.5.1 lock rpm
Development Tools Module 15.6 s390x
-
Packagescargo
The Rust package managercargo1.861.86.0-150500.27.36.1 lock rpm
The Rust package managerrust1.86.0-150300.7.5.1 lock rpm
A systems programming languagerust1.861.86.0-150500.27.36.1 lock rpm lock src
A systems programming languagerust1.86-src1.86.0-150300.7.5.1 lock rpm lock nosrc
The Rust Standard Library Source1.86.0-150300.7.5.1 lock rpm
Development Tools Module 15.6 ppc64le
-
Packagescargo
The Rust package managercargo1.861.86.0-150500.27.36.1 lock rpm
The Rust package managerrust1.86.0-150300.7.5.1 lock rpm
A systems programming languagerust1.861.86.0-150500.27.36.1 lock rpm lock src
A systems programming languagerust1.86-src1.86.0-150300.7.5.1 lock rpm lock nosrc
The Rust Standard Library Source1.86.0-150300.7.5.1 lock rpm
Development Tools Module 15.6 aarch64
-
Packagescargo
The Rust package managercargo1.861.86.0-150500.27.36.1 lock rpm
The Rust package managerrust1.86.0-150300.7.5.1 lock rpm
A systems programming languagerust1.861.86.0-150500.27.36.1 lock rpm lock src
A systems programming languagerust1.86-src1.86.0-150300.7.5.1 lock rpm lock nosrc
The Rust Standard Library Source1.86.0-150300.7.5.1 lock rpm