<div class="container">
<h1>Recommended update for rust1.88</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2025:02341-1</td>
</tr>
<tr>
<th>Release Date:</th>
<td>2025-07-17T10:05:04Z</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
<li style="display: inline;">
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1243588">bsc#1243588</a>
</li>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">openSUSE Leap 15.6</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP7</li>
<li class="list-group-item">SUSE Package Hub 15 15-SP6</li>
<li class="list-group-item">SUSE Package Hub 15 15-SP7</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that has one fix can now be installed.</p>
<h2>Description:</h2>
<p>This update for rust1.88 fixes the following issues:</p>
<ul>
<li>bsc#1243588 - Update changelog to remove hyphen as a line break for source validator</li>
</ul>
<h1>Version 1.88.0 (2025-06-26)</h1>
<h2>Language</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/132833">Stabilize <code>#![feature(let_chains)]</code> in the 2024 edition.</a>
This feature allows <code>&&</code>-chaining <code>let</code> statements inside <code>if</code> and <code>while</code>, allowing intermixture with boolean expressions. The patterns inside the <code>let</code> sub-expressions can be irrefutable or refutable.</li>
<li><a href="https://github.com/rust-lang/rust/pull/134213">Stabilize <code>#![feature(naked_functions)]</code>.</a>
Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function.</li>
<li><a href="https://github.com/rust-lang/rust/pull/138632">Stabilize <code>#![feature(cfg_boolean_literals)]</code>.</a>
This allows using boolean literals as <code>cfg</code> predicates, e.g. <code>#[cfg(true)]</code> and <code>#[cfg(false)]</code>.</li>
<li><a href="https://github.com/rust-lang/rust/pull/134273">Fully de-stabilize the <code>#[bench]</code> attribute</a>. Usage of <code>#[bench]</code> without <code>#![feature(custom_test_frameworks)]</code> already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.</li>
<li><a href="https://github.com/rust-lang/rust/pull/123239">Add warn-by-default <code>dangerous_implicit_autorefs</code> lint against implicit autoref of raw pointer dereference.</a>
The lint <a href="https://github.com/rust-lang/rust/pull/141661">will be bumped to deny-by-default</a> in the next version of Rust.</li>
<li><a href="https://github.com/rust-lang/rust/pull/119220">Add <code>invalid_null_arguments</code> lint to prevent invalid usage of null pointers.</a>
This lint is uplifted from <code>clippy::invalid_null_ptr_usage</code>.</li>
<li><a href="https://github.com/rust-lang/rust/pull/138176">Change trait impl candidate preference for builtin impls and trivial where-clauses.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/139646">Check types of generic const parameter defaults</a></li>
</ul>
<h2>Compiler</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/136926">Stabilize <code>-Cdwarf-version</code> for selecting the version of DWARF debug information to generate.</a></li>
</ul>
<h2>Platform Support</h2>
<ul>
<li><a href="https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/">Demote <code>i686-pc-windows-gnu</code> to Tier 2.</a>
Refer to Rust's <a href="https://doc.rust-lang.org/rustc/platform-support.html">platform support page</a>
for more information on Rust's tiered platform support.</li>
</ul>
<h2>Libraries</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/136160">Remove backticks from <code>#[should_panic]</code> test failure message.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/139099">Guarantee that <code>[T; N]::from_fn</code> is generated in order of increasing indices.</a>, for those passing it a stateful closure.</li>
<li><a href="https://github.com/rust-lang/rust/pull/139224">The libtest flag <code>--nocapture</code> is deprecated in favor of the more consistent <code>--no-capture</code> flag.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/139483">Guarantee that <code>{float}::NAN</code> is a quiet NaN.</a></li>
</ul>
<h2>Stabilized APIs</h2>
<ul>
<li><a href="https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update"><code>Cell::update</code></a></li>
<li><a href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*const+T"><code>impl Default for *const T</code></a></li>
<li><a href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*mut+T"><code>impl Default for *mut T</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if"><code>HashMap::extract_if</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if"><code>HashSet::extract_if</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line"><code>proc_macro::Span::line</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column"><code>proc_macro::Span::column</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start"><code>proc_macro::Span::start</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end"><code>proc_macro::Span::end</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file"><code>proc_macro::Span::file</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file"><code>proc_macro::Span::local_file</code></a>
These previously stable APIs are now stable in const contexts:</li>
<li><a href="https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace"><code>NonNull<T>::replace</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace"><code><*mut T>::replace</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/137280"><code>std::ptr::swap_nonoverlapping</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/137928"><code>Cell::{replace, get, get_mut, from_mut, as_slice_of_cells}</code></a></li>
</ul>
<h2>Cargo</h2>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/14287/">Stabilize automatic garbage collection.</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/15417/">use <code>zlib-rs</code> for gzip compression in rust code</a></li>
</ul>
<h2>Rustdoc</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/137096">Doctests can be ignored based on target names using <code>ignore-*</code> attributes.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/137096">Stabilize the <code>--test-runtool</code> and <code>--test-runtool-arg</code> CLI options to specify a program (like qemu) and its arguments to run a doctest.</a></li>
</ul>
<h2>Compatibility Notes</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/124141">Finish changing the internal representation of pasted tokens</a>. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a <code>tt</code> fragment specifier can often fix these macros.</li>
<li><a href="https://github.com/rust-lang/rust/pull/134273">Fully de-stabilize the <code>#[bench]</code> attribute</a>. Usage of <code>#[bench]</code> without <code>#![feature(custom_test_frameworks)]</code> already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.</li>
<li><a href="https://github.com/rust-lang/rust/pull/139042">Fix borrow checking some always-true patterns.</a>
The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled.</li>
<li><a href="https://github.com/rust-lang/rust/pull/139275">Update the minimum external LLVM to 19.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/139309">Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.</a></li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".<br/>
Alternatively you can run the command listed for your product:
</p>
<ul class="list-group">
<li class="list-group-item">
openSUSE Leap 15.6
<br/>
<code>zypper in -t patch openSUSE-SLE-15.6-2025-2341=1</code>
</li>
<li class="list-group-item">
SUSE Package Hub 15 15-SP6
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Packagehub-Subpackages-15-SP6-2025-2341=1</code>
</li>
<li class="list-group-item">
SUSE Package Hub 15 15-SP7
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Packagehub-Subpackages-15-SP7-2025-2341=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-cbindgen-0.28.0+git0-150200.6.7.2</li>
</ul>
</li>
<li>
SUSE Package Hub 15 15-SP6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-cbindgen-0.28.0+git0-150200.6.7.2</li>
</ul>
</li>
<li>
SUSE Package Hub 15 15-SP7 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-cbindgen-0.28.0+git0-150200.6.7.2</li>
</ul>
</li>
</ul>
<h2>References:</h2>
<ul>
<li>
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1243588">https://bugzilla.suse.com/show_bug.cgi?id=1243588</a>
</li>
</ul>
</div>