<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <generator uri="https://blog.rust-lang.org/tags/release/" version="0.1.0">Posts tagged &quot;release&quot; | Rust Blog</generator>
    <link href="https://blog.rust-lang.org/tags/release/feed.xml" rel="self" type="application/atom+xml" />
    <link href="https://blog.rust-lang.org/tags/release/" rel="alternate" type="text/html" />
    <id>https://blog.rust-lang.org/tags/release/</id>
    <title>Posts tagged &quot;release&quot; | Rust Blog</title>
    <subtitle>Empowering everyone to build reliable and efficient software.</subtitle>
    <author>
        <name>Maintained by the Rust Teams.</name>
        <uri>https://github.com/rust-lang/blog.rust-lang.org/</uri>
    </author>
    <updated>2026-10-19T12:36:35+00:00</updated>

    
    <entry>
        <title>Announcing Rust 1.99.1</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/10/15/Rust-1.99.1/" type="text/html" title="Announcing Rust 1.99.1" />
        <published>2026-10-15T00:00:00+00:00</published>
        <updated>2026-10-15T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/10/15/Rust-1.99.1/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/10/15/Rust-1.99.1/">&lt;p&gt;The Rust team has published a new point release of Rust, 1.99.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via rustup, getting Rust 1.99.1 is as easy as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-99-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-99-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.99.1&lt;/h2&gt;
&lt;p&gt;Rust 1.99.1 fixes the following regressions from prior releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/163614&quot;&gt;Missing symbol &lt;code&gt;wcslen&lt;/code&gt;&lt;/a&gt;: Some Rust targets were getting link errors for missing &lt;code&gt;wcslen&lt;/code&gt;, and that function is now present in Rust&#x27;s compiler-builtins library as a fallback.&lt;/p&gt;
&lt;p&gt;The LLVM &lt;code&gt;loop-idiom-wcslen&lt;/code&gt; pass may introduce calls to &lt;code&gt;wcslen&lt;/code&gt; as an optimization, and some Rust targets did not have that function readily available in &lt;code&gt;libc&lt;/code&gt; or elsewhere. The UEFI targets in particular were broken for any project using &lt;code&gt;std&lt;/code&gt;, as some of these calls were introduced in the precompiled standard library, but the issue was also reproducible for similar user code patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/163911&quot;&gt;Miscompilation of FFI &lt;code&gt;bool&lt;/code&gt; return values on x86_64&lt;/a&gt;: Rust functions returning &lt;code&gt;bool&lt;/code&gt; through FFI could leave bits 1-7 of the return register unspecified, causing callers to observe raw values other than &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;. This return type is now marked for zero-extension again, as required by the ABI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/163947&quot;&gt;&lt;code&gt;rust-lld&lt;/code&gt; failed to load &lt;code&gt;libLLVM&lt;/code&gt; on macOS&lt;/a&gt;: This linker could fail to run if the compiler was invoked without the &lt;code&gt;rustup&lt;/code&gt; proxy, as there was no direct setting for the appropriate library search path. Now &lt;code&gt;rust-lld&lt;/code&gt; is built with an &lt;code&gt;rpath&lt;/code&gt; entry for the directory containing &lt;code&gt;libLLVM.dylib&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider using the beta (&lt;code&gt;rustup default beta&lt;/code&gt;) and nightly (&lt;code&gt;rustup default nightly&lt;/code&gt;) channels locally and in your CI. Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;contributors-to-1-99-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-99-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.99.1&lt;/h3&gt;
&lt;p&gt;Many people came together to create Rust 1.99.1. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.99.1/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.99.0</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/" type="text/html" title="Announcing Rust 1.99.0" />
        <published>2026-10-01T00:00:00+00:00</published>
        <updated>2026-10-01T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/">&lt;p&gt;The Rust team is happy to announce a new version of Rust, 1.99.0. Rust is a programming language empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via &lt;code&gt;rustup&lt;/code&gt;, you can get 1.99.0 with:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellsession&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt; rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website, and check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/releases.html#version-1990-2026-10-01&quot;&gt;detailed release notes for 1.99.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider updating locally to use the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-99-0-stable&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-99-0-stable&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.99.0 stable&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;extern-c-variadics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#extern-c-variadics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
extern &quot;C&quot; variadics&lt;/h3&gt;
&lt;p&gt;Rust 1.99.0 stabilizes defining C-ABI variadic functions with &quot;C&quot; and
&quot;C-unwind&quot; ABIs. Variadic functions defined this way use a variable argument
list (&lt;code&gt;...&lt;/code&gt;) and accept an arbitrary number of arguments. Rust could already
call externally-defined variadic functions (e.g., &lt;code&gt;libc::printf&lt;/code&gt;). With Rust
1.99, these functions can now be written in Rust itself:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;///&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; SAFETY: must be called with (at least) 2 i32 arguments.&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; extern&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;C&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; sum&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; args&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; ...&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; i32&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; SAFETY: guaranteed by the caller.&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; args&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;next_arg&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;i32&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; args&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;next_arg&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;i32&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    a&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; +&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; b&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; foo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; i32&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;    unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; sum&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt;0&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-2&quot;&gt;i32&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt; 2&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-2&quot;&gt;i32&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The type of &lt;code&gt;...&lt;/code&gt; is &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/std/ffi/struct.VaList.html&quot;&gt;&lt;code&gt;VaList&lt;/code&gt;&lt;/a&gt;,
which is ABI-compatible with the C &lt;code&gt;va_list&lt;/code&gt; type across targets. What types can be read from a &lt;code&gt;VaList&lt;/code&gt; is guarded by the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/std/ffi/trait.VaArgSafe.html&quot;&gt;&lt;code&gt;VaArgSafe&lt;/code&gt;&lt;/a&gt; trait.&lt;/p&gt;
&lt;p&gt;For more details on c-variadic functions, see the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/reference/items/functions.html#c-variadic-functions&quot;&gt;Reference&lt;/a&gt;.
This release also stabilizes support for defining naked variadic functions with
non-&quot;C&quot; ABIs, which must be written via inline assembly.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;layout-information-from-raw-pointers&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#layout-information-from-raw-pointers&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Layout information from raw pointers&lt;/h3&gt;
&lt;p&gt;This release settles the safety requirements for retrieving the size and
alignment on raw pointers to both &lt;code&gt;Sized&lt;/code&gt; (trivially safe, already possible on
stable) and non-&lt;code&gt;Sized&lt;/code&gt; types.&lt;/p&gt;
&lt;p&gt;This is done by stabilizing three functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/alloc/struct.Layout.html#method.for_value_raw&quot;&gt;&lt;code&gt;Layout::for_value_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/mem/fn.size_of_val_raw.html&quot;&gt;&lt;code&gt;mem::size_of_val_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/mem/fn.align_of_val_raw.html&quot;&gt;&lt;code&gt;mem::align_of_val_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;recommend-against-round-trip-unleaking-after-box-leak&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#recommend-against-round-trip-unleaking-after-box-leak&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Recommend against round-trip unleaking after &lt;code&gt;Box::leak&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;While there are no changes to the language semantics in Rust 1.99, we have
updated the documentation on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/std/boxed/struct.Box.html#method.leak&quot;&gt;&lt;code&gt;Box::leak&lt;/code&gt;&lt;/a&gt; to recommend against patterns that
later deallocate that memory. This was done because such code was found to have
problematic interactions with current and future potential compiler optimizations,
and is especially problematic with the upcoming stabilization of custom allocators.
Instead, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/std/boxed/struct.Box.html#method.into_non_null&quot;&gt;&lt;code&gt;Box::into_non_null&lt;/code&gt;&lt;/a&gt; or &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/std/boxed/struct.Box.html#method.into_raw&quot;&gt;&lt;code&gt;Box::into_raw&lt;/code&gt;&lt;/a&gt; should be preferred.&lt;/p&gt;
&lt;p&gt;This guidance also applies to other &lt;code&gt;leak&lt;/code&gt; functions in the standard library.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;stabilized-apis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilized-apis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stabilized APIs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-Box%3C%5BT;+N%5D,+A%3E&quot;&gt;&lt;code&gt;IntoIterator&lt;/code&gt; for &lt;code&gt;Box&amp;lt;[T; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-%26Box%3C%5BT;+N%5D,+A%3E&quot;&gt;&lt;code&gt;IntoIterator&lt;/code&gt; for &lt;code&gt;&amp;amp;Box&amp;lt;[T; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-%26mut+Box%3C%5BT;+N%5D,+A%3E&quot;&gt;&lt;code&gt;IntoIterator&lt;/code&gt; for &lt;code&gt;&amp;amp;mut Box&amp;lt;[T; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.retain_back&quot;&gt;&lt;code&gt;VecDeque::retain_back&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/ffi/struct.VaList.html&quot;&gt;&lt;code&gt;core::ffi::VaList&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.into_non_null&quot;&gt;&lt;code&gt;Box::into_non_null&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.from_non_null&quot;&gt;&lt;code&gt;Box::from_non_null&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.into_parts&quot;&gt;&lt;code&gt;Vec::into_parts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.from_parts&quot;&gt;&lt;code&gt;Vec::from_parts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/mem/fn.size_of_val_raw.html&quot;&gt;&lt;code&gt;core::mem::size_of_val_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/mem/fn.align_of_val_raw.html&quot;&gt;&lt;code&gt;core::mem::align_of_val_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/alloc/struct.Layout.html#method.for_value_raw&quot;&gt;&lt;code&gt;core::alloc::Layout::for_value_raw&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf8_lossy_owned&quot;&gt;&lt;code&gt;String::from_utf8_lossy_owned&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.FromUtf8Error.html#method.into_utf8_lossy&quot;&gt;&lt;code&gt;string::FromUtf8Error::into_utf8_lossy&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/iter/struct.StepBy.html#impl-FusedIterator-for-StepBy%3CI%3E&quot;&gt;&lt;code&gt;FusedIterator for StepBy&amp;lt;I&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/fs/fn.set_times.html&quot;&gt;&lt;code&gt;std::fs::set_times&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/fs/fn.set_times_nofollow.html&quot;&gt;&lt;code&gt;std::fs::set_times_nofollow&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;other-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other changes&lt;/h3&gt;
&lt;p&gt;Check out everything that changed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/releases/tag/1.99.0&quot;&gt;Rust&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-199-2026-10-01&quot;&gt;Cargo&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-199&quot;&gt;Clippy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;contributors-to-1-99-0&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-99-0&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.99.0&lt;/h2&gt;
&lt;p&gt;Many people came together to create Rust 1.99.0. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.99.0/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.98.1</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/09/03/Rust-1.98.1/" type="text/html" title="Announcing Rust 1.98.1" />
        <published>2026-09-03T00:00:00+00:00</published>
        <updated>2026-09-03T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/09/03/Rust-1.98.1/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/09/03/Rust-1.98.1/">&lt;p&gt;The Rust team has published a new point release of Rust, 1.98.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via rustup, getting Rust 1.98.1 is as easy as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-98-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-98-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.98.1&lt;/h2&gt;
&lt;p&gt;Rust 1.98.1 fixes a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/161441&quot;&gt;miscompilation in vtable generation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In Rust 1.98.0, in some circumstances, rustc would incorrectly generate a trait object vtable with a null pointer
where a function pointer should be. This leads to undefined behavior in the
emitted code. In some cases this may &#x27;just&#x27; cause segfaults due to the null
pointer being loaded, but it is possible for it to be justification for
arbitrary effects (as is typical for UB).&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider
using the beta (&lt;code&gt;rustup default beta&lt;/code&gt;) and nightly (&lt;code&gt;rustup default nightly&lt;/code&gt;) channels locally and in your CI. Please
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you
might come across!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;contributors-to-1-98-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-98-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.98.1&lt;/h3&gt;
&lt;p&gt;Many people came together to create Rust 1.98.1. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.98.1/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.98.0</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/08/20/Rust-1.98.0/" type="text/html" title="Announcing Rust 1.98.0" />
        <published>2026-08-20T00:00:00+00:00</published>
        <updated>2026-08-20T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/08/20/Rust-1.98.0/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/08/20/Rust-1.98.0/">&lt;p&gt;The Rust team is happy to announce a new version of Rust, 1.98.0. Rust is a programming language empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via &lt;code&gt;rustup&lt;/code&gt;, you can get 1.98.0 with:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellsession&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt; rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website, and check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/releases.html#version-1980-2026-08-20&quot;&gt;detailed release notes for 1.98.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider updating locally to use the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-98-0-stable&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-98-0-stable&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.98.0 stable&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;algebraic-floating-point-methods&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#algebraic-floating-point-methods&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Algebraic floating-point methods&lt;/h3&gt;
&lt;p&gt;The floating-point types &lt;code&gt;f32&lt;/code&gt; and &lt;code&gt;f64&lt;/code&gt; now have &quot;algebraic&quot; methods for addition, subtraction, multiplication, division, and remainder. These allow optimizations on these operations using the algebraic properties of real numbers, even though these properties do not hold with the limitations of floating-point representations. The exact set of optimizations is not specified, but may be similar to the kind of optimization you would see with the &lt;code&gt;-ffast-math&lt;/code&gt; option in other languages.&lt;/p&gt;
&lt;p&gt;For example, floating-point addition is &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://en.wikipedia.org/wiki/Associative_property#Nonassociativity_of_floating-point_calculation&quot;&gt;not associative&lt;/a&gt;, so a sum like &lt;code&gt;a + b + c + d&lt;/code&gt; must be evaluated in the left-associative order in which it is parsed, like &lt;code&gt;((a + b) + c) + d&lt;/code&gt;. If you write the same sum as a chain of &lt;code&gt;algebraic_add&lt;/code&gt; calls, then the compiler is free to reorder it, perhaps like &lt;code&gt;(a + b) + (c + d)&lt;/code&gt; to evaluate the partial sums simultaneously. Broader loop-vectorization is often enabled by using these algebraic methods as well.&lt;/p&gt;
&lt;p&gt;These methods are non-deterministic, since the compiler is free to choose different optimizations, but they never cause undefined behavior. See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#algebraic-operators&quot;&gt;library documentation&lt;/a&gt; and the original &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team/issues/532&quot;&gt;API change proposal&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;buffered-integer-formatting&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#buffered-integer-formatting&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Buffered integer formatting&lt;/h3&gt;
&lt;p&gt;All of the primitive integer types now have a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.usize.html#method.format_into&quot;&gt;&lt;code&gt;format_into&lt;/code&gt;&lt;/a&gt; method that takes a &lt;code&gt;&amp;amp;mut NumBuffer&amp;lt;Self&amp;gt;&lt;/code&gt; parameter, which is a buffer that is large enough to hold the decimal format of any value of that type. The buffer itself is opaque, but the method returns the formatted &lt;code&gt;&amp;amp;str&lt;/code&gt; with a lifetime borrowed from that buffer.&lt;/p&gt;
&lt;p&gt;This method also bypasses much of the dynamic dispatch that you would get with buffered &lt;code&gt;write!&lt;/code&gt; formatting, which can be a boon to performance. The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dtolnay/itoa-benchmark&quot;&gt;&lt;code&gt;itoa-benchmark&lt;/code&gt;&lt;/a&gt; repo now shows that &lt;code&gt;format_into&lt;/code&gt; performs similarly to &lt;code&gt;itoa&lt;/code&gt; itself, so this could serve as a standard replacement for that dependency and others like it.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;fix-interaction-between-manuallydrop-and-box&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#fix-interaction-between-manuallydrop-and-box&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Fix interaction between &lt;code&gt;ManuallyDrop&lt;/code&gt; and &lt;code&gt;Box&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Prior to Rust 1.96.0, there was a bug in the Rust compiler, which made the following code undefined behavior:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;let&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; x&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; ManuallyDrop&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;new&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;Box&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;new&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; ManuallyDrop&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;drop&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;let&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; x&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; //&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; UB!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is because the compiler considers it undefined behavior to move a &lt;code&gt;Box&lt;/code&gt; that has been dropped (deallocated), and &lt;code&gt;ManuallyDrop&lt;/code&gt; used to propagate that, such that moving &lt;code&gt;ManuallyDrop&amp;lt;Box&amp;lt;_&amp;gt;&amp;gt;&lt;/code&gt; where the box has been dropped would also be considered UB.&lt;/p&gt;
&lt;p&gt;In Rust 1.96.0 we fixed this, so this code was no longer UB. In this release we have updated the &lt;code&gt;ManuallyDrop&lt;/code&gt; documentation, providing a stable guarantee that this code will continue to not be UB in the future. See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/struct.ManuallyDrop.html#pre-196-interaction-with-box&quot;&gt;&lt;code&gt;ManuallyDrop&lt;/code&gt; docs&lt;/a&gt; and the related &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rfcs/3336-maybe-dangling.html&quot;&gt;RFC 3336&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;stabilized-apis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilized-apis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stabilized APIs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.str.html#method.substr_range&quot;&gt;&lt;code&gt;str::substr_range&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.slice.html#method.subslice_range&quot;&gt;&lt;code&gt;[T]::subslice_range&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/fmt/struct.NumBuffer.html&quot;&gt;&lt;code&gt;core::fmt::NumBuffer&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.usize.html#method.format_into&quot;&gt;&lt;code&gt;&amp;lt;{integer}&amp;gt;::format_into&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/process/struct.CommandArgs.html#impl-Send-for-CommandArgs%3C&amp;#x27;a%3E&quot;&gt;&lt;code&gt;Send/Sync for std::process::CommandArgs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_add&quot;&gt;&lt;code&gt;{fN}::algebraic_add&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_sub&quot;&gt;&lt;code&gt;{fN}::algebraic_sub&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_mul&quot;&gt;&lt;code&gt;{fN}::algebraic_mul&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_div&quot;&gt;&lt;code&gt;{fN}::algebraic_div&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_rem&quot;&gt;&lt;code&gt;{fN}::algebraic_rem&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#method.from_str_radix-4&quot;&gt;&lt;code&gt;NonZero&amp;lt;{integer}&amp;gt;::from_str_radix&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le&quot;&gt;&lt;code&gt;String::from_utf16le&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le_lossy&quot;&gt;&lt;code&gt;String::from_utf16le_lossy&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be&quot;&gt;&lt;code&gt;String::from_utf16be&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be_lossy&quot;&gt;&lt;code&gt;String::from_utf16be_lossy&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.slice.html#method.strip_circumfix&quot;&gt;&lt;code&gt;[T]::strip_circumfix&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/primitive.str.html#method.strip_circumfix&quot;&gt;&lt;code&gt;str::strip_circumfix&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut&quot;&gt;&lt;code&gt;Atomic&amp;lt;T&amp;gt;::from_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.get_mut_slice&quot;&gt;&lt;code&gt;Atomic&amp;lt;T&amp;gt;::get_mut_slice&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut_slice&quot;&gt;&lt;code&gt;Atomic&amp;lt;T&amp;gt;::from_mut_slice&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/range/legacy/index.html&quot;&gt;&lt;code&gt;std::range::legacy&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;other-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other changes&lt;/h3&gt;
&lt;p&gt;Check out everything that changed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/releases/tag/1.98.0&quot;&gt;Rust&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-198-2026-08-20&quot;&gt;Cargo&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-198&quot;&gt;Clippy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;contributors-to-1-98-0&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-98-0&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.98.0&lt;/h2&gt;
&lt;p&gt;Many people came together to create Rust 1.98.0. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.98.0/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.97.1</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/07/16/Rust-1.97.1/" type="text/html" title="Announcing Rust 1.97.1" />
        <published>2026-07-16T00:00:00+00:00</published>
        <updated>2026-07-16T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/07/16/Rust-1.97.1/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/07/16/Rust-1.97.1/">&lt;p&gt;The Rust team has published a new point release of Rust, 1.97.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via rustup, getting Rust 1.97.1 is as easy as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-97-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-97-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.97.1&lt;/h2&gt;
&lt;p&gt;Rust 1.97.1 fixes a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/159035&quot;&gt;miscompilation in an LLVM optimization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We have backported both an LLVM fix and a disable of the underlying change in Rust 1.97.0 of
Rust&#x27;s generated IR that increased the likelihood of this happening. However,
note that the underlying miscompilation has been present since at least Rust
1.87.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider
running your code&#x27;s CI or locally using the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly
channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you
might come across!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;contributors-to-1-97-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-97-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.97.1&lt;/h3&gt;
&lt;p&gt;Many people came together to create Rust 1.97.1. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.97.1/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.97.0</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/" type="text/html" title="Announcing Rust 1.97.0" />
        <published>2026-07-09T00:00:00+00:00</published>
        <updated>2026-07-09T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/">&lt;p&gt;The Rust team is happy to announce a new version of Rust, 1.97.0. Rust is a programming language empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via &lt;code&gt;rustup&lt;/code&gt;, you can get 1.97.0 with:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellsession&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt; rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website, and check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/releases.html#version-1970-2026-07-09&quot;&gt;detailed release notes for 1.97.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider updating locally to use the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-97-0-stable&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-97-0-stable&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.97.0 stable&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;symbol-mangling-v0-enabled-by-default&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#symbol-mangling-v0-enabled-by-default&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Symbol mangling v0 enabled by default&lt;/h3&gt;
&lt;p&gt;When Rust is compiled into object files and binaries, each item (functions,
statics, etc) must have a globally unique &quot;symbol&quot; identifying it. To avoid
conflicts when linking together different Rust programs, Rust mangles the
original name of items to include additional context such as the module path,
defining crate, generics, and more. Historically, this mangling was based on
the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://refspecs.linuxbase.org/cxxabi-1.86.html#mangling&quot;&gt;Itanium ABI&lt;/a&gt;,
also (sometimes) used by C++.&lt;/p&gt;
&lt;p&gt;The new mangling scheme resolves a number of drawbacks from the previous one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generic parameter instantiations preserve their values, rather than being tracked solely behind a hash&lt;/li&gt;
&lt;li&gt;Inconsistencies: not all parts used the Itanium ABI, meaning that custom demangling was still necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since Rust 1.59, the compiler has supported opting into a Rust-specific
mangling scheme via &lt;code&gt;-Csymbol-mangling-version&#x3D;v0&lt;/code&gt;. Since November 2025, this
scheme has been enabled by default on nightly, and 1.97 is now enabling it on
stable Rust. The legacy mangling scheme can only be enabled on nightly, and the
current plan is to fully remove it.&lt;/p&gt;
&lt;p&gt;See the previous &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/11/20/switching-to-v0-mangling-on-nightly/&quot;&gt;blog post&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;cargo-support-for-denying-warnings&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-support-for-denying-warnings&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Cargo support for denying warnings&lt;/h3&gt;
&lt;p&gt;It&#x27;s common practice to deny warnings in CI. Historically, doing so is
typically done through &lt;code&gt;RUSTFLAGS&#x3D;-Dwarnings&lt;/code&gt;. With Rust 1.97, Cargo controls
how warnings interact with build success: either silencing them (via &lt;code&gt;allow&lt;/code&gt;
level), rendering without failing (default, &lt;code&gt;warn&lt;/code&gt;), or denying them (via &lt;code&gt;deny&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;As a  result of Cargo configuration determining the behavior, using this
feature doesn&#x27;t invalidate the underlying build cache, meaning that it&#x27;s easy
to temporarily opt-in. For example, if warnings are adding unwanted noise while
working through fixing errors after a refactor, you can run
&lt;code&gt;CARGO_BUILD_WARNINGS&#x3D;allow cargo check&lt;/code&gt;, temporarily silencing them.&lt;/p&gt;
&lt;p&gt;In CI, jobs can instead set &lt;code&gt;CARGO_BUILD_WARNINGS&#x3D;deny&lt;/code&gt; to deny warnings. This
can be combined with &lt;code&gt;--keep-going&lt;/code&gt; to collect all errors and warnings rather
than stopping on the first failing package.&lt;/p&gt;
&lt;p&gt;See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/config.html#buildwarnings&quot;&gt;documentation&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;linker-output-no-longer-hidden-by-default&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#linker-output-no-longer-hidden-by-default&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Linker output no longer hidden by default&lt;/h3&gt;
&lt;p&gt;rustc invokes a linker on behalf of users. Historically, rustc has silenced
linker output by default if the link completes successfully. This can mask real
problems, though, so in Rust 1.97 we are enabling linker messages by default.
These are emitted as a warning lint, for example:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;warning: linker stderr: ignoring deprecated linker optimization setting &amp;#39;1&amp;#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;  |&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;  &#x3D; note: &#x60;#[warn(linker_messages)]&#x60; on by default&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Common linker messages that have been diagnosed as false positives or intentional behavior
are filtered out by rustc. Several defects have already been fixed as a result
of no longer hiding this output on nightly.&lt;/p&gt;
&lt;p&gt;Note that currently, &lt;code&gt;linker_messages&lt;/code&gt; is a special lint that is &lt;em&gt;not&lt;/em&gt; affected
by the &lt;code&gt;warnings&lt;/code&gt; lint group. This is intentional as rustc generally doesn&#x27;t
control linker output as precisely, and it&#x27;s not uncommon for output to only
appear on some platforms. If you are seeing what you think is a false positive
output from the linker, please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;file an issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To silence the warning in the mean time, you can configure the lint level to
allow. This can be done through &lt;code&gt;Cargo.toml&lt;/code&gt; by adding a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-lints-section&quot;&gt;lints section&lt;/a&gt; like this:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;lints&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;rust&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;linker_messages&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;allow&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id&#x3D;&quot;stabilized-apis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilized-apis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stabilized APIs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/iter/struct.RepeatN.html#impl-Default-for-RepeatN%3CA%3E&quot;&gt;&lt;code&gt;Default for RepeatN&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html#impl-Copy-for-FromBytesUntilNulError&quot;&gt;&lt;code&gt;Copy for ffi::FromBytesUntilNulError&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/154003&quot;&gt;&lt;code&gt;Send for std::fs::File&lt;/code&gt; on UEFI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_highest_one&quot;&gt;&lt;code&gt;&amp;lt;{integer}&amp;gt;::isolate_highest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_lowest_one&quot;&gt;&lt;code&gt;&amp;lt;{integer}&amp;gt;::isolate_lowest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.u32.html#method.highest_one&quot;&gt;&lt;code&gt;&amp;lt;{integer}&amp;gt;::highest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.u32.html#method.lowest_one&quot;&gt;&lt;code&gt;&amp;lt;{integer}&amp;gt;::lowest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.u32.html#method.bit_width&quot;&gt;&lt;code&gt;&amp;lt;{uN}&amp;gt;::bit_width&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_highest_one&quot;&gt;&lt;code&gt;NonZero&amp;lt;{integer}&amp;gt;::isolate_highest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_lowest_one&quot;&gt;&lt;code&gt;NonZero&amp;lt;{integer}&amp;gt;::isolate_lowest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.highest_one&quot;&gt;&lt;code&gt;NonZero&amp;lt;{integer}&amp;gt;::highest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.lowest_one&quot;&gt;&lt;code&gt;NonZero&amp;lt;{integer}&amp;gt;::lowest_one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.bit_width&quot;&gt;&lt;code&gt;NonZero&amp;lt;{uN}&amp;gt;::bit_width&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These previously stable APIs are now stable in const contexts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_control&quot;&gt;&lt;code&gt;char::is_control&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;other-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other changes&lt;/h3&gt;
&lt;p&gt;Check out everything that changed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/releases/tag/1.97.0&quot;&gt;Rust&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-197-2026-07-09&quot;&gt;Cargo&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-197&quot;&gt;Clippy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;contributors-to-1-97-0&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-97-0&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.97.0&lt;/h2&gt;
&lt;p&gt;Many people came together to create Rust 1.97.0. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.97.0/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.96.1</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/" type="text/html" title="Announcing Rust 1.96.1" />
        <published>2026-06-30T00:00:00+00:00</published>
        <updated>2026-06-30T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/">&lt;p&gt;The Rust team has published a new point release of Rust, 1.96.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via rustup, getting Rust 1.96.1 is as easy as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-96-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-96-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.96.1&lt;/h2&gt;
&lt;p&gt;Rust 1.96.1 fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/17131&quot;&gt;Missing retries / timeouts in Cargo&#x27;s HTTP client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/158214&quot;&gt;Miscompilation in a MIR optimization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It also &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/17140&quot;&gt;fixes&lt;/a&gt; three CVEs
affecting libssh2 (which is compiled into Cargo):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.cve.org/CVERecord?id&#x3D;CVE-2025-15661&quot;&gt;CVE-2025-15661&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.cve.org/CVERecord?id&#x3D;CVE-2026-55199&quot;&gt;CVE-2026-55199&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.cve.org/CVERecord?id&#x3D;CVE-2026-55200&quot;&gt;CVE-2026-55200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;contributors-to-1-96-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-96-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.96.1&lt;/h3&gt;
&lt;p&gt;Many people came together to create Rust 1.96.1. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.96.1/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.96.0</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/" type="text/html" title="Announcing Rust 1.96.0" />
        <published>2026-05-28T00:00:00+00:00</published>
        <updated>2026-05-28T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/">&lt;p&gt;The Rust team is happy to announce a new version of Rust, 1.96.0. Rust is a programming language empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via &lt;code&gt;rustup&lt;/code&gt;, you can get 1.96.0 with:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellsession&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt; rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website, and check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/releases.html#version-1960-2026-05-28&quot;&gt;detailed release notes for 1.96.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider updating locally to use the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-96-0-stable&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-96-0-stable&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.96.0 stable&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;new-range-types&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-range-types&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New &lt;code&gt;Range*&lt;/code&gt; types&lt;/h3&gt;
&lt;p&gt;Many users expect &lt;code&gt;Range&lt;/code&gt; and related &lt;code&gt;core::ops&lt;/code&gt; types to be &lt;code&gt;Copy&lt;/code&gt;, but this is not the case: they implement &lt;code&gt;Iterator&lt;/code&gt; directly, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#copy_iterator&quot;&gt;it is a footgun to implement both &lt;code&gt;Iterator&lt;/code&gt; and &lt;code&gt;Copy&lt;/code&gt; on the same type&lt;/a&gt; so this has been avoided. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rfcs/3550-new-range.html&quot;&gt;RFC3550&lt;/a&gt; proposed a set of replacement range types that implement &lt;code&gt;IntoIterator&lt;/code&gt; rather than &lt;code&gt;Iterator&lt;/code&gt;, meaning they can also be &lt;code&gt;Copy&lt;/code&gt;. The standard library portion of that RFC is now stable, introducing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;core::range::Range&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;core::range::RangeFrom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;core::range::RangeInclusive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Associated iterators&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A Rust version in the near future will also add &lt;code&gt;core::range::RangeFull&lt;/code&gt; and &lt;code&gt;core::range::RangeTo&lt;/code&gt; as re-exports from &lt;code&gt;core::ops&lt;/code&gt; (these do not implement &lt;code&gt;Iterator&lt;/code&gt; and already implement &lt;code&gt;Copy&lt;/code&gt;), and &lt;code&gt;core::range::legacy::*&lt;/code&gt; as the new home for the current ranges. Range syntax like &lt;code&gt;0..1&lt;/code&gt; still produces the legacy types for now, but will be updated to &lt;code&gt;core::range&lt;/code&gt; types in a future edition.&lt;/p&gt;
&lt;p&gt;With these stabilizations, it is now possible to store slice accessors in &lt;code&gt;Copy&lt;/code&gt; types without splitting &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt;:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;use&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; core&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;range&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;Range&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;derive&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;Clone&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Copy&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; struct&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Span&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;Range&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;usize&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;impl&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Span&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;    pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; of&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1 z-d-4&quot;&gt;self&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; s&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;str&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;str&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;        &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;s&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1 z-d-4&quot;&gt;self&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt;0&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The new &lt;code&gt;RangeInclusive&lt;/code&gt; also makes its fields public, unlike the legacy version which avoided exposing the exhausted iterator state. This isn&#x27;t a concern with the new type since it must be converted to begin iteration.&lt;/p&gt;
&lt;p&gt;Library authors should consider making use of &lt;code&gt;impl RangeBounds&lt;/code&gt; in public API, which accepts both legacy and new range types. If a concrete type is needed, prefer using new ranges as this will eventually become the default.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;assert-matching-patterns&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#assert-matching-patterns&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Assert matching patterns&lt;/h3&gt;
&lt;p&gt;The new macros &lt;code&gt;assert_matches!&lt;/code&gt; and &lt;code&gt;debug_assert_matches!&lt;/code&gt; check that a value matches a given pattern, panicking with a &lt;code&gt;Debug&lt;/code&gt; representation of the value otherwise. These are essentially the same as &lt;code&gt;assert!(matches!(..))&lt;/code&gt; and &lt;code&gt;debug_assert!(matches!(..))&lt;/code&gt;, but the printed value improves the possibility of diagnosing the failure.&lt;/p&gt;
&lt;p&gt;These new macros have not been added to the standard prelude, because they would collide with popular third-party crates that provide macros with the same name. Instead, they should be manually imported from &lt;code&gt;core&lt;/code&gt; or &lt;code&gt;std&lt;/code&gt; before use.&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;use&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; core&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span&gt;assert_matches&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;///&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; [Random Number](https://xkcd.com/221/)&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; get_random_number&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; u32&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; chosen by a fair dice roll.&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; guaranteed to be random.&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt;    4&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;    assert_matches!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;get_random_number&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt; 1&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;..&#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-16 z-d-10&quot;&gt;6&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id&#x3D;&quot;changes-to-webassembly-targets&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#changes-to-webassembly-targets&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Changes to WebAssembly targets&lt;/h3&gt;
&lt;p&gt;WebAssembly targets no longer pass &lt;code&gt;--allow-undefined&lt;/code&gt; to the linker which means that undefined symbols when linking are now a linker error instead of being converted to WebAssembly imports from the &lt;code&gt;&quot;env&quot;&lt;/code&gt; module. This change prevents modules from linking unless all linking-related symbols are defined to catch bugs earlier and prevent accidental issues with symbol naming or similar.&lt;/p&gt;
&lt;p&gt;Undefined linking-related symbols are often indicative of build-time related bugs or misconfiguration. If, however, the old behavior is intended then it can be re-enabled with &lt;code&gt;RUSTFLAGS&#x3D;-Clink-arg&#x3D;--allow-undefined&lt;/code&gt; or by editing the source code and using &lt;code&gt;#[link(wasm_import_module &#x3D; &quot;env&quot;)]&lt;/code&gt; on the block defining the symbol.&lt;/p&gt;
&lt;p&gt;This change was &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/04/04/changes-to-webassembly-targets-and-handling-undefined-symbols/&quot;&gt;previously announced&lt;/a&gt; on this blog, and now takes effect in Rust 1.96.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;stabilized-apis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilized-apis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stabilized APIs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/macro.assert_matches.html&quot;&gt;&lt;code&gt;assert_matches!&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html&quot;&gt;&lt;code&gt;debug_assert_matches!&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E&quot;&gt;&lt;code&gt;From&amp;lt;T&amp;gt; for AssertUnwindSafe&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E&quot;&gt;&lt;code&gt;From&amp;lt;T&amp;gt; for LazyCell&amp;lt;T, F&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E&quot;&gt;&lt;code&gt;From&amp;lt;T&amp;gt; for LazyLock&amp;lt;T, F&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html&quot;&gt;&lt;code&gt;core::range::RangeToInclusive&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeFrom.html&quot;&gt;&lt;code&gt;core::range::RangeFrom&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeFromIter.html&quot;&gt;&lt;code&gt;core::range::RangeFromIter&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.Range.html&quot;&gt;&lt;code&gt;core::range::Range&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeIter.html&quot;&gt;&lt;code&gt;core::range::RangeIter&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;two-cargo-advisories&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#two-cargo-advisories&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Two Cargo advisories&lt;/h3&gt;
&lt;p&gt;Rust 1.96 contains fixes for two vulnerabilities for users of third-party registries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/05/25/cve-2026-5223/&quot;&gt;CVE-2026-5223&lt;/a&gt; is a &lt;strong&gt;medium&lt;/strong&gt; severity vulnerability regarding extraction of crate tarballs with symlinks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/05/25/cve-2026-5222/&quot;&gt;CVE-2026-5222&lt;/a&gt; is a &lt;strong&gt;low&lt;/strong&gt; severity vulnerability regarding authentication with normalized URLs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Users of crates.io are &lt;strong&gt;not affected&lt;/strong&gt; by either vulnerability.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;other-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other changes&lt;/h3&gt;
&lt;p&gt;Check out everything that changed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/releases/tag/1.96.0&quot;&gt;Rust&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-196-2026-05-28&quot;&gt;Cargo&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-196&quot;&gt;Clippy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;contributors-to-1-96-0&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-96-0&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.96.0&lt;/h2&gt;
&lt;p&gt;Many people came together to create Rust 1.96.0. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.96.0/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.95.0</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/04/16/Rust-1.95.0/" type="text/html" title="Announcing Rust 1.95.0" />
        <published>2026-04-16T00:00:00+00:00</published>
        <updated>2026-04-16T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/04/16/Rust-1.95.0/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/04/16/Rust-1.95.0/">&lt;p&gt;The Rust team is happy to announce a new version of Rust, 1.95.0. Rust is a programming language empowering everyone to build reliable and efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via &lt;code&gt;rustup&lt;/code&gt;, you can get 1.95.0 with:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellsession&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt; rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website, and check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/releases.html#version-1950-2026-04-16&quot;&gt;detailed release notes for 1.95.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to help us out by testing future releases, you might consider updating locally to use the beta channel (&lt;code&gt;rustup default beta&lt;/code&gt;) or the nightly channel (&lt;code&gt;rustup default nightly&lt;/code&gt;). Please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/new/choose&quot;&gt;report&lt;/a&gt; any bugs you might come across!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-95-0-stable&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-95-0-stable&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.95.0 stable&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;cfg-select&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cfg-select&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;cfg_select!&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Rust 1.95 introduces a
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/macro.cfg_select.html&quot;&gt;&lt;code&gt;cfg_select!&lt;/code&gt;&lt;/a&gt;
macro that acts roughly similar to a compile-time &lt;code&gt;match&lt;/code&gt; on &lt;code&gt;cfg&lt;/code&gt;s. This
fulfills the same purpose as the popular
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/crates/cfg-if&quot;&gt;&lt;code&gt;cfg-if&lt;/code&gt;&lt;/a&gt; crate, although with a different
syntax. &lt;code&gt;cfg_select!&lt;/code&gt; expands to the right-hand side of the first arm whose
configuration predicate evaluates to &lt;code&gt;true&lt;/code&gt;. Some examples:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;cfg_select!&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    unix&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; foo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; unix specific functionality &lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;*/&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    target_pointer_width&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;32&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; foo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; non-unix, 32-bit functionality &lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;*/&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; foo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; fallback implementation &lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;*/&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;let&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; is_windows_str&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; cfg_select!&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;not windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id&#x3D;&quot;if-let-guards-in-matches&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#if-let-guards-in-matches&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
if-let guards in matches&lt;/h3&gt;
&lt;p&gt;Rust 1.88 stabilized &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/06/26/Rust-1.88.0/#let-chains&quot;&gt;let chains&lt;/a&gt;. Rust
1.95 brings that capability into match expressions, allowing for conditionals
based on pattern matching.&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-11&quot;&gt;match&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; value&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;    Some&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-11&quot;&gt; if&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; let&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Ok&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; compute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;        //&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; Both &#x60;x&#x60; and &#x60;y&#x60; are available here&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;        println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;, &lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that the compiler will not currently consider the patterns matched in &lt;code&gt;if let&lt;/code&gt; guards as part of the exhaustiveness evaluation of the overall match, just
like &lt;code&gt;if&lt;/code&gt; guards.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;stabilized-apis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilized-apis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stabilized APIs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;MaybeUninit&amp;lt;[T; N]&amp;gt;: From&amp;lt;[MaybeUninit&amp;lt;T&amp;gt;; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;MaybeUninit&amp;lt;[T; N]&amp;gt;: AsRef&amp;lt;[MaybeUninit&amp;lt;T&amp;gt;; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;MaybeUninit&amp;lt;[T; N]&amp;gt;: AsRef&amp;lt;[MaybeUninit&amp;lt;T&amp;gt;]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;MaybeUninit&amp;lt;[T; N]&amp;gt;: AsMut&amp;lt;[MaybeUninit&amp;lt;T&amp;gt;; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;MaybeUninit&amp;lt;[T; N]&amp;gt;: AsMut&amp;lt;[MaybeUninit&amp;lt;T&amp;gt;]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3CMaybeUninit%3C%5BT;+N%5D%3E%3E-for-%5BMaybeUninit%3CT%3E;+N%5D&quot;&gt;&lt;code&gt;[MaybeUninit&amp;lt;T&amp;gt;; N]: From&amp;lt;MaybeUninit&amp;lt;[T; N]&amp;gt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E;+N%5D%3E-for-Cell%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;Cell&amp;lt;[T; N]&amp;gt;: AsRef&amp;lt;[Cell&amp;lt;T&amp;gt;; N]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT;+N%5D%3E&quot;&gt;&lt;code&gt;Cell&amp;lt;[T; N]&amp;gt;: AsRef&amp;lt;[Cell&amp;lt;T&amp;gt;]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT%5D%3E&quot;&gt;&lt;code&gt;Cell&amp;lt;[T]&amp;gt;: AsRef&amp;lt;[Cell&amp;lt;T&amp;gt;]&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-TryFrom%3Cu128%3E-for-bool&quot;&gt;&lt;code&gt;bool: TryFrom&amp;lt;{integer}&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.update&quot;&gt;&lt;code&gt;AtomicPtr::update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.try_update&quot;&gt;&lt;code&gt;AtomicPtr::try_update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.update&quot;&gt;&lt;code&gt;AtomicBool::update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.try_update&quot;&gt;&lt;code&gt;AtomicBool::try_update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.update&quot;&gt;&lt;code&gt;AtomicIn::update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.try_update&quot;&gt;&lt;code&gt;AtomicIn::try_update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.update&quot;&gt;&lt;code&gt;AtomicUn::update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.try_update&quot;&gt;&lt;code&gt;AtomicUn::try_update&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/macro.cfg_select.html&quot;&gt;&lt;code&gt;cfg_select!&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/index.html&quot;&gt;&lt;code&gt;mod core::range&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeInclusive.html&quot;&gt;&lt;code&gt;core::range::RangeInclusive&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/range/struct.RangeInclusiveIter.html&quot;&gt;&lt;code&gt;core::range::RangeInclusiveIter&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/hint/fn.cold_path.html&quot;&gt;&lt;code&gt;core::hint::cold_path&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked&quot;&gt;&lt;code&gt;&amp;lt;*const T&amp;gt;::as_ref_unchecked&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked-1&quot;&gt;&lt;code&gt;&amp;lt;*mut T&amp;gt;::as_ref_unchecked&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_mut_unchecked&quot;&gt;&lt;code&gt;&amp;lt;*mut T&amp;gt;::as_mut_unchecked&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.push_mut&quot;&gt;&lt;code&gt;Vec::push_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.insert_mut&quot;&gt;&lt;code&gt;Vec::insert_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_front_mut&quot;&gt;&lt;code&gt;VecDeque::push_front_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_back_mut&quot;&gt;&lt;code&gt;VecDeque::push_back_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.insert_mut&quot;&gt;&lt;code&gt;VecDeque::insert_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_front_mut&quot;&gt;&lt;code&gt;LinkedList::push_front_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_back_mut&quot;&gt;&lt;code&gt;LinkedList::push_back_mut&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.dangling_ptr&quot;&gt;&lt;code&gt;Layout::dangling_ptr&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat&quot;&gt;&lt;code&gt;Layout::repeat&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat_packed&quot;&gt;&lt;code&gt;Layout::repeat_packed&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend_packed&quot;&gt;&lt;code&gt;Layout::extend_packed&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These previously stable APIs are now stable in const contexts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/std/fmt/fn.from_fn.html&quot;&gt;&lt;code&gt;fmt::from_fn&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_break&quot;&gt;&lt;code&gt;ControlFlow::is_break&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_continue&quot;&gt;&lt;code&gt;ControlFlow::is_continue&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;destabilized-json-target-specs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#destabilized-json-target-specs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Destabilized JSON target specs&lt;/h3&gt;
&lt;p&gt;Rust 1.95 removes support on stable for passing a custom target specification
to &lt;code&gt;rustc&lt;/code&gt;. This should &lt;strong&gt;not&lt;/strong&gt; affect any Rust users using a fully stable
toolchain, as building the standard library (including just &lt;code&gt;core&lt;/code&gt;) already
required using nightly-only features.&lt;/p&gt;
&lt;p&gt;We&#x27;re also gathering use cases for custom targets on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/151528&quot;&gt;tracking issue&lt;/a&gt;
as we consider whether some form of this feature should eventually be stabilized.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;other-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other changes&lt;/h3&gt;
&lt;p&gt;Check out everything that changed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/releases/tag/1.95.0&quot;&gt;Rust&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-195-2026-04-16&quot;&gt;Cargo&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-195&quot;&gt;Clippy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;contributors-to-1-95-0&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-95-0&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.95.0&lt;/h2&gt;
&lt;p&gt;Many people came together to create Rust 1.95.0. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.95.0/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Rust 1.94.1</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/03/26/1.94.1-release/" type="text/html" title="Announcing Rust 1.94.1" />
        <published>2026-03-26T00:00:00+00:00</published>
        <updated>2026-03-26T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/03/26/1.94.1-release/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/03/26/1.94.1-release/">&lt;p&gt;The Rust team has published a new point release of Rust, 1.94.1. Rust is a
programming language that is empowering everyone to build reliable and
efficient software.&lt;/p&gt;
&lt;p&gt;If you have a previous version of Rust installed via rustup, getting Rust 1.94.1 is as easy as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;rustup update stable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/install.html&quot;&gt;get &lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt; from the appropriate page on our website.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-in-1-94-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-in-1-94-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s in 1.94.1&lt;/h2&gt;
&lt;p&gt;Rust 1.94.1 resolves three regressions that were introduced in the 1.94.0 release.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153634&quot;&gt;Fix &lt;code&gt;std::thread::spawn&lt;/code&gt; on wasm32-wasip1-threads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153491&quot;&gt;Remove new methods added to &lt;code&gt;std::os::windows::fs::OpenOptionsExt&lt;/code&gt;&lt;/a&gt;
The new methods were unstable, but the trait itself is not sealed and so
cannot be extended with non-default methods.&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/pull/16685&quot;&gt;Clippy: fix ICE in &lt;code&gt;match_same_arms&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16787&quot;&gt;Cargo: downgrade curl-sys to 0.4.83&lt;/a&gt;
This fixes certificate validation error for some users on some versions of
FreeBSD. See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16357&quot;&gt;this issue&lt;/a&gt;
for more details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And a security fix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16769&quot;&gt;Cargo: Update tar to 0.4.45&lt;/a&gt;
This resolves &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.cve.org/CVERecord?id&#x3D;CVE-2026-33055&quot;&gt;CVE-2026-33055&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.cve.org/CVERecord?id&#x3D;CVE-2026-33056&quot;&gt;CVE-2026-33056&lt;/a&gt;. Users of crates.io are not affected.
See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/03/21/cve-2026-33056/&quot;&gt;blog&lt;/a&gt; for more details.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;contributors-to-1-94-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#contributors-to-1-94-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Contributors to 1.94.1&lt;/h3&gt;
&lt;p&gt;Many people came together to create Rust 1.94.1. We couldn&#x27;t have done it without all of you. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://thanks.rust-lang.org/rust/1.94.1/&quot;&gt;Thanks!&lt;/a&gt;&lt;/p&gt;
</content>

        <author>
            <name>The Rust Release Team</name>
        </author>
    </entry>
</feed>
