<div class="container">
<h1>Recommended update for rust1.70</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2024:2392-1</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">openSUSE Leap 15.3</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that can now be installed.</p>
<h2>Description:</h2>
<p>This update for rust1.70 fixes the following issues:</p>
<h1>Version 1.70.0 (2023-06-01)</h1>
<h2>Language</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/105798/">Relax ordering rules for <code>asm!</code> operands</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/106505/">Properly allow macro expanded <code>format_args</code> invocations to uses captures</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/107880/">Lint ambiguous glob re-exports</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/102256/">Perform const and unsafe checking for expressions in <code>let _ = expr</code> position.</a></li>
</ul>
<h2>Compiler</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/109808/">Extend -Cdebuginfo with new options and named aliases</a>
This provides a smaller version of debuginfo for cases that only need line number information
(<code>-Cdebuginfo=line-tables-only</code>), which may eventually become the default for <code>-Cdebuginfo=1</code>.</li>
<li><a href="https://github.com/rust-lang/rust/pull/104363/">Make <code>unused_allocation</code> lint against <code>Box::new</code> too</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/109435/">Detect uninhabited types early in const eval</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/109721/">Switch to LLD as default linker for {arm,thumb}v4t-none-eabi</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/96971">Add tier 3 target <code>loongarch64-unknown-linux-gnu</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/109173/">Add tier 3 target for <code>i586-pc-nto-qnx700</code> (QNX Neutrino RTOS, version 7.0)</a>, </li>
<li><a href="https://github.com/rust-lang/rust/pull/98112">Insert alignment checks for pointer dereferences as debug assertions</a>
This catches undefined behavior at runtime, and may cause existing code to fail.
Refer to Rust's [platform support page][platform-support-doc]
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/94786/">Document NonZeroXxx layout guarantees</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/96391/">Windows: make <code>Command</code> prefer non-verbatim paths</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/99929/">Implement Default for some alloc/core iterators</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/100311/">Fix handling of trailing bare CR in str::lines</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/106844/">allow negative numeric literals in <code>concat!</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/106921/">Add documentation about the memory layout of <code>Cell</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/108157/">Use <code>partial_cmp</code> to implement tuple <code>lt</code>/<code>le</code>/<code>ge</code>/<code>gt</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/108419/">Stabilize <code>atomic_as_ptr</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/97506/">Stabilize <code>nonnull_slice_from_raw_parts</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/105587/">Partial stabilization of <code>once_cell</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/106633/">Stabilize <code>nonzero_min_max</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/106824/">Flatten/inline format_args!() and (string and int) literal arguments into format_args!()</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/107711/">Stabilize movbe target feature</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/108283/">don't splice from files into pipes in io::copy</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/108080/">Add a builtin unstable <code>FnPtr</code> trait that is implemented for all function pointers</a>
This extends <code>Debug</code>, <code>Pointer</code>, <code>Hash</code>, <code>PartialEq</code>, <code>Eq</code>, <code>PartialOrd</code>, and <code>Ord</code>
implementations for function pointers with all ABIs.</li>
</ul>
<h2>Stabilized APIs</h2>
<ul>
<li><a href="https://doc.rust-lang.org/stable/std/num/struct.NonZeroI8.html#associatedconstant.MIN"><code>NonZero*::MIN/MAX</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.retain"><code>BinaryHeap::retain</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/binary_heap/struct.IntoIter.html"><code>Default for std::collections::binary_heap::IntoIter</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoIter.html"><code>Default for std::collections::btree_map::{IntoIter, Iter, IterMut}</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html"><code>Default for std::collections::btree_map::{IntoKeys, Keys}</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html"><code>Default for std::collections::btree_map::{IntoValues, Values}</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_map/struct.Range.html"><code>Default for std::collections::btree_map::Range</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_set/struct.IntoIter.html"><code>Default for std::collections::btree_set::{IntoIter, Iter}</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/collections/btree_set/struct.Range.html"><code>Default for std::collections::btree_set::Range</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/alloc/collections/linked_list/struct.IntoIter.html"><code>Default for std::collections::linked_list::{IntoIter, Iter, IterMut}</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/alloc/vec/struct.IntoIter.html#impl-Default-for-IntoIter%3CT,+A%3E"><code>Default for std::vec::IntoIter</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Chain.html"><code>Default for std::iter::Chain</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Cloned.html"><code>Default for std::iter::Cloned</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Copied.html"><code>Default for std::iter::Copied</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Enumerate.html"><code>Default for std::iter::Enumerate</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Flatten.html"><code>Default for std::iter::Flatten</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Fuse.html"><code>Default for std::iter::Fuse</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/iter/struct.Rev.html"><code>Default for std::iter::Rev</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/slice/struct.Iter.html"><code>Default for std::slice::Iter</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/slice/struct.IterMut.html"><code>Default for std::slice::IterMut</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#method.into_inner"><code>Rc::into_inner</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#method.into_inner"><code>Arc::into_inner</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/cell/struct.OnceCell.html"><code>std::cell::OnceCell</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.is_some_and"><code>Option::is_some_and</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.slice_from_raw_parts"><code>NonNull::slice_from_raw_parts</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_ok_and"><code>Result::is_ok_and</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_err_and"><code>Result::is_err_and</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicU8.html#method.as_ptr"><code>std::sync::atomic::Atomic*::as_ptr</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/io/trait.IsTerminal.html"><code>std::io::IsTerminal</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/os/linux/net/trait.SocketAddrExt.html"><code>std::os::linux::net::SocketAddrExt</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.bind_addr"><code>std::os::unix::net::UnixDatagram::bind_addr</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.connect_addr"><code>std::os::unix::net::UnixDatagram::connect_addr</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.send_to_addr"><code>std::os::unix::net::UnixDatagram::send_to_addr</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixListener.html#method.bind_addr"><code>std::os::unix::net::UnixListener::bind_addr</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.as_mut_os_str"><code>std::path::Path::as_mut_os_str</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html"><code>std::sync::OnceLock</code></a></li>
</ul>
<h2>Cargo</h2>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/11645/">Add <code>CARGO_PKG_README</code></a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/11791/">Make <code>sparse</code> the default protocol for crates.io</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/11839/">Accurately show status when downgrading dependencies</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/11949/">Use registry.default for login/logout</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/11950/">Stabilize <code>cargo logout</code></a></li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/103682/">Stabilize rustdoc <code>--test-run-directory</code></a></li>
</ul>
<h2>Compatibility Notes</h2>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/109044/">Prevent stable <code>libtest</code> from supporting <code>-Zunstable-options</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/102256/">Perform const and unsafe checking for expressions in <code>let _ = expr</code> position.</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/109807">WebAssembly targets enable <code>sign-ext</code> and <code>mutable-globals</code> features in codegen</a>
This may cause incompatibility with older execution environments.</li>
<li><a href="https://github.com/rust-lang/rust/pull/98112">Insert alignment checks for pointer dereferences as debug assertions</a>
This catches undefined behavior at runtime, and may cause existing code to fail.</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.3
<br/>
<code>zypper in -t patch SUSE-2024-2392=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64 i586)
<ul>
<li>cargo1.70-debuginfo-1.70.0-150300.7.3.1</li>
<li>cargo1.70-1.70.0-150300.7.3.1</li>
<li>rust1.70-debuginfo-1.70.0-150300.7.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.3 (aarch64 ppc64le s390x x86_64 i586 nosrc)
<ul>
<li>rust1.70-1.70.0-150300.7.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.3 (nosrc)
<ul>
<li>rust1.70-test-1.70.0-150300.7.3.1</li>
</ul>
</li>
</ul>
</div>