<div class="container">
<h1>Recommended update for rust, rust1.71</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2023:2978-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">Development Tools Module 15-SP4</li>
<li class="list-group-item">Development Tools Module 15-SP5</li>
<li class="list-group-item">openSUSE Leap 15.4</li>
<li class="list-group-item">openSUSE Leap 15.5</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP5</li>
<li class="list-group-item">SUSE Manager Proxy 4.3</li>
<li class="list-group-item">SUSE Manager Retail Branch Server 4.3</li>
<li class="list-group-item">SUSE Manager Server 4.3</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that contains one feature can now be installed.</p>
<h2>Description:</h2>
<p>This update for rust and rust1.71 fixes the following issues:</p>
<p>This update ships rust1.71.</p>
<h1>Version 1.71.0 (2023-07-13)</h1>
<h2>Language</h2>
<ul>
<li>Stabilize <code>raw-dylib</code>, <code>link_ordinal</code>, <code>import_name_type</code> and <code>-Cdlltool</code>.</li>
<li>Uplift <code>clippy::{drop,forget}_{ref,copy}</code> lints.</li>
<li>Type inference is more conservative around constrained vars.</li>
<li>Use fulfillment to check <code>Drop</code> impl compatibility</li>
</ul>
<h2>Compiler</h2>
<ul>
<li>Evaluate place expression in <code>PlaceMention</code>
making <code>let _ =</code> patterns more consistent with respect to the borrow checker.</li>
<li>Add <code>--print deployment-target</code> flag for Apple targets.</li>
<li>Stabilize <code>extern "C-unwind"</code> and friends.
The existing <code>extern "C"</code> etc. may change behavior for cross-language unwinding in a future release.</li>
<li>Update the version of musl used on <code>*-linux-musl</code> targets to 1.2.3
enabling <a href="https://musl.libc.org/time64.html">time64</a> on 32-bit systems.</li>
<li>Stabilize <code>debugger_visualizer</code>
for embedding metadata like Microsoft's Natvis.</li>
<li>Enable flatten-format-args by default.</li>
<li>Make <code>Self</code> respect tuple constructor privacy.</li>
<li>Improve niche placement by trying two strategies and picking the better result.</li>
<li>Use <code>apple-m1</code> as the target CPU for <code>aarch64-apple-darwin</code>.</li>
<li>Add Tier 3 support for the <code>x86_64h-apple-darwin</code> target.</li>
<li>Promote <code>loongarch64-unknown-linux-gnu</code> to Tier 2 with host tools.</li>
</ul>
<p>Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.</p>
<h2>Libraries</h2>
<ul>
<li>Rework handling of recursive panics.
Additional panics are allowed while unwinding, as long as they are caught before escaping
a <code>Drop</code> implementation, but panicking within a panic hook is now an immediate abort.</li>
<li>Loosen <code>From<&[T]> for Box<[T]></code> bound to <code>T: Clone</code>.</li>
<li>Remove unnecessary <code>T: Send</code> bound
in <code>Error for mpsc::SendError<T></code> and <code>TrySendError<T></code>.</li>
<li>Fix docs for <code>alloc::realloc</code>
to match <code>Layout</code> requirements that the size must not exceed <code>isize::MAX</code>.</li>
<li>Document <code>const {}</code> syntax for <code>std::thread_local</code>.
This syntax was stabilized in Rust 1.59, but not previously mentioned in release notes.</li>
</ul>
<h2>Stabilized APIs</h2>
<ul>
<li><code>CStr::is_empty</code>](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#method.is_empty)</li>
<li><code>BuildHasher::hash_one</code>](https://doc.rust-lang.org/stable/std/hash/trait.BuildHasher.html#method.hash_one)</li>
<li><code>NonZeroI*::is_positive</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.is_positive)</li>
<li><code>NonZeroI*::is_negative</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.is_negative)</li>
<li><code>NonZeroI*::checked_neg</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.checked_neg)</li>
<li><code>NonZeroI*::overflowing_neg</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.overflowing_neg)</li>
<li><code>NonZeroI*::saturating_neg</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.saturating_neg)</li>
<li><code>NonZeroI*::wrapping_neg</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#method.wrapping_neg)</li>
<li><code>Neg for NonZeroI*</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#impl-Neg-for-NonZeroI32)</li>
<li><code>Neg for &NonZeroI*</code>](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI32.html#impl-Neg-for-%26NonZeroI32)</li>
<li><code>From<[T; N]> for (T...)</code>](https://doc.rust-lang.org/stable/std/primitive.array.html#impl-From%3C%5BT;+1%5D%3E-for-(T,))
(array to N-tuple for N in 1..=12)</li>
<li><code>From<(T...)> for [T; N]</code>](https://doc.rust-lang.org/stable/std/primitive.array.html#impl-From%3C(T,)%3E-for-%5BT;+1%5D)
(N-tuple to array for N in 1..=12)</li>
<li><code>windows::io::AsHandle for Box<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsHandle.html#impl-AsHandle-for-Box%3CT%3E)</li>
<li><code>windows::io::AsHandle for Rc<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsHandle.html#impl-AsHandle-for-Rc%3CT%3E)</li>
<li><code>windows::io::AsHandle for Arc<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsHandle.html#impl-AsHandle-for-Arc%3CT%3E)</li>
<li><code>windows::io::AsSocket for Box<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html#impl-AsSocket-for-Box%3CT%3E)</li>
<li><code>windows::io::AsSocket for Rc<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html#impl-AsSocket-for-Rc%3CT%3E)</li>
<li><code>windows::io::AsSocket for Arc<T></code>](https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html#impl-AsSocket-for-Arc%3CT%3E)</li>
</ul>
<p>These APIs are now stable in const contexts:</p>
<ul>
<li><code><*const T>::read</code>](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.read)</li>
<li><code><*const T>::read_unaligned</code>](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.read_unaligned)</li>
<li><code><*mut T>::read</code>](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.read-1)</li>
<li><code><*mut T>::read_unaligned</code>](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.read_unaligned-1)</li>
<li><code>ptr::read</code>](https://doc.rust-lang.org/stable/std/ptr/fn.read.html)</li>
<li><code>ptr::read_unaligned</code>](https://doc.rust-lang.org/stable/std/ptr/fn.read_unaligned.html)</li>
<li><code><[T]>::split_at</code>](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_at)</li>
</ul>
<h2>Cargo</h2>
<ul>
<li>Allow named debuginfo options in <code>Cargo.toml</code>.</li>
<li>Add <code>workspace_default_members</code> to the output of <code>cargo metadata</code>.</li>
<li><code>cargo add</code> now considers <code>rust-version</code> when selecting packages.</li>
<li>Automatically inherit workspace fields when running <code>cargo new</code>/<code>cargo init</code>.</li>
</ul>
<h2>Rustdoc</h2>
<ul>
<li>Add a new <code>rustdoc::unescaped_backticks</code> lint for broken inline code.</li>
<li>Support strikethrough with single tildes.](https://github.com/rust-lang/rust/pull/111152/) (<code>~~old~~</code> vs. <code>~new~</code>)</li>
</ul>
<h2>Misc</h2>
<h2>Compatibility Notes</h2>
<ul>
<li>Remove structural match from <code>TypeId</code>.
Code that uses a constant <code>TypeId</code> in a pattern will potentially be broken.
Known cases have already been fixed -- in particular, users of the <code>log</code>
crate's <code>kv_unstable</code> feature should update to <code>log v0.4.18</code> or later.</li>
<li>Add a <code>sysroot</code> crate to represent the standard library crates.
This does not affect stable users, but may require adjustment in tools that build their own standard library.</li>
<li>Cargo optimizes its usage under <code>rustup</code>. When
Cargo detects it will run <code>rustc</code> pointing to a rustup proxy, it'll try bypassing the proxy and
use the underlying binary directly. There are assumptions around the interaction with rustup and
<code>RUSTUP_TOOLCHAIN</code>. However, it's not expected to affect normal users.</li>
<li>When querying a package, Cargo tries only the original name, all hyphens, and all underscores to
handle misspellings. Previously, Cargo tried each
combination of hyphens and underscores, causing excessive requests to crates.io.</li>
<li>Cargo now disallows <code>RUSTUP_HOME</code> and
<code>RUSTUP_TOOLCHAIN</code> in the <code>[env]</code> configuration
table. This is considered to be not a use case Cargo would like to support, since it will likely
cause problems or lead to confusion.</li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE Moderate 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.4
<br/>
<code>zypper in -t patch SUSE-2023-2978=1 openSUSE-SLE-15.4-2023-2978=1</code>
</li>
<li class="list-group-item">
openSUSE Leap 15.5
<br/>
<code>zypper in -t patch openSUSE-SLE-15.5-2023-2978=1</code>
</li>
<li class="list-group-item">
Development Tools Module 15-SP4
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP4-2023-2978=1</code>
</li>
<li class="list-group-item">
Development Tools Module 15-SP5
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP5-2023-2978=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
openSUSE Leap 15.4 (aarch64 ppc64le s390x x86_64 i586)
<ul>
<li>rust-1.71.0-150400.24.21.1</li>
<li>cargo-1.71.0-150400.24.21.1</li>
<li>cargo1.71-1.71.0-150400.9.3.1</li>
<li>rust1.71-debuginfo-1.71.0-150400.9.3.1</li>
<li>cargo1.71-debuginfo-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.4 (aarch64 ppc64le s390x x86_64 i586 nosrc)
<ul>
<li>rust1.71-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.4 (nosrc)
<ul>
<li>rust1.71-test-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-1.71.0-150400.24.21.1</li>
<li>cargo-1.71.0-150400.24.21.1</li>
<li>cargo1.71-1.71.0-150400.9.3.1</li>
<li>rust1.71-debuginfo-1.71.0-150400.9.3.1</li>
<li>cargo1.71-debuginfo-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.71-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP4 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-1.71.0-150400.24.21.1</li>
<li>cargo-1.71.0-150400.24.21.1</li>
<li>cargo1.71-1.71.0-150400.9.3.1</li>
<li>rust1.71-debuginfo-1.71.0-150400.9.3.1</li>
<li>cargo1.71-debuginfo-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP4 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.71-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust-1.71.0-150400.24.21.1</li>
<li>cargo-1.71.0-150400.24.21.1</li>
<li>cargo1.71-1.71.0-150400.9.3.1</li>
<li>rust1.71-debuginfo-1.71.0-150400.9.3.1</li>
<li>cargo1.71-debuginfo-1.71.0-150400.9.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.71-1.71.0-150400.9.3.1</li>
</ul>
</li>
</ul>
<h2>References:</h2>
<ul>
<li>
<a href="https://jira.suse.com/browse/SLE-18626">https://jira.suse.com/browse/SLE-18626</a>
</li>
</ul>
</div>