<div class="container">
    <h1>Recommended update for rust, rust1.81</h1>

    <table class="table table-striped table-bordered">
        <tbody>
        <tr>
            <th>Announcement ID:</th>
            <td>SUSE-RU-2024:3406-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.81 fixes the following issues:</p>
<p>Changes in rust1.81:</p>
<ul>
<li>Resolve wasm32-wasi build issues</li>
</ul>
<h1>Version 1.81.0 (2024-09-05)</h1>
<h2>Language</h2>
<ul>
<li>Abort on uncaught panics in <code>extern &quot;C&quot;</code> functions.</li>
<li>Fix ambiguous cases of multiple <code>&amp;</code> in elided self lifetimes.</li>
<li>Stabilize <code>#[expect]</code> for lints (RFC 2383), like <code>#[allow]</code> with a warning if the lint is <em>not</em> fulfilled.</li>
<li>Change method resolution to constrain hidden types instead of rejecting method candidates.</li>
<li>Bump <code>elided_lifetimes_in_associated_constant</code> to deny.</li>
<li><code>offset_from</code>: always allow pointers to point to the same address.</li>
<li>Allow constraining opaque types during subtyping in the trait system.</li>
<li>Allow constraining opaque types during various unsizing casts.</li>
<li>Deny keyword lifetimes pre-expansion.</li>
</ul>
<h2>Compiler</h2>
<ul>
<li>Make casts of pointers to trait objects stricter.</li>
<li>Check alias args for well-formedness even if they have escaping bound vars.</li>
<li>Deprecate no-op codegen option <code>-Cinline-threshold=...</code>.</li>
<li>Re-implement a type-size based limit.</li>
<li>Properly account for alignment in <code>transmute</code> size checks.</li>
<li>Remove the <code>box_pointers</code> lint.</li>
<li>Ensure the interpreter checks bool/char for validity when they are used in a cast.</li>
<li>Improve coverage instrumentation for functions containing nested items.</li>
<li>Target changes:</li>
<li>Add Tier 3 <code>no_std</code> Xtensa targets: <code>xtensa-esp32-none-elf</code>, <code>xtensa-esp32s2-none-elf</code>, <code>xtensa-esp32s3-none-elf</code></li>
<li>Add Tier 3 <code>std</code> Xtensa targets: <code>xtensa-esp32-espidf</code>, <code>xtensa-esp32s2-espidf</code>, <code>xtensa-esp32s3-espidf</code></li>
<li>Add Tier 3 i686 Redox OS target: <code>i686-unknown-redox</code></li>
<li>Promote <code>arm64ec-pc-windows-msvc</code> to Tier 2.</li>
<li>Promote <code>loongarch64-unknown-linux-musl</code> to Tier 2 with host tools.</li>
<li>Enable full tools and profiler for LoongArch Linux targets.</li>
<li>Unconditionally warn on usage of <code>wasm32-wasi</code>. (see compatibility note below)</li>
<li>Refer to Rust&#x27;s [platform support page][platform-support-doc] for more information on Rust&#x27;s tiered platform support.</li>
</ul>
<h2>Libraries</h2>
<ul>
<li>Split core&#x27;s <code>PanicInfo</code> and std&#x27;s <code>PanicInfo</code>. (see compatibility note below)</li>
<li>Generalize <code>{Rc,Arc}::make_mut()</code> to unsized types.</li>
<li>Replace sort implementations with stable <code>driftsort</code> and unstable <code>ipnsort</code>. All <code>slice::sort*</code> and <code>slice::select_nth*</code> methods are expected to see significant performance improvements. See the research project https://github.com/Voultapher/sort-research-rs for more details.</li>
<li>Document behavior of <code>create_dir_all</code> with respect to empty paths.</li>
<li>Fix interleaved output in the default panic hook when multiple threads panic simultaneously.</li>
</ul>
<h2>Stabilized APIs</h2>
<ul>
<li><code>core::error</code> https://doc.rust-lang.org/stable/core/error/index.html</li>
<li><code>hint::assert_unchecked</code> https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html</li>
<li><code>fs::exists</code> https://doc.rust-lang.org/stable/std/fs/fn.exists.html</li>
<li><code>AtomicBool::fetch_not</code> https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not</li>
<li><code>Duration::abs_diff</code> https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff</li>
<li><code>IoSlice::advance</code> https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance</li>
<li><code>IoSlice::advance_slices</code> https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices</li>
<li><code>IoSliceMut::advance</code> https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance</li>
<li><code>IoSliceMut::advance_slices</code> https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices</li>
<li><code>PanicHookInfo</code> https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html</li>
<li><code>PanicInfo::message</code> https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message</li>
<li><code>PanicMessage</code> https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html</li>
</ul>
<p>These APIs are now stable in const contexts:</p>
<ul>
<li><code>char::from_u32_unchecked</code> https://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html (function)</li>
<li><code>char::from_u32_unchecked</code> https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked (method)</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>CStr::from_ptr</code> https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr</li>
</ul>
<h2>Cargo</h2>
<ul>
<li>Generated <code>.cargo_vcs_info.json</code> is always included, even when <code>--allow-dirty</code> is passed.</li>
<li>Disallow <code>package.license-file</code> and <code>package.readme</code> pointing to non-existent files during packaging.</li>
<li>Disallow passing <code>--release</code>/<code>--debug</code> flag along with the <code>--profile</code> flag.</li>
<li>Remove <code>lib.plugin</code> key support in <code>Cargo.toml</code>. Rust plugin support has been deprecated for four years and was removed in 1.75.0.</li>
</ul>
<h2>Compatibility Notes</h2>
<ul>
<li>Usage of the <code>wasm32-wasi</code> target will now issue a compiler warning and request users switch to the <code>wasm32-wasip1</code> target instead. Both targets are the same, <code>wasm32-wasi</code> is only being renamed, and this change to the WASI target https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html is being done to enable removing <code>wasm32-wasi</code> in January 2025.</li>
<li>We have renamed <code>std::panic::PanicInfo</code> to <code>std::panic::PanicHookInfo</code>. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0.
  <code>core::panic::PanicInfo</code> will remain unchanged, however, as this is now a <em>different type</em>.</li>
</ul>
<p>The reason is that these types have different roles: <code>std::panic::PanicHookInfo</code> is the argument to the panic hook https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html in std context (where panics can have an arbitrary payload), while <code>core::panic::PanicInfo</code> is the argument to the <code>#[panic_handler]</code> https://doc.rust-lang.org/nomicon/panic-handler.html in no_std context (where panics always carry a formatted <em>message</em>). Separating these types allows us to add more useful methods to these types, such as <code>std::panic::PanicHookInfo::payload_as_str()</code> and <code>core::panic::PanicInfo::message()</code>.
* The new sort implementations may panic if a type&#x27;s implementation of <code>Ord</code> https://doc.rust-lang.org/std/cmp/trait.Ord.html (or the given comparison function) does not implement a total order https://en.wikipedia.org/wiki/Total_order as the trait requires. <code>Ord</code>&#x27;s supertraits (<code>PartialOrd</code>, <code>Eq</code>, and <code>PartialEq</code>) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data.
* In very rare cases, a change in the internal evaluation order of the trait solver may result in new fatal overflow errors.</p>



    

    <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-3406=1 openSUSE-SLE-15.5-2024-3406=1</code>
                    
                    
                
            </li>
        
            <li class="list-group-item">
                openSUSE Leap 15.6
                
                    
                        <br/>
                        <code>zypper in -t patch openSUSE-SLE-15.6-2024-3406=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-3406=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-3406=1</code>
                    
                    
                
            </li>
        
    </ul>

    <h2>Package List:</h2>
    <ul>
        
            
                <li>
                    openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
                    <ul>
                        
                            <li>cargo1.81-1.81.0-150500.11.3.1</li>
                        
                            <li>rust-1.81.0-150500.27.21.1</li>
                        
                            <li>cargo-1.81.0-150500.27.21.1</li>
                        
                            <li>rust1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                            <li>cargo1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586 nosrc)
                    <ul>
                        
                            <li>rust1.81-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    openSUSE Leap 15.5 (noarch)
                    <ul>
                        
                            <li>rust1.81-src-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    openSUSE Leap 15.5 (nosrc)
                    <ul>
                        
                            <li>rust1.81-test-1.81.0-150500.11.3.2</li>
                        
                    </ul>
                </li>
            
        
            
                <li>
                    openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
                    <ul>
                        
                            <li>cargo1.81-1.81.0-150500.11.3.1</li>
                        
                            <li>rust-1.81.0-150500.27.21.1</li>
                        
                            <li>cargo-1.81.0-150500.27.21.1</li>
                        
                            <li>rust1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                            <li>cargo1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
                    <ul>
                        
                            <li>rust1.81-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    openSUSE Leap 15.6 (noarch)
                    <ul>
                        
                            <li>rust1.81-src-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
        
            
                <li>
                    Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
                    <ul>
                        
                            <li>cargo1.81-1.81.0-150500.11.3.1</li>
                        
                            <li>rust-1.81.0-150500.27.21.1</li>
                        
                            <li>cargo-1.81.0-150500.27.21.1</li>
                        
                            <li>rust1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                            <li>cargo1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
                    <ul>
                        
                            <li>rust1.81-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    Development Tools Module 15-SP5 (noarch)
                    <ul>
                        
                            <li>rust1.81-src-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
        
            
                <li>
                    Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
                    <ul>
                        
                            <li>cargo1.81-1.81.0-150500.11.3.1</li>
                        
                            <li>rust-1.81.0-150500.27.21.1</li>
                        
                            <li>cargo-1.81.0-150500.27.21.1</li>
                        
                            <li>rust1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                            <li>cargo1.81-debuginfo-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
                    <ul>
                        
                            <li>rust1.81-1.81.0-150500.11.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    Development Tools Module 15-SP6 (noarch)
                    <ul>
                        
                            <li>rust1.81-src-1.81.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>