<div class="container">
<h1>Recommended update for rust, rust1.79</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2024:2188-1</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
<li style="display: inline;">
<a href="https://jira.suse.com/browse/SLE-18626">jsc#SLE-18626</a>
</li>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">Development Tools Module 15-SP5</li>
<li class="list-group-item">Development Tools Module 15-SP6</li>
<li class="list-group-item">openSUSE Leap 15.5</li>
<li class="list-group-item">openSUSE Leap 15.6</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP6</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 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP6</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, rust1.79 fixes the following issues:</p>
<p>Changes in rust1.79:</p>
<h1>Version 1.79.0 (2024-06-13)</h1>
<h2>Language</h2>
<ul>
<li>Stabilize inline <code>const {}</code> expressions.</li>
<li>Prevent opaque types being instantiated twice with different regions within the same function.</li>
<li>Stabilize WebAssembly target features that are in phase 4 and 5.</li>
<li>Add the <code>redundant_lifetimes</code> lint to detect lifetimes which are semantically redundant.</li>
<li>Stabilize the <code>unnameable_types</code> lint for public types that can't be named.</li>
<li>Enable debuginfo in macros, and stabilize <code>-C collapse-macro-debuginfo</code> and <code>#[collapse_debuginfo]</code>.</li>
<li>Propagate temporary lifetime extension into <code>if</code> and <code>match</code> expressions.</li>
<li>Restrict promotion of <code>const fn</code> calls.</li>
<li>Warn against refining impls of crate-private traits with <code>refining_impl_trait</code> lint.</li>
<li>Stabilize associated type bounds (RFC 2289).</li>
<li>Stabilize importing <code>main</code> from other modules or crates.</li>
<li>Check return types of function types for well-formedness</li>
<li>Rework <code>impl Trait</code> lifetime inference</li>
<li>Change inductive trait solver cycles to be ambiguous</li>
</ul>
<h2>Compiler</h2>
<ul>
<li>Define <code>-C strip</code> to only affect binaries, not artifacts like <code>.pdb</code>.</li>
<li>Stabilize <code>-Crelro-level</code> for controlling runtime link hardening.</li>
<li>Stabilize checking of <code>cfg</code> names and values at compile-time with <code>--check-cfg</code>.
<em>Note that this only stabilizes the compiler part, the Cargo part is still unstable in this release.</em></li>
<li>Add <code>aarch64-apple-visionos</code> and <code>aarch64-apple-visionos-sim</code> tier 3 targets.</li>
<li>Add <code>riscv32ima-unknown-none-elf</code> tier 3 target.</li>
<li>Promote several Windows targets to tier 2: <code>aarch64-pc-windows-gnullvm</code>, <code>i686-pc-windows-gnullvm</code>, and <code>x86_64-pc-windows-gnullvm</code>.</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>Implement <code>FromIterator</code> for <code>(impl Default + Extend, impl Default + Extend)</code>.</li>
<li>Implement <code>{Div,Rem}Assign<NonZero<X>></code> on <code>X</code>.</li>
<li>Document overrides of <code>clone_from()</code> in core/std.</li>
<li>Link MSVC default lib in core.</li>
<li>Caution against using <code>transmute</code> between pointers and integers.</li>
<li>Enable frame pointers for the standard library.</li>
</ul>
<h2>Stabilized APIs</h2>
<ul>
<li><code>{integer}::unchecked_add</code> https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_add)</li>
<li><code>{integer}::unchecked_mul</code> https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_mul)</li>
<li><code>{integer}::unchecked_sub</code> https://doc.rust-lang.org/stable/core/primitive.i32.html#method.unchecked_sub)</li>
<li><code><[T]>::split_at_unchecked</code> https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_unchecked)</li>
<li><code><[T]>::split_at_mut_unchecked</code> https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)</li>
<li><code><[u8]>::utf8_chunks</code> https://doc.rust-lang.org/stable/core/primitive.slice.html#method.utf8_chunks)</li>
<li><code>str::Utf8Chunks</code> https://doc.rust-lang.org/stable/core/str/struct.Utf8Chunks.html)</li>
<li><code>str::Utf8Chunk</code> https://doc.rust-lang.org/stable/core/str/struct.Utf8Chunk.html)</li>
<li><code><*const T>::is_aligned</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_aligned)</li>
<li><code><*mut T>::is_aligned</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_aligned-1)</li>
<li><code>NonNull::is_aligned</code> https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.is_aligned)</li>
<li><code><*const [T]>::len</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.len)</li>
<li><code><*mut [T]>::len</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.len-1)</li>
<li><code><*const [T]>::is_empty</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_empty)</li>
<li><code><*mut [T]>::is_empty</code> https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_empty-1)</li>
<li><code>NonNull::<[T]>::is_empty</code> https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.is_empty)</li>
<li><code>CStr::count_bytes</code> https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)</li>
<li><code>io::Error::downcast</code> https://doc.rust-lang.org/stable/std/io/struct.Error.html#method.downcast)</li>
<li><code>num::NonZero<T></code> https://doc.rust-lang.org/stable/core/num/struct.NonZero.html)</li>
<li><code>path::absolute</code> https://doc.rust-lang.org/stable/std/path/fn.absolute.html)</li>
<li><code>proc_macro::Literal::byte_character</code> https://doc.rust-lang.org/stable/proc_macro/struct.Literal.html#method.byte_character)</li>
<li><code>proc_macro::Literal::c_string</code> https://doc.rust-lang.org/stable/proc_macro/struct.Literal.html#method.c_string)</li>
</ul>
<p>These APIs are now stable in const contexts:</p>
<ul>
<li><code>Atomic*::into_inner</code> https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.into_inner)</li>
<li><code>io::Cursor::new</code> https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.new)</li>
<li><code>io::Cursor::get_ref</code> https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_ref)</li>
<li><code>io::Cursor::position</code> https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.position)</li>
<li><code>io::empty</code> https://doc.rust-lang.org/stable/std/io/fn.empty.html)</li>
<li><code>io::repeat</code> https://doc.rust-lang.org/stable/std/io/fn.repeat.html)</li>
<li><code>io::sink</code> https://doc.rust-lang.org/stable/std/io/fn.sink.html)</li>
<li><code>panic::Location::caller</code> https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.caller)</li>
<li><code>panic::Location::file</code> https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.file)</li>
<li><code>panic::Location::line</code> https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.line)</li>
<li><code>panic::Location::column</code> https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.column)</li>
</ul>
<h2>Cargo</h2>
<ul>
<li>Prevent dashes in <code>lib.name</code>, always normalizing to <code>_</code>.</li>
<li>Stabilize MSRV-aware version requirement selection in <code>cargo add</code>.</li>
<li>Switch to using <code>gitoxide</code> by default for listing files.</li>
<li>Error on <code>[project]</code> in Edition 2024; <code>cargo fix --edition</code> will change it to <code>[package]</code>.</li>
</ul>
<h2>Rustdoc</h2>
<ul>
<li>Always display stability version even if it's the same as the containing item.</li>
<li>Show a single search result for items with multiple paths.</li>
<li>Support typing <code>/</code> in docs to begin a search.</li>
</ul>
<h2>Compatibility Notes</h2>
<ul>
<li>Update the minimum external LLVM to 17.</li>
<li><code>RustcEncodable</code> and <code>RustcDecodable</code> are soft-destabilized, to be removed
from the prelude in next edition.</li>
<li>The <code>wasm_c_abi</code> future-incompatibility lint will warn about use of the
non-spec-compliant C ABI.
Use <code>wasm-bindgen v0.2.88</code> to generate forward-compatible bindings.</li>
<li>Check return types of function types for well-formedness</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.5
<br/>
<code>zypper in -t patch SUSE-2024-2188=1 openSUSE-SLE-15.5-2024-2188=1</code>
</li>
<li class="list-group-item">
openSUSE Leap 15.6
<br/>
<code>zypper in -t patch openSUSE-SLE-15.6-2024-2188=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-2024-2188=1</code>
</li>
<li class="list-group-item">
Development Tools Module 15-SP6
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2024-2188=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
<ul>
<li>rust1.79-debuginfo-1.79.0-150500.11.3.1</li>
<li>cargo1.79-1.79.0-150500.11.3.1</li>
<li>cargo-1.79.0-150500.27.15.1</li>
<li>rust-1.79.0-150500.27.15.1</li>
<li>cargo1.79-debuginfo-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586 nosrc)
<ul>
<li>rust1.79-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.5 (nosrc)
<ul>
<li>rust1.79-test-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust1.79-debuginfo-1.79.0-150500.11.3.1</li>
<li>cargo1.79-1.79.0-150500.11.3.1</li>
<li>cargo-1.79.0-150500.27.15.1</li>
<li>rust-1.79.0-150500.27.15.1</li>
<li>cargo1.79-debuginfo-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.79-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust1.79-debuginfo-1.79.0-150500.11.3.1</li>
<li>cargo1.79-1.79.0-150500.11.3.1</li>
<li>cargo-1.79.0-150500.27.15.1</li>
<li>rust-1.79.0-150500.27.15.1</li>
<li>cargo1.79-debuginfo-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.79-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>rust1.79-debuginfo-1.79.0-150500.11.3.1</li>
<li>cargo1.79-1.79.0-150500.11.3.1</li>
<li>cargo-1.79.0-150500.27.15.1</li>
<li>rust-1.79.0-150500.27.15.1</li>
<li>cargo1.79-debuginfo-1.79.0-150500.11.3.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
<ul>
<li>rust1.79-1.79.0-150500.11.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>