File _patchinfo of Package patchinfo.39484
<patchinfo incident="39484">
<issue tracker="jsc" id="SLE-18626"/>
<issue tracker="jsc" id="PED-11411"/>
<packager>firstyear</packager>
<rating>moderate</rating>
<category>recommended</category>
<summary>Recommended update for rust, rust1.88</summary>
<description>This update for rust fixes the following issues:
- Update to version 1.88.0 - for details see the rust1.88 package
Version 1.88.0 (2025-06-26)
==========================
Language:
- Stabilize `#![feature(let_chains)]` in the 2024 edition.
This feature allows `&&`-chaining `let` statements inside `if` and `while`, allowing intermixture with boolean expressions. The patterns inside the `let` sub-expressions can be irrefutable or refutable.
- Stabilize `#![feature(naked_functions)]`.
Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function.
- Stabilize `#![feature(cfg_boolean_literals)]`.
This allows using boolean literals as `cfg` predicates, e.g. `#[cfg(true)]` and `#[cfg(false)]`.
- Fully de-stabilize the `#[bench]` attribute. Usage of `#[bench]` without `#![feature(custom_test_frameworks)]` already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.
- Add warn-by-default `dangerous_implicit_autorefs` lint against implicit autoref of raw pointer dereference.
The lint will be bumped to deny-by-default in the next version of Rust.
- Add `invalid_null_arguments` lint to prevent invalid usage of null pointers.
This lint is uplifted from `clippy::invalid_null_ptr_usage`.
- Change trait impl candidate preference for builtin impls and trivial where-clauses.
- Check types of generic const parameter defaults
Compiler:
- Stabilize `-Cdwarf-version` for selecting the version of DWARF debug information to generate.
Platform Support:
- Demote `i686-pc-windows-gnu` to Tier 2.
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries:
- Remove backticks from `#[should_panic]` test failure message.
- Guarantee that `[T; N]::from_fn` is generated in order of increasing indices, for those passing it a stateful closure.
- The libtest flag `--nocapture` is deprecated in favor of the more consistent `--no-capture` flag.
- Guarantee that `{float}::NAN` is a quiet NaN.
Stabilized APIs:
- `Cell::update` https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update
- `impl Default for *const T` https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*const+T
- `impl Default for *mut T` https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*mut+T
- `HashMap::extract_if` https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if
- `HashSet::extract_if` https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if
- `proc_macro::Span::line` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line
- `proc_macro::Span::column` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column
- `proc_macro::Span::start` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start
- `proc_macro::Span::end` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end
- `proc_macro::Span::file` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file
- `proc_macro::Span::local_file` https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file
These previously stable APIs are now stable in const contexts:
- `NonNull<T>::replace` https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace
- `<*mut T>::replace` https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace
- `std::ptr::swap_nonoverlapping`
- `Cell::{replace, get, get_mut, from_mut, as_slice_of_cells}`
Cargo:
- Stabilize automatic garbage collection.
- use `zlib-rs` for gzip compression in rust code
Rustdoc:
- Doctests can be ignored based on target names using `ignore-*` attributes.
- Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options to specify a program (like qemu) and its arguments to run a doctest.
Compatibility Notes:
- Finish changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a `tt` fragment specifier can often fix these macros.
- Fully de-stabilize the `#[bench]` attribute. Usage of `#[bench]` without `#![feature(custom_test_frameworks)]` already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.
- Fix borrow checking some always-true patterns.
The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled.
- Update the minimum external LLVM to 19.
- Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.
</description>
</patchinfo>