File _patchinfo of Package patchinfo.38220
<patchinfo incident="38220">
<packager>firstyear</packager>
<rating>moderate</rating>
<issue tracker="jsc" id="SLE-18626"/>
<issue tracker="jsc" id="PED-11411"/>
<category>recommended</category>
<summary>Recommended update for rust, rust1.86</summary>
<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.
</description>
</patchinfo>