<?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/" version="0.1.0">Rust Blog</generator>
    <link href="https://blog.rust-lang.org/feed.xml" rel="self" type="application/atom+xml" />
    <link href="https://blog.rust-lang.org/" rel="alternate" type="text/html" />
    <id>https://blog.rust-lang.org/</id>
    <title>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-05-18T20:41:00+00:00</updated>

    
    <entry>
        <title>Project goals update — April 2026 (end of 2025H2)</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/" type="text/html" title="Project goals update — April 2026 (end of 2025H2)" />
        <published>2026-05-18T00:00:00+00:00</published>
        <updated>2026-05-18T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/">&lt;p&gt;The 2025H2 Project Goal period has now concluded. Over these months, the Rust Project pursued &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/goals.html&quot;&gt;41 Project Goals&lt;/a&gt;, 13 of which were designated as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/goals.html#flagship-goals&quot;&gt;Flagship Goals&lt;/a&gt;. This post contains curated updates on our progress since the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/01/05/project-goals-2025-december-update/&quot;&gt;last post&lt;/a&gt; and the final status for each of the goals (many of which continue as part of the 2026 period). Full details for any particular goal are available in its &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues?q&#x3D;is%3Aissue%20label%3Aex-2025h2&quot;&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who contributed! &amp;lt;3&lt;/p&gt;
&lt;h2 id&#x3D;&quot;table-of-contents&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#table-of-contents&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#flagship-beyond-the&quot;&gt;Flagship: Beyond the &lt;code&gt;&amp;amp;&lt;/code&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#continue-experimentation-with-pin-ergonomics&quot;&gt;Continue Experimentation with Pin Ergonomics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#design-a-language-feature-to-solve-field-projections&quot;&gt;Design a language feature to solve Field Projections&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#reborrow-traits&quot;&gt;Reborrow traits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#flagship-flexible-fast-er-compilation&quot;&gt;Flagship: Flexible, fast(er) compilation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#build-std&quot;&gt;build-std&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#production-ready-cranelift-backend&quot;&gt;Production-ready cranelift backend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#promoting-parallel-front-end&quot;&gt;Promoting Parallel Front End&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#relink-don-t-rebuild&quot;&gt;Relink don&#x27;t Rebuild&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#flagship-higher-level-rust&quot;&gt;Flagship: Higher-level Rust&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#ergonomic-ref-counting-rfc-decision-and-preview&quot;&gt;Ergonomic ref-counting: RFC decision and preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#stabilize-cargo-script&quot;&gt;Stabilize cargo-script&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#flagship-unblocking-dormant-traits&quot;&gt;Flagship: Unblocking dormant traits&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#evolving-trait-hierarchies&quot;&gt;Evolving trait hierarchies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#in-place-initialization&quot;&gt;In-place initialization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#next-generation-trait-solver&quot;&gt;Next-generation trait solver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#stabilizable-polonius-support-on-nightly&quot;&gt;Stabilizable Polonius support on nightly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#other-goal-updates&quot;&gt;Other goal updates&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#add-a-team-charter-for-rustdoc-team&quot;&gt;Add a team charter for rustdoc team&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#borrow-checking-in-a-mir-formality&quot;&gt;Borrow checking in a-mir-formality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#c-rust-interop-problem-space-mapping&quot;&gt;C++/Rust Interop Problem Space Mapping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#comprehensive-niche-checks-for-rust&quot;&gt;Comprehensive niche checks for Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#const-generics&quot;&gt;Const Generics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#continue-resolving-cargo-semver-checks-blockers-for-merging-into-cargo&quot;&gt;Continue resolving &lt;code&gt;cargo-semver-checks&lt;/code&gt; blockers for merging into cargo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#develop-the-capabilities-to-keep-the-fls-up-to-date&quot;&gt;Develop the capabilities to keep the FLS up to date&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#emit-retags-in-codegen&quot;&gt;Emit Retags in Codegen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#expand-the-rust-reference-to-specify-more-aspects-of-the-rust-language&quot;&gt;Expand the Rust Reference to specify more aspects of the Rust language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#finish-the-libtest-json-output-experiment&quot;&gt;Finish the libtest json output experiment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#finish-the-std-offload-module&quot;&gt;Finish the std::offload module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#getting-rust-for-linux-into-stable-rust-compiler-features&quot;&gt;Getting Rust for Linux into stable Rust: compiler features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#getting-rust-for-linux-into-stable-rust-language-features&quot;&gt;Getting Rust for Linux into stable Rust: language features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#implement-open-api-namespace-support&quot;&gt;Implement Open API Namespace Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#mir-move-elimination&quot;&gt;MIR move elimination&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#prototype-a-new-set-of-cargo-plumbing-commands&quot;&gt;Prototype a new set of Cargo &quot;plumbing&quot; commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#prototype-cargo-build-analysis&quot;&gt;Prototype Cargo build analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#reflection-and-comptime&quot;&gt;reflection and comptime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#rework-cargo-build-dir-layout&quot;&gt;Rework Cargo Build Dir Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#run-more-tests-for-gcc-backend-in-the-rust-s-ci&quot;&gt;Run more tests for GCC backend in the Rust&#x27;s CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#rust-stabilization-of-memorysanitizer-and-threadsanitizer-support&quot;&gt;Rust Stabilization of MemorySanitizer and ThreadSanitizer Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#rust-vision-document&quot;&gt;Rust Vision Document&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#rustc-perf-improvements&quot;&gt;rustc-perf improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#stabilize-public-private-dependencies&quot;&gt;Stabilize public/private dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#stabilize-rustdoc-doc-cfg-feature&quot;&gt;Stabilize rustdoc &lt;code&gt;doc_cfg&lt;/code&gt; feature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#sve-and-sme-on-aarch64&quot;&gt;SVE and SME on AArch64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#type-system-documentation&quot;&gt;Type System Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/18/project-goals-2026-04/#unsafe-fields&quot;&gt;Unsafe Fields&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id&#x3D;&quot;flagship-beyond-the&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#flagship-beyond-the&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Flagship: Beyond the &lt;code&gt;&amp;amp;&lt;/code&gt;&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;continue-experimentation-with-pin-ergonomics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#continue-experimentation-with-pin-ergonomics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/389&quot;&gt;Continue Experimentation with Pin Ergonomics&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/frank-king&quot;&gt;Frank King&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/traviscross&quot;&gt;TC&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/pin-ergonomics.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;3 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/frank-king&quot;&gt;Frank King&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/389#issuecomment-3963321984&quot;&gt;comment from 2026-02-26&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(Just come back from the Spring Festival)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(locally, no PR yet): design and implement the borrow checking algorithms of &lt;code&gt;&amp;amp;pin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reviewed &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144537&quot;&gt;Add &lt;code&gt;Drop::pin_drop&lt;/code&gt; for pinned drops&lt;/a&gt;, to update the submodule &lt;code&gt;book&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reviewed &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149130&quot;&gt;Implement coercions between &lt;code&gt;&amp;amp;pin (mut|const) T&lt;/code&gt; and &lt;code&gt;&amp;amp;(mut) T&lt;/code&gt; when &lt;code&gt;T: Unpin&lt;/code&gt;&lt;/a&gt;, to do some refactors according to the reviewed messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/frank-king&quot;&gt;Frank King&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/389#issuecomment-4064499322&quot;&gt;comment from 2026-03-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Merged &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149130&quot;&gt;Implement coercions between &lt;code&gt;&amp;amp;pin (mut|const) T&lt;/code&gt; and &lt;code&gt;&amp;amp;(mut) T&lt;/code&gt; when &lt;code&gt;T: Unpin&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Opened draft PR &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153693&quot;&gt;Implement borrowck for &lt;code&gt;&amp;amp;pin mut|const $place&lt;/code&gt;&lt;/a&gt;. The implementation needs to be refined and self-reviewed before the community reviews.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/frank-king&quot;&gt;Frank King&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/389#issuecomment-4258655696&quot;&gt;comment from 2026-04-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Self-reviewed &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153693&quot;&gt;Implement borrowck for &lt;code&gt;&amp;amp;pin mut|const $place&lt;/code&gt;&lt;/a&gt;. Found that the current approach of handling pinned borrows may be incorrect, as it failed to distinguish a pinned borrow from a coercion of a normal-to-pinned reference. The latter doesn&#x27;t prevent a &lt;code&gt;T: Unpin&lt;/code&gt; type from being moved, but the former does, which breaks the pin coercion test.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;design-a-language-feature-to-solve-field-projections&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#design-a-language-feature-to-solve-field-projections&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390&quot;&gt;Design a language feature to solve Field Projections&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/field-projections.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;5 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3703190328&quot;&gt;comment from 2026-01-01&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;At the beginning of December, we set out to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3621913656&quot;&gt;answer five important questions&lt;/a&gt; regarding the virtual places approach. We discussed four questions and arrived at answers for three.
&lt;ul&gt;
&lt;li&gt;The first question we looked at was question 3 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3644702112&quot;&gt;Canonical Projections&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Next we looked at question 4 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3659055067&quot;&gt;Non-Indirected Containers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;As the final question we answered, we looked at question 1 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3677624396&quot;&gt;Field-by-Field Projections vs One-Shot Projections&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;At the moment, we are investigating question 2 and I wrote a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://bennolossin.github.io/blog/field-projections/virtual-places-and-borrowck.html&quot;&gt;blog post&lt;/a&gt; with a potential solution that still needs feedback.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;We started a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3690808729&quot;&gt;Wiki Project&lt;/a&gt; to consolidate our knowledge in one place.
&lt;ul&gt;
&lt;li&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/beyond-refs/pull/9&quot;&gt;implemented an algorithm&lt;/a&gt; to determine the type of a place expression.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Our plan is to continue this project goal in the next goal period.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3796971577&quot;&gt;comment from 2026-01-25&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Earlier this month, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Nadrieril&quot;&gt;Nadrieril&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dingxiangfei2009&quot;&gt;Ding Xiang Fei&lt;/a&gt; and I held a meeting on autoref and method resolution in a world with field projections. This meeting resulted in a new page for the wiki on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/beyond-refs/autoref.html&quot;&gt;autoref&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-3977436014&quot;&gt;comment from 2026-02-28&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The first pull request of the lang experiment has just been merged: rust-lang/rust#152730&lt;/p&gt;
&lt;p&gt;This PR enables the use of the &lt;code&gt;field_of!&lt;/code&gt; macro to obtain a unique type for each field of a struct, enum variant, tuple, or union. We call these types field representing types (FRTs). When the base type is a struct that is not &lt;code&gt;repr(packed)&lt;/code&gt;, only contains &lt;code&gt;Sized&lt;/code&gt; fields, this type automatically implements the &lt;code&gt;Field&lt;/code&gt; trait that exposes some information about the field to the type system. The offset in bytes from the start of the struct, the type of the field and the type of the base type.&lt;/p&gt;
&lt;p&gt;The feature is still incomplete and highly experimental. We also want to tackle the limitations in future PRs. For the moment this is enough to give us the ability to experiment with library versions of field projections and write functions that are generic over the fields of structs. For example one can write code like this:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;rust&quot;&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;/span&gt;&lt;span&gt;feature&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;field_projections&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-keyword&quot;&gt;use&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt; std&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt;field&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Field&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; field_of&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-keyword&quot;&gt;use&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt; std&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span&gt;ptr&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-keyword&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_ref&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Field&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt; F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Type&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-punctuation z-definition z-comment z-comment&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; SAFETY: the &#x60;Field&#x60; trait guarantees that this is sound.&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;*&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt;ptr&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;from_ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;byte_add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt;F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-constant z-other&quot;&gt;OFFSET&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;cast&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&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-storage z-type&quot;&gt;struct&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Struct&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-variable&quot;&gt;    field&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&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-variable&quot;&gt;    other&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&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&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-keyword&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&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-storage z-type&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; s&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Struct&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; field&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-constant z-numeric&quot;&gt; 42&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; other&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-constant z-numeric&quot;&gt; 24&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-storage z-type&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; r&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;s&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-storage z-type&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; field&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_ref&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;_&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; field_of!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Struct&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; field&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&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-storage z-type&quot;&gt;    let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; other&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_ref&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;_&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; field_of!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Struct&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; other&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&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-entity z-name z-function&quot;&gt;    println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;field: &lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;field&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-comment z-comment&quot;&gt; //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; prints 42&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;    println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;other: &lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;other&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-comment z-comment&quot;&gt; //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; prints 24&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;A very important feature of the types returned by &lt;code&gt;field_of!&lt;/code&gt; is that you can implement traits for them if you own the base type. This allows anointing fields with information by extending the &lt;code&gt;Field&lt;/code&gt; trait. For example, this allows encoding the property of being a structurally pinned field:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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-keyword&quot;&gt;use&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt; std&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-namespace&quot;&gt;pin&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Pin&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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; trait&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; PinnableField&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Field&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-storage z-type&quot;&gt;    type&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    where&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Type&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_mut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    where&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Type&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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 class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_pinned&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; F&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span&gt; &amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt; as&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; PinnableField&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;where&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;    F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; PinnableField&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&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&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;    F&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;project_mut&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;r&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;We can then implement this extra trait for all of the fields of our struct (and automate that with a proc-macro):&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt; impl&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; PinnableField&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; field_of!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Struct&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; field&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-storage z-type&quot;&gt;    type&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&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&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_mut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    where&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Type&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-storage z-type&quot;&gt;        let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt; unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;into_inner_unchecked&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;base&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-keyword z-operator&quot;&gt;        &amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt;mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;.&lt;/span&gt;&lt;span&gt;field&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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt; impl&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; PinnableField&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; field_of!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Struct&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; other&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-storage z-type&quot;&gt;    type&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; u32&lt;/span&gt;&lt;span&gt;&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-punctuation z-definition z-comment z-comment&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; u32 is &#x60;Unpin&#x60;, so this isn&amp;#39;t doing anything special, but it highlights the pattern.&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-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; project_mut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt; mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; -&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt; Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;StructuralRefMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt;    where&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Type&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-variable z-language&quot;&gt;        Self&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span&gt; &amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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-storage z-type&quot;&gt;        let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword&quot;&gt; unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;into_inner_unchecked&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;base&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-keyword&quot;&gt;        unsafe&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Pin&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;new_unchecked&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-storage z-modifier&quot;&gt;mut&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; base&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;.&lt;/span&gt;&lt;span&gt;other&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&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can safely obtain a pinned mutable reference to &lt;code&gt;other&lt;/code&gt; and a normal mutable reference to &lt;code&gt;field&lt;/code&gt; by calling the &lt;code&gt;project_pinned&lt;/code&gt; function and supplying the correct FRT.&lt;/p&gt;
&lt;p&gt;(&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://play.rust-lang.org/?version&#x3D;nightly&amp;amp;mode&#x3D;debug&amp;amp;edition&#x3D;2024&amp;amp;gist&#x3D;5b9494bd8f88aa4adf054f70abe16d9d&quot;&gt;playground link&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-4099385451&quot;&gt;comment from 2026-03-20&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 id&#x3D;&quot;plan-for-2026&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#plan-for-2026&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Plan for 2026&lt;/h3&gt;
&lt;p&gt;We have an updated plan for this goal in 2026 consisting of three major steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a-mir-formality&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;Implementation,&lt;/li&gt;
&lt;li&gt;Experimentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of their subtasks depend on other subtasks for other steps. You can find the details in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/145383&quot;&gt;updated tracking issue&lt;/a&gt;. Here is a short rundown of each:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;a-mir-formality&lt;/code&gt;:&lt;/strong&gt; we want to create a formal model of the borrow checker changes we&#x27;re proposing to ensure correctness. We also want to create a document explaining our model in a more human-friendly language. To really get started with this, we&#x27;re blocked on the new expression based syntax in development by Niko.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt; at the same time, we can start implementing more parts in the compiler. We will continue to improve FRTs, while keeping in mind that we might remove them if they end up being unnecessary. They still pose for a useful feature, but they might be orthogonal to field projections. We plan to make small and incremental changes, starting with library additions. We also want to begin exploring potential desugarings, for which we will add some manual and low level macros. When we have that figured out, we can fast-track syntax changes. When we have a sufficiently mature formal model of the borrow checker integration, we will port it to the compiler. After further evaluation, we can think about removing the &lt;code&gt;incomplete_feature&lt;/code&gt; flag.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Experimentation:&lt;/strong&gt; after each compiler or standard library change, we look to several projects to stress-test our ideas in real code. I will take care of experimentation in the Linux kernel, while &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt; will be taking a look at testing field projections with &lt;code&gt;crubit&lt;/code&gt;. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt; also has expressed eagerness of introducing them in the standard library; I will coordinate with him and the rest of t-libs-api to experiment there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390#issuecomment-4178384770&quot;&gt;comment from 2026-04-02&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yesterday, we held a t-lang design meeting on our current approach. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Nadrieril&quot;&gt;Nadrieril&lt;/a&gt; and I authored a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg&quot;&gt;design document&lt;/a&gt; with the feedback of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dingxiangfei2009&quot;&gt;Ding Xiang Fei&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nbdd0121&quot;&gt;Gary Guo&lt;/a&gt;. In this document, we provided the motivation for this feature, what the look and feel of a solution fitting into the existing features of Rust is, and a comprehensive + compact introduction to our current approach based on virtual places.&lt;/p&gt;
&lt;p&gt;The general reception was extremely positive. To give some concrete quotes from the meeting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Josh:
&lt;blockquote&gt;
&lt;p&gt;I adore this! I love how orthogonal it is, and how impactful and universal it is. I anticipate this becoming a beloved, &lt;em&gt;pervasive&lt;/em&gt; feature of Rust.&lt;/p&gt;
&lt;p&gt;Places and projection seem important enough to me that they&#x27;re worth giving one of our precious remaining ASCII sigils to, and &lt;code&gt;@&lt;/code&gt; is nicely evocative of a place (something is &lt;em&gt;at&lt;/em&gt; a place). So to the extent the final syntax benefits from a sigil, :+1: for giving this &lt;code&gt;@&lt;/code&gt;. (See some feedback below on the details, though.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;TC:
&lt;blockquote&gt;
&lt;p&gt;Love it. High concept. As I said in the last meeting:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I particularly like language features that reduce the need for library surface area, and this is one of those.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are, of course, many details to resolve and understand further, e.g., with respect to migration issues, interaction with &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;async&lt;/code&gt;, and other effect-like things, etc. I&#x27;m looking forward to seeing the formalization work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;tmandry:
&lt;blockquote&gt;
&lt;p&gt;What I love about this direction is how effectively it builds on what Rust already has. I love to see designs that reinforce our existing concepts while pushing them in directions that make them more expressive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Jack:
&lt;blockquote&gt;
&lt;p&gt;Whoo boy. This is great. There&#x27;s so much here that I&#x27;m not exactly sure where to begin and what to comment on. I think this is the type of thing that we will only &lt;em&gt;really&lt;/em&gt; be able to figure out the nitty gritty details and ergonomics only after some amount of experimentation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are a few takeaways from this meeting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mark &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#From-author-Concerns-about-moving-forward&quot;&gt;raised the concern&lt;/a&gt; that t-libs should be more involved in reviewing the experimental traits that we intend to add. Ensuring that we don&#x27;t accidentally stabilize or expose some behavior, have sufficient documentation on our experimental traits, and that t-libs is in the loop of this feature in general.
&lt;ul&gt;
&lt;li&gt;Mark offered to review PRs and I will be tagging him in those.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Jack &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Jack&quot;&gt;raised the concern&lt;/a&gt; that increasing the cognitive load for the 95% use-case should be avoided. Making the right choice between &lt;code&gt;@&lt;/code&gt; and &lt;code&gt;&amp;amp;&lt;/code&gt; might be challenging for users.
&lt;ul&gt;
&lt;li&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#From-author-Ergonomics-of-raw-pointers&quot;&gt;discussed this point more in the meeting&lt;/a&gt; and concluded with that we need to do some experimentation, possibly utilizing the user research team. We will of course keep this in mind and revisit it later when we have a partially working implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TC requested that we publish our fine-grained design axioms, essentially the list of things we go through when considering a modification of our proposal.
&lt;ul&gt;
&lt;li&gt;I will write an update on this issue explaining exactly those.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aside from the concerns and directly actionable items, the meeting also covered design questions/comments that we want to take a look at in the coming weeks/months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Support-ReadWrite-of-non-PlaceTarget&quot;&gt;Can we support reads/writes of different types?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Re-assembling&quot;&gt;Can we support re-assembly of wrapper types, so going from &lt;code&gt;Cell&amp;lt;[T]&amp;gt;&lt;/code&gt; to &lt;code&gt;[Cell&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://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Trait-for-reading-discriminant-for-pattern-matching&quot;&gt;The &lt;code&gt;PlaceDiscriminant&lt;/code&gt; trait needs to be carefully designed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Name-conflicts&quot;&gt;How do we handle naming conflicts &amp;amp; ensure SemVer evolution of library types implementing our traits?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Projecting-through-Option-and-Result&quot;&gt;Can we support projecting through &lt;code&gt;Option&lt;/code&gt;, so e.g. &lt;code&gt;&amp;amp;Option&amp;lt;Struct&amp;gt;&lt;/code&gt; to &lt;code&gt;Option&amp;lt;&amp;amp;Field&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://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Projecting-through-Option-and-Result&quot;&gt;Can we support a pointer that carries alignment information &amp;amp; which is updated on projections?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#Projecting-through-Option-and-Result&quot;&gt;What compatibility with effects do we need or want to support?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/H5d2-83ER2ymNPZVIWCYWg?view#What-doors-are-we-closing&quot;&gt;What doors on future ergonomic improvements of pointers are we closing by having field projections?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone who participated in the meeting!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;reborrow-traits&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#reborrow-traits&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/399&quot;&gt;Reborrow traits&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/aapoalas&quot;&gt;Aapo Alasuutari&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/reborrow-traits.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/aapoalas&quot;&gt;Aapo Alasuutari&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/399#issuecomment-3977652772&quot;&gt;comment from 2026-02-28&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151753&quot;&gt;PR&lt;/a&gt; open to get the first working version of the &lt;code&gt;Reborrow&lt;/code&gt; and &lt;code&gt;CoerceShared&lt;/code&gt; traits merged.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;p&gt;Currently &quot;blocked&quot; on PR review, and of course my (and Ding&#x27;s) work to fix all review issues.&lt;/p&gt;
&lt;p&gt;The review has brought up an opportunity to replace &lt;code&gt;Rvalue::Ref&lt;/code&gt; / &lt;code&gt;ExprKind::Ref&lt;/code&gt; with a more generalised variant that could encompass both references and user-defined references. This would be powerful, but it would be a very big and scary change. If this turns out to be a blocking issue for reviewers, then this will block the goal for the foreseeable future as the PR then starts on a massive refactoring.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;help-wanted&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#help-wanted&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Help wanted&lt;/h3&gt;
&lt;p&gt;The PR currently does not include derive traits, but we&#x27;d really want them. Instead of these:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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-keyword&quot;&gt;impl&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Reborrow&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMarker&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&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 class&#x3D;&quot;z-keyword&quot;&gt;impl&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CoerceShared&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;CustomMarkerRef&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMarker&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;#39;&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-keyword&quot;&gt;impl&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Reborrow&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&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 class&#x3D;&quot;z-keyword&quot;&gt;impl&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CoerceShared&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;CustomRef&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; for&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;we&#x27;d prefer to have something like this:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;rust&quot;&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-entity z-name z-type&quot;&gt;Reborrow&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CoerceShared&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;CustomMarkerRef&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-storage z-type&quot;&gt;struct&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMarker&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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 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-entity z-name z-type&quot;&gt;Reborrow&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CoerceShared&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;CustomRef&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-storage z-type&quot;&gt;struct&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; CustomMut&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; ...&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If anyone feels like picking up this thread, that&#x27;d be awesome: the derive macros do not need to really perform any validity checking, as the trait itself will do that.&lt;/p&gt;
&lt;p&gt;If the PR merges soon, then public testing and exploration of the traits will be the next big thing. Likely concurrently with that the massive refactoring to generalise &lt;code&gt;Rvalue::Ref&lt;/code&gt; / &lt;code&gt;ExprKind::Ref&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id&#x3D;&quot;flagship-flexible-fast-er-compilation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#flagship-flexible-fast-er-compilation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Flagship: Flexible, fast(er) compilation&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;build-std&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#build-std&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/274&quot;&gt;build-std&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adamgemmell&quot;&gt;Adam Gemmell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ehuss&quot;&gt;Eric Huss&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team&quot;&gt;libs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/build-std.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;4 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/274#issuecomment-3754440280&quot;&gt;comment from 2026-01-15&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3873&quot;&gt;rust-lang/rfcs#3873&lt;/a&gt; has been merged and an FCP has been started on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3874&quot;&gt;rust-lang/rfcs#3874&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3875&quot;&gt;rust-lang/rfcs#3875&lt;/a&gt; - those both have some feedback for me to respond to that I&#x27;ll get to as soon as I can.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/274#issuecomment-3914113179&quot;&gt;comment from 2026-02-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No major updates this cycle - we&#x27;re still working through feedback on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3874&quot;&gt;rust-lang/rfcs#3874&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3875&quot;&gt;rust-lang/rfcs#3875&lt;/a&gt; and prototyping the implementation to be prepared.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/274#issuecomment-4073778569&quot;&gt;comment from 2026-03-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update this cycle is the same as last time - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3874&quot;&gt;rust-lang/rfcs#3874&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3875&quot;&gt;rust-lang/rfcs#3875&lt;/a&gt; are progressing, with feedback being addressed and checkboxes checked, and we&#x27;re still working out what the implementation would look like.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/274#issuecomment-4245212089&quot;&gt;comment from 2026-04-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3874&quot;&gt;rust-lang/rfcs#3874&lt;/a&gt; has finished FCP and is due to be merged any day now. I&#x27;m working on resolving the remaining open comments on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3875&quot;&gt;rust-lang/rfcs#3875&lt;/a&gt; and then intend to nudge the reviewers to have a look and check their boxes or leave concerns.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adamgemmell&quot;&gt;Adam Gemmell&lt;/a&gt; has opened &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16675&quot;&gt;rust-lang/cargo#16675&lt;/a&gt; with an early sketch of some of the core changes that build-std would require and is working with the Cargo team to address feedback and work out how to proceed with the implementation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;production-ready-cranelift-backend&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#production-ready-cranelift-backend&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/397&quot;&gt;Production-ready cranelift backend&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/folkertdev&quot;&gt;Folkert de Vries&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/bjorn3&quot;&gt;bjorn3&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://trifectatech.org/&quot;&gt;Trifecta Tech Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/bjorn3&quot;&gt;bjorn3&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Not completed (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/397#issuecomment-3597627406&quot;&gt;lack of funding&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;promoting-parallel-front-end&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#promoting-parallel-front-end&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/121&quot;&gt;Promoting Parallel Front End&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/SparrowLii&quot;&gt;Sparrow Li&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/parallel-front-end.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;relink-don-t-rebuild&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#relink-don-t-rebuild&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/400&quot;&gt;Relink don&#x27;t Rebuild&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/yaahc&quot;&gt;Jane Lusby&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dropbear32&quot;&gt;@dropbear32&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/osiewicz&quot;&gt;@osiewicz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;Weihang Lo&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Not completed (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/2025H2.20Goal.20Review/near/536084528&quot;&gt;note&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;flagship-higher-level-rust&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#flagship-higher-level-rust&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Flagship: Higher-level Rust&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;ergonomic-ref-counting-rfc-decision-and-preview&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#ergonomic-ref-counting-rfc-decision-and-preview&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/107&quot;&gt;Ergonomic ref-counting: RFC decision and preview&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/spastorino&quot;&gt;Santiago Pastorino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/spastorino&quot;&gt;Santiago Pastorino&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/ergonomic-rc.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;stabilize-cargo-script&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilize-cargo-script&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/119&quot;&gt;Stabilize cargo-script&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/governance/teams&quot;&gt;lang-docs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/cargo-script.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;3 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/119#issuecomment-3750134602&quot;&gt;comment from 2026-01-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/146377&quot;&gt;#146377&lt;/a&gt; has been decided and merged.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;T-lang discussing CR / text direction feedback: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/148051#issuecomment-3638326490&quot;&gt;comment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;T-rustdoc deciding on and implementing how they want frontmatter handled in doctests&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/119#issuecomment-3897507244&quot;&gt;comment from 2026-02-13&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;FCP has ended on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/148051&quot;&gt;frontmatter support&lt;/a&gt;, just awaiting merge&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16569&quot;&gt;Cargo script&lt;/a&gt; has entered FCP&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;blockers-2&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-2&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Potential issues around edition, see &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/152254&quot;&gt;Cargo script edition policy (lang/edition aspects)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/119#issuecomment-4067313342&quot;&gt;comment from 2026-03-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cargo&#x27;s FCP has ended.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-3&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-3&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/152254&quot;&gt;Cargo script edition policy (lang/edition aspects)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id&#x3D;&quot;flagship-unblocking-dormant-traits&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#flagship-unblocking-dormant-traits&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Flagship: Unblocking dormant traits&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;evolving-trait-hierarchies&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#evolving-trait-hierarchies&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/393&quot;&gt;Evolving trait hierarchies&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cramertj&quot;&gt;Taylor Cramer&lt;/a&gt;&lt;/strong&gt; and others&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cramertj&quot;&gt;Taylor Cramer&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team&quot;&gt;types&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/supertrait-auto-impl.html&quot;&gt;Implement Supertrait &lt;code&gt;auto impl&lt;/code&gt;&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/arbitrary-self-types.html&quot;&gt;Arbitrary Self Types&lt;/a&gt; 2026 goals&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;in-place-initialization&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#in-place-initialization&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/395&quot;&gt;In-place initialization&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/compiler-errors&quot;&gt;Michael Goulet&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cramertj&quot;&gt;Taylor Cramer&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nbdd0121&quot;&gt;Gary Guo&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/yoshuawuyts&quot;&gt;Yoshua Wuyts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cramertj&quot;&gt;Taylor Cramer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/in-place-init.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/395#issuecomment-3828006712&quot;&gt;comment from 2026-01-31&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pull/477&quot;&gt;proposal&lt;/a&gt; to continue this goal in the next goal period was merged.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;next-generation-trait-solver&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#next-generation-trait-solver&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/113&quot;&gt;Next-generation trait solver&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lcnr&quot;&gt;lcnr&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/compiler-errors&quot;&gt;Michael Goulet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team&quot;&gt;types&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lcnr&quot;&gt;lcnr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/next-solver.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lcnr&quot;&gt;lcnr&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/113#issuecomment-3767714713&quot;&gt;comment from 2026-01-19&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There hasn&#x27;t been too much progress over the last few weeks and I&#x27;ve been mostly taking a Christmas break. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nnethercote&quot;&gt;Nicholas Nethercote&lt;/a&gt; has been looking into the performance of the new trait solver, cleaning up canonicalization and slightly improving its performance: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150748&quot;&gt;PR 1&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150859&quot;&gt;PR 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ShoyuVanilla&quot;&gt;Shoyu Vanilla&lt;/a&gt; looked into &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/trait-system-refactor-initiative/issues/251&quot;&gt;ICE from mir validation on unsizing in opendal&lt;/a&gt; and uncovered the underlying bug there. While this issue also affects the old solver and the proper fix for it requires where-bounds on binders, we can work around this bug in the trait solver for now and intend to do so.&lt;/p&gt;
&lt;p&gt;We&#x27;ve started another crater run with all our recent changes and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adwinwhite&quot;&gt;adwin&lt;/a&gt; has started to triage it, uncovering one new issue up until now. Intend to continue going through that over the next few weeks.&lt;/p&gt;
&lt;p&gt;There&#x27;s also a lot in-progress work going on. I am collaborating with &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt; to specify and later RFC the cycle semantics of Rust. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/fmease&quot;&gt;León Orell Valerian Liehr&lt;/a&gt; is working on a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149019&quot;&gt;replacement for the rustdoc&#x27;s auto trait impl synthesis&lt;/a&gt;. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt; is working on a fix a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/trait-system-refactor-initiative/issues/159&quot;&gt;MIR borrowck unsoundness&lt;/a&gt;. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ShoyuVanilla&quot;&gt;Shoyu Vanilla&lt;/a&gt; and I are improving the way we propagate inference constraints from the expected return type to function arguments, fixing &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/trait-system-refactor-initiative/issues/259&quot;&gt;this issue&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;stabilizable-polonius-support-on-nightly&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilizable-polonius-support-on-nightly&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/118&quot;&gt;Stabilizable Polonius support on nightly&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/amandasystems&quot;&gt;Amanda Stjerna&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team&quot;&gt;types&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726&quot;&gt;Jack Huey&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/polonius.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;2 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/118#issuecomment-3824711064&quot;&gt;comment from 2026-01-30&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This month&#x27;s update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt; is making progress on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/trait-system-refactor-initiative/issues/159&quot;&gt;normalizing opaques while computing implied bounds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;we discussed how to investigate and fix the remaining correctness issues in Tage&#x27;s work, to be able to evaluate it more accurately: in particular around variance and bidirectional edges, and without the reliance on NLL (having computed region values / errors)&lt;/li&gt;
&lt;li&gt;we&#x27;ve tried to see if it&#x27;d be possible to remove the cfg region elements&lt;/li&gt;
&lt;li&gt;Amanda is still working on her two papers, one about the current borrow checker and one about the work on Polonius. Her major PR for the restructuring of placeholder handling during region inference is stalled due to a conflict with further trait solver developments and may have to be abandoned. Work with the larger types team is ongoing and smaller patches/refactorings/improvements are being landed in the meantime.&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149639&quot;&gt;#149639&lt;/a&gt; has now landed, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150551&quot;&gt;#150551&lt;/a&gt; is still in review&lt;/li&gt;
&lt;li&gt;I&#x27;ve also fixed more small inefficiencies (computing boring/relevant locals on-demand in diagnostics, removed conversions between locations and points, etc) building on top of the previous PRs (so they need to be reviewed first)&lt;/li&gt;
&lt;li&gt;I&#x27;ve looked at crates.io again with the alpha, to find functions that are slower than with NLLs. AFAICT the worst case there is 60% for a 5KLOC function with 42K loans, 255K statements, and 125K outlives constraints. I&#x27;ll see what we can do with this. Small composable functions is still good advice.&lt;/li&gt;
&lt;li&gt;there seem to be optimization opportunities to 1. limit propagation to the smaller number of blocks that could be affected by bidirectional edges, 2. for unifying invariant lifetimes of live locals that are assigned at most once (à la use-def chains), 3. for invalidations that are just the activation of a reservation&lt;/li&gt;
&lt;li&gt;we discussed possible plans to gather actual statistics, using the infrastructure that was created for the Metrics project&lt;/li&gt;
&lt;li&gt;we&#x27;re also preparing the new project goal for this year, where we&#x27;ll want to stabilize the alpha 🤞&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/118#issuecomment-3977551969&quot;&gt;comment from 2026-02-28&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We had a bit less time this month, the update will be shorter, but still meaningful I hope:&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/150551&quot;&gt;#150551&lt;/a&gt; has landed, and it feels stabilizable. To me, this part of the goal is achieved.&lt;/li&gt;
&lt;li&gt;still, &quot;stabilizable&quot; is not &lt;em&gt;stable&lt;/em&gt;, and there is more work to do. We plan to stabilize this year, and the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/polonius.html&quot;&gt;project goal proposal for 2026&lt;/a&gt; tracks how.&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt; is still deep in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152051&quot;&gt;#152051&lt;/a&gt;, and &lt;code&gt;a-mir-formality&lt;/code&gt; work with Niko and I.&lt;/li&gt;
&lt;li&gt;Amanda has opened a few cleanup PRs (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152438&quot;&gt;#152438&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152579&quot;&gt;#152579&lt;/a&gt;), and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151863&quot;&gt;#151863&lt;/a&gt; has landed already. She also has started looking into Tage&#x27;s old PR to see if we can fix it, benchmark it more accurately, and see the cool parts there that we could be using.&lt;/li&gt;
&lt;li&gt;Jack is possibly going to have some time to work with us this year! His help will be very welcome, especially as I will have less time available myself.&lt;/li&gt;
&lt;li&gt;we&#x27;ll be tracking the opaque type region liveness soundness issue in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/153215&quot;&gt;#153215&lt;/a&gt;, and I&#x27;ve added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153216&quot;&gt;a couple tests&lt;/a&gt;, in case &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt;&#x27;s PR or anything that impacts them lands.&lt;/li&gt;
&lt;li&gt;some of the tiny cleanups I mentioned last time have also landed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152587&quot;&gt;#152587&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id&#x3D;&quot;other-goal-updates&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#other-goal-updates&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Other goal updates&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;add-a-team-charter-for-rustdoc-team&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#add-a-team-charter-for-rustdoc-team&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/387&quot;&gt;Add a team charter for rustdoc team&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;rustdoc&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Completed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;borrow-checking-in-a-mir-formality&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#borrow-checking-in-a-mir-formality&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/122&quot;&gt;Borrow checking in a-mir-formality&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team&quot;&gt;types&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/a-mir-formality.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;c-rust-interop-problem-space-mapping&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#c-rust-interop-problem-space-mapping&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388&quot;&gt;C++/Rust Interop Problem Space Mapping&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoelMarcey&quot;&gt;Joel Marcey&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team&quot;&gt;libs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dtolnay&quot;&gt;David Tolnay&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/interop-problem-map.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;5 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoelMarcey&quot;&gt;Joel Marcey&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-3774860319&quot;&gt;comment from 2026-01-20&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Rust Foundation is opening up a short-term, approximately 3-month, contracting role to assist in our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/interop-initiative/&quot;&gt;Rust/C++ Interop&lt;/a&gt; initiative. The primary work and deliverables for the role will be to make substantial progress on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/interop-problem-map.html&quot;&gt;Problem Space Mapping Rust Project Goal&lt;/a&gt; by collecting discrete problem statements and offering up recommendations on the work that should follow based upon the problems that you found.&lt;/p&gt;
&lt;p&gt;If you are interested in how programming languages interoperate, are curious in understanding the problems therein, and are have a passion to think about how those problems may be resolved for the betterment of interop, then this work may be for you.&lt;/p&gt;
&lt;p&gt;An ideal candidate will have experience with Rust programming. Having experience in C++ is strongly preferred as well. If you have direct experience with actual engineering that required interoperating between Rust and C++ codebases, that&#x27;s even better.&lt;/p&gt;
&lt;p&gt;If you are interested, please &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoelMarcey&quot;&gt;email me&lt;/a&gt; (email address found in my GitHub profile) or contact me directly on Zulip by Tuesday, January 27 and we can take it from there to see if there may be a potential fit for further discussion.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoelMarcey&quot;&gt;Joel Marcey&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-3827224576&quot;&gt;comment from 2026-01-31&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The effort to fill the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-3774860319&quot;&gt;contracting role &lt;/a&gt; to support this project goal is in the process winding down. The interview and discussion process is nearly complete. We expect to make a final decision for the role in early February.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/teor2345&quot;&gt;teor&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-3970777014&quot;&gt;comment from 2026-02-27&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi, I&#x27;m the new contractor on the interop problem space mapping project goal.&lt;/p&gt;
&lt;p&gt;In the last week and a half, I&#x27;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/tree/main/problem-space&quot;&gt;some draft high-level problem statement summaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;started mapping out &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues&quot;&gt;interop use cases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;added relationships between problems/use cases and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/pull/10&quot;&gt;existing project goals &amp;amp; unstable compiler features&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next step is prioritising a few of the use cases, then working on related problem statements in more detail.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-4&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-4&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;p&gt;Nothing at the moment, still working through the high level mapping of the problem space.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;help-wanted-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#help-wanted-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Help wanted&lt;/h3&gt;
&lt;p&gt;Suggestions for more interop use cases would be very welcome, just open a discussion in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/427678-t-lang.2Finterop&quot;&gt;t-lang/interop&lt;/a&gt; and I&#x27;ll turn it into a ticket. Or go ahead and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues&quot;&gt;open a use case ticket directly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#x27;ll post an update here every few weeks, you can follow &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/427678-t-lang.2Finterop/topic/Interop.20Problem.20Space.20Mapping.20-.20Weekly.20Updates/with/576165231&quot;&gt;more detailed weekly updates on Zulip&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/teor2345&quot;&gt;teor&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-4151397648&quot;&gt;comment from 2026-03-30&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the last month, I&#x27;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;met with the lang team, Crubit team, and &lt;code&gt;cxx&lt;/code&gt; author, and Joel and Mara have met with the C++ standards working group&lt;/li&gt;
&lt;li&gt;expanded &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/tree/main/problem-space&quot;&gt;some draft high-level problem statement summaries&lt;/a&gt;, and added code examples&lt;/li&gt;
&lt;li&gt;added 6 new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues&quot;&gt;interop use cases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;added more relationships between problems/use cases and existing project goals &amp;amp; unstable compiler features&lt;/li&gt;
&lt;li&gt;prepared for the Rust All Hands, and started mentoring for Outreachy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specifically, the last month we&#x27;ve identified and prioritised two high-priority use cases for more detailed work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues/14&quot;&gt;calling an overloaded C++ function from Rust&lt;/a&gt;, with a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153697&quot;&gt;Rust lang experiment&lt;/a&gt; - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/On.20overloading/near/579590336&quot;&gt;implementation discussion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues/13&quot;&gt;adding Rust to an existing C++ build system&lt;/a&gt;, this currently works for basic cases, but the tooling could be improved on the Rust side&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And I &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues/3#issuecomment-4151337653&quot;&gt;analysed the problems / use cases we&#x27;ve collected so far&lt;/a&gt;, with priorities, responsible language, and a split into semantics or tooling changes.&lt;/p&gt;
&lt;p&gt;Next step is continuing to work on overloading and build systems in more detail. If you have specific Rust/C/C++ build system blockers, please open a chat or ticket.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-5&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-5&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;p&gt;Nothing at the moment, everyone has been extremely helpful, and I&#x27;m getting good feedback on use cases, problems, priorities, and Rust language experiments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/teor2345&quot;&gt;teor&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/388#issuecomment-4357141346&quot;&gt;comment from 2026-05-01&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the last month, I&#x27;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prepared for RustWeek and the All Hands, where I will be &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://2026.rustweek.org/schedule/wednesday/#teor&quot;&gt;giving a Rust Project track talk&lt;/a&gt; and running an All Hands interop session (schedule TBC)&lt;/li&gt;
&lt;li&gt;added new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues&quot;&gt;interop use cases and problem statements&lt;/a&gt;, and continued categorising them using GitHub tags&lt;/li&gt;
&lt;li&gt;continued to expand the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/tree/main/problem-space&quot;&gt;draft high-level problem statement summaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;added interop code examples, including many examples from Outreachy applicants&lt;/li&gt;
&lt;li&gt;continued mentoring Outreachy applicants&lt;/li&gt;
&lt;li&gt;continued working on the Overloading Rust language experiment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specifically, the last month we&#x27;ve made detailed progress on two high-priority use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues/14&quot;&gt;calling an overloaded C++ function from Rust&lt;/a&gt;, with a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/153629&quot;&gt;Rust lang experiment&lt;/a&gt; - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/On.20overloading/near/579590336&quot;&gt;implementation discussion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;we&#x27;ve &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/155223&quot;&gt;merged a refactor&lt;/a&gt; to prepare for this experiment, which gave some nice perf wins&lt;/li&gt;
&lt;li&gt;the initial &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153697&quot;&gt;overloading experiment PR&lt;/a&gt; has been through two rounds of review, and is waiting for my revisions and rebasing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/issues/13&quot;&gt;adding Rust to an existing C++ build system&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Outreachy applicants wrote &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustfoundation/interop-initiative/pulls?q&#x3D;is%3Apr&quot;&gt;interop example code PRs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;these interop user experiences are waiting for analysis, so they can be summarised in the build system and overloading problem statements&lt;/li&gt;
&lt;li&gt;this will likely happen after RustWeek and the All Hands&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next step is continuing to work on the overloading experiment, along with RustWeek/All Hands preparation, and collecting feedback during the conference.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-6&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-6&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;p&gt;Nothing at the moment. There is a steady stream of new use cases, problems, code examples and Rust language experiment feedback.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;comprehensive-niche-checks-for-rust&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#comprehensive-niche-checks-for-rust&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/262&quot;&gt;Comprehensive niche checks for Rust&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/1c3t3a&quot;&gt;Bastian Kersting&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jakos-sec&quot;&gt;Jakob Koschel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Saethlin&quot;&gt;Ben Kimock&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/opsem-team&quot;&gt;opsem&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Saethlin&quot;&gt;Ben Kimock&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Not completed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;const-generics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#const-generics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100&quot;&gt;Const Generics&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/camelid&quot;&gt;Noah Lev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/const-generics.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;6 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-3806305532&quot;&gt;comment from 2026-01-27&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt; and I have established a regular time to check-in on formalizing this within a-mir-formality. Today we mostly worked on the &quot;model&quot; of const values, starting with this&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;rust&quot;&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;term&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-keyword&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; enum&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; ConstData&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-punctuation z-definition z-comment z-comment&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; Sort of equivalent to &#x60;ValTreeKind::Branch&#x60;&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;cast&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-entity z-name z-function&quot;&gt;    RigidValue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;RigidConstData&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-punctuation z-definition z-comment z-comment&quot;&gt;    //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; Sort of equivalent to &#x60;ValTreeKind::Leaf&#x60;&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;cast&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-entity z-name z-function&quot;&gt;    Scalar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;ScalarValue&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&gt;    #&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;variable&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;ParameterKind&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Const&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-entity z-name z-function&quot;&gt;    Variable&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Variable&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&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 class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;term&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-keyword&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; enum&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; ScalarValue&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;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u8&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    U8&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u8&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u16&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    U16&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u16&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u32&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    U32&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u32&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    U64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;u64&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i8&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    I8&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i8&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i16&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    I16&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i16&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i32&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    I32&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&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;/span&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    I64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;i64&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    Bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;bool&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;usize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    Usize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;usize&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&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;isize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;v0&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-entity z-name z-function&quot;&gt;    Isize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;isize&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&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;term&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;name &lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;$&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;parameters&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; $&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;values &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-keyword&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; struct&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; RigidConstData&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-keyword&quot;&gt;    pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; name&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; RigidName&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-keyword&quot;&gt;    pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; parameters&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Parameters&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-keyword&quot;&gt;    pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; values&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Vec&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;Const&lt;/span&gt;&lt;span&gt;&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&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;i.e., a const value can be a scalar value (as today) or a struct literal like &lt;code&gt;Foo { ... }&lt;/code&gt; (which would also cover tuples and things). We got the various tests passing. Huzzah!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-3823289633&quot;&gt;comment from 2026-01-30&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In addition to what niko posted previously there&#x27;s been a lot of other stuff happening. A lot of people have opened PRs to improve mGCA this month: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/fmease&quot;&gt;León Orell Valerian Liehr&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/camelid&quot;&gt;Noah Lev&lt;/a&gt; @enthropy7 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kivooeo&quot;&gt;Kivooeo&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mu001999&quot;&gt;mu001999&lt;/a&gt; @Human9000-bit &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/reddevilmidzy&quot;&gt;Redddy&lt;/a&gt; @Keith-Cancel @AprilNEA&lt;/p&gt;
&lt;p&gt;A rough list of things that have been improved for mGCA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lots of new expressions now supported by mGCA: const constructors, tuple constructor calls, array expressions, tuple expression, literals&lt;/li&gt;
&lt;li&gt;&lt;code&gt;associated_const_equality&lt;/code&gt; has been merged into &lt;code&gt;min_generic_const_args&lt;/code&gt;. the former was effectively dependent on the latter already so this just makes it nicer to use the former :)&lt;/li&gt;
&lt;li&gt;traits can now be dyn compatible if all associated constants are type consts and are specified in the trait object (e.g. &lt;code&gt;dyn Trait&amp;lt;ASSOC &#x3D; 10&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;type consts are enforced to be non-generic&lt;/li&gt;
&lt;li&gt;a bunch of ICEs have been fixed&lt;/li&gt;
&lt;li&gt;camelid has been working on &quot;non-min&quot; version of mGCA which will allow arbitrary expressions to be used in the type system (a blog post with more detail will be published once this actually lands)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In non-mGCA updates, as niko says, we&#x27;ve been meeting regularly to make progress on modelling const generics in a-mir-formality. I&#x27;ve also been spending time thinking about the interactions between &lt;code&gt;adt_const_params&lt;/code&gt; and ADTs with privacy/safety invariants and I think I know how to structure the RFC in this area so can make progress on that again&lt;/p&gt;
&lt;p&gt;There&#x27;s some more detail about the various bits of work people have done and who did what here: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/260443-project-const-generics/topic/perfectly.20adequately.20sized.20wins/near/566850721&quot;&gt;#project-const-generics &amp;gt; perfectly adequately sized wins @ 💬&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-3897552648&quot;&gt;comment from 2026-02-13&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt; and I have met (and continue to meet) and work on modeling const generics in a-mir-formality. We&#x27;re still working on laying the groundwork.&lt;/p&gt;
&lt;p&gt;There is a proposed &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/const-generics.html&quot;&gt;project goal&lt;/a&gt; for next year.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-3977295413&quot;&gt;comment from 2026-02-28&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There&#x27;s been a lot of miscellaneous fixes for mGCA this month. I&#x27;ve also started drafting some blog posts to explain what&#x27;s going on with mGCA/oGCA as well as soliciting use cases/experience reports for them and &lt;code&gt;adt_const_params&lt;/code&gt;. I also talked with some folks at Rust Nation this month about const generics and what features would be useful for them and why.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-4179111762&quot;&gt;comment from 2026-04-02&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Late on the update :&#x27;) niko and i continue to meet to discuss const generics. we&#x27;ve made some progress on figuring out problems around privacy/safety in const generics. we&#x27;ve also been discussing the big picture stuff for const generics and where we&#x27;re &quot;heading&quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/100#issuecomment-4359546137&quot;&gt;comment from 2026-05-01&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;started running weekly meetings about const generics to make it easier to keep up to date with all the people who are working on const generics stuff. i think &lt;code&gt;min_adt_const_params&lt;/code&gt; is now at the point of what the RFC is going to specify.&lt;/p&gt;
&lt;p&gt;GCA is making good progress thanks to ashley&#x27;s work. i also met with lcnr where we talked about whether there was some version of mGCA that is stabilizeable in the near future or not (maybe!)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;continue-resolving-cargo-semver-checks-blockers-for-merging-into-cargo&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#continue-resolving-cargo-semver-checks-blockers-for-merging-into-cargo&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/104&quot;&gt;Continue resolving &lt;code&gt;cargo-semver-checks&lt;/code&gt; blockers for merging into cargo&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;rustdoc&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adotinthevoid&quot;&gt;Alona Enraght-Moony&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/cargo-semver-checks.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/104#issuecomment-3764211880&quot;&gt;comment from 2026-01-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I posted a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://predr.ag/blog/cargo-semver-checks-2025-year-in-review/&quot;&gt;&quot;year in review&quot; for cargo-semver-checks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It has a section on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://predr.ag/blog/cargo-semver-checks-2025-year-in-review/#the-path-forward-for-2026-and-beyond&quot;&gt;how I think we should move forward in 2026 and beyond&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;develop-the-capabilities-to-keep-the-fls-up-to-date&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#develop-the-capabilities-to-keep-the-fls-up-to-date&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/391&quot;&gt;Develop the capabilities to keep the FLS up to date&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/PLeVasseur&quot;&gt;Pete LeVasseur&lt;/a&gt;&lt;/strong&gt;, &lt;code&gt;t-spec&lt;/code&gt;, and contributors from &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://ferrous-systems.com/&quot;&gt;Ferrous Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;bootstrap&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/spec&quot;&gt;spec&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/PLeVasseur&quot;&gt;Pete LeVasseur&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/stabilize-fls-releases.html&quot;&gt;Stabilize FLS Release Cadence&lt;/a&gt; 2026 goal&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;2 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/PLeVasseur&quot;&gt;Pete LeVasseur&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/391#issuecomment-3999761277&quot;&gt;comment from 2026-03-04&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have a Project Goal in 2026 that we&#x27;ll take on: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/stabilize-fls-releases.html&quot;&gt;Stabilize FLS Release Cadence&lt;/a&gt;. Progress towards 1.93.1 looks good, most issues are &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/fls/issues?q&#x3D;is%3Aissue%20state%3Aopen%20%5BChange%5D%3A%20%5B1.93%5D&quot;&gt;closed&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;help-wanted-2&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#help-wanted-2&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Help wanted&lt;/h3&gt;
&lt;p&gt;We&#x27;d love more folks from the safety-critical community to contribute to picking up &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/fls/issues&quot;&gt;issues&lt;/a&gt; or opening an issue if you notice something is missing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/PLeVasseur&quot;&gt;Pete LeVasseur&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/391#issuecomment-4178437764&quot;&gt;comment from 2026-04-02&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trying to prepare FLS releases earlier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;since we completed the 1.94.0 release of the FLS a bit early this time, we checked into the stretch part of our goal this year to look at 1.95.0 early&lt;/li&gt;
&lt;li&gt;we learned a bit more of the release notes process thanks to tips from &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ehuss&quot;&gt;Eric Huss&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/traviscross&quot;&gt;TC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tshepang&quot;&gt;Tshepang Mbambo&lt;/a&gt; and I attended the t-release meeting last week where we chatted about working a little &quot;upstream&quot; with them on generating the release notes a bit earlier&lt;/li&gt;
&lt;li&gt;tomorrow in our t-fls meeting we&#x27;ll discuss our interest with engaging over there; at a minimum I&#x27;ll get engaged with t-release&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Glossary and main-body text harmonization:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the first PR landed from &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tshepang&quot;&gt;Tshepang Mbambo&lt;/a&gt; removing IDs from the glossary&lt;/li&gt;
&lt;li&gt;further steps planned, we have a tracking issue for it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Developer guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;akin to how the Reference now has a developer&#x27;s guide now for contributing we&#x27;ll do the same in the FLS&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kirtchev-adacore&quot;&gt;Hristian Kirtchev&lt;/a&gt; has been working on this&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;emit-retags-in-codegen&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#emit-retags-in-codegen&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/392&quot;&gt;Emit Retags in Codegen&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/icmccorm&quot;&gt;Ian McCormack&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/RalfJung&quot;&gt;Ralf Jung&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/opsem-team&quot;&gt;opsem&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/RalfJung&quot;&gt;Ralf Jung&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/borrowsanitizer.html&quot;&gt;BorrowSanitizer&lt;/a&gt; 2026 goal&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;4 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/icmccorm&quot;&gt;Ian McCormack&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/392#issuecomment-3730419629&quot;&gt;comment from 2026-01-09&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here&#x27;s our January status update!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yesterday, we posted &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/958&quot;&gt;an MCP&lt;/a&gt; for our retag intrinsics. While that&#x27;s in progress, we&#x27;ll start adapting our current prototype to remove our dependence on MIR-level retags. Once that&#x27;s finished, we&#x27;ll be ready to submit a PR.&lt;/li&gt;
&lt;li&gt;We published our first monthly &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://borrowsanitizer.com/status/january_2026.html&quot;&gt;blog post&lt;/a&gt; about BorrowSanitizer.&lt;/li&gt;
&lt;li&gt;Our overall goal for 2026 is to transition from a research prototype to a functional tool. Three key features have yet to be implemented: garbage collection, error reporting, and support for atomic memory accesses. Once these are complete, we&#x27;ll be able to start testing real-world libraries and auditing our results against Miri.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/icmccorm&quot;&gt;Ian McCormack&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/392#issuecomment-3955255197&quot;&gt;comment from 2026-02-24&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We just posted our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://borrowsanitizer.com/status/february_2026.html&quot;&gt;February status update&lt;/a&gt; for BorrowSanitizer. TL;DR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We provide detailed error messages for aliasing violations, which look &lt;em&gt;almost&lt;/em&gt; like Miri&#x27;s do!&lt;/li&gt;
&lt;li&gt;We have two forms of retag intrinsic: &lt;code&gt;__rust_retag_mem&lt;/code&gt; and &lt;code&gt;__rust_retag_reg&lt;/code&gt;. We no longer require a compiler plugin to determine the permission associated with a retag, which will make it possible to use BorrowSanitizer by providing a single &lt;code&gt;-Zsanitizer&#x3D;borrow&lt;/code&gt; flag to rustc. You can check out our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/958&quot;&gt;MCP&lt;/a&gt; for more detailed design updates.&lt;/li&gt;
&lt;li&gt;We are starting to have a better understanding of how BorrowSanitizer performs in practice, but we do not have enough data yet to be certain. From one test case, it seems like we are somewhat faster but still in the same category of performance as Miri when we compare against other sanitizers. Expect more detailed results to come as we scale up our benchmarking pipeline.&lt;/li&gt;
&lt;li&gt;We have a tentative plan for upstreaming BorrowSanitizer in 2026, starting with its LLVM components. We intend to start the RFC process on the LLVM side this spring, once our API is stable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/icmccorm&quot;&gt;Ian McCormack&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/392#issuecomment-4158528895&quot;&gt;comment from 2026-03-30&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We just posted our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://borrowsanitizer.com/status/march_2026.html&quot;&gt;March status update&lt;/a&gt; for BorrowSanitizer. TL;DR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We added hundreds more relevant tests from Miri&#x27;s test suite. At the moment, 80% pass.&lt;/li&gt;
&lt;li&gt;We improved our cargo plugin (&lt;code&gt;cargo-bsan&lt;/code&gt;) to better support multilanguage libraries. This will let us start to recreate the bugs from our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://dl.acm.org/doi/10.1109/ICSE55347.2025.00167&quot;&gt;earlier evaluation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our goal for April is to continue expanding our test suite, finish an initial version of the LLVM components of BorrowSanitizer, and hopefully start the RFC process on the LLVM side.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/icmccorm&quot;&gt;Ian McCormack&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/392#issuecomment-4346250277&quot;&gt;comment from 2026-04-29&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have some exciting news: our talk on BorrowSanitizer was accepted &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustconf2026.sched.com/event/2KHtb&quot;&gt;at RustConf&lt;/a&gt; this year! We’re grateful for the opportunity and looking forward to sharing our results with the broader community this September.&lt;/p&gt;
&lt;p&gt;We just posted &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://borrowsanitizer.com/status/april_2026.html&quot;&gt;our April status update&lt;/a&gt;. It’s a bit of a technical one. Here’s the TL;DR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BorrowSanitizer now uses a shadow stack to track metadata at runtime - this is a significantly different strategy than other LLVM sanitizers, and it will help us support garbage collection.&lt;/li&gt;
&lt;li&gt;We are now ready to start sending in PRs for our retag intrinsics. It will take a little time to split our changes up into meaningful, reviewable chunks—you can expect to see these throughout the next week.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The RFC for our LLVM components is taking a little longer than expected, but it was worth taking the extra time to test out compiler changes and make sure that we had the core parts of the instrumentation pass settled. We’ll be drafting the RFC throughout the next few weeks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;expand-the-rust-reference-to-specify-more-aspects-of-the-rust-language&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#expand-the-rust-reference-to-specify-more-aspects-of-the-rust-language&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/394&quot;&gt;Expand the Rust Reference to specify more aspects of the Rust language&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726&quot;&gt;Jack Huey&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lcnr&quot;&gt;lcnr&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/m-ou-se&quot;&gt;Mara Bos&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/petrochenkov&quot;&gt;Vadim Petrochenkov&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/yaahc&quot;&gt;Jane Lusby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/governance/teams&quot;&gt;lang-docs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/spec&quot;&gt;spec&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/experimental-language-specification.html&quot;&gt;Experimental language specification&lt;/a&gt; 2026 goal&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/394#issuecomment-4245135894&quot;&gt;comment from 2026-04-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This work is now continuing into a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pull/490&quot;&gt;new goal&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726&quot;&gt;Jack Huey&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;finish-the-libtest-json-output-experiment&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-the-libtest-json-output-experiment&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/255&quot;&gt;Finish the libtest json output experiment&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/libtest-json.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;finish-the-std-offload-module&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-the-std-offload-module&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/109&quot;&gt;Finish the std::offload module&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/strong&gt;, LLVM offload/GPU contributors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/traviscross&quot;&gt;TC&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/high-level-ml.html&quot;&gt;High-Level ML optimizations&lt;/a&gt; 2026 goal&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;2 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/109#issuecomment-3762217620&quot;&gt;comment from 2026-01-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;std::autodiff&lt;/code&gt; is moving closer to nightly, and &lt;code&gt;std::offload&lt;/code&gt; is gaining various performance, feature, and hardware support improvements.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;autodiff&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#autodiff&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
autodiff&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sgasho&quot;&gt;sgasho&lt;/a&gt;, and I continued working on enabling autodiff in nightly. We have a PR up that builds autodiff in CI, and verified that the artifacts can be installed and work on Linux. For apple however, we noticed that any autodiff usage hangs. After some investigation, it turns out that we ended up embedding two LLVM copies, one in rustc, and one in Enzyme. It should be comparably easy to get rid of the second one. Once we verified that this fixes the build, we&#x27;ll merge the PR to enable autodiff on both targets in nightly.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;offload&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#offload&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
offload&lt;/h4&gt;
&lt;p&gt;A lot of interesting updates on the performance, feature, and hardware support side.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;, @kevinsala, @jdoerfert, and I started implementing the first benchmarks, since that&#x27;s generally the best way to find missing features or performance issues. We were positively surprised by how good the out-of-the-box performance was. We will implement a few more benchmarks and post the results once we have verified them. We also implemented multiple PRs which implement bugfixes, cleanups, and needed features like &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150288&quot;&gt;support for scalars&lt;/a&gt;. We also started working on LLVM optimizations which make sure that we can achieve even better performance.&lt;/li&gt;
&lt;li&gt;I noticed that our offload intrinsic allowed running Rust code on the GPU, but it wasn&#x27;t of much help when calling gpu vendor libraries like cuBLAS. I &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150683&quot;&gt;implemented&lt;/a&gt; a new helper intrinsic which allows calling those functions conveniently, without having to manually move data to or from the device. It will benefit from the same LLVM optimizations as our full offload intrinsic. It also a bit simpler to set up on the compiler and linker side, so it already works with &lt;code&gt;std&lt;/code&gt; and mangled kernel names, something that we still have to improve for our main offload intrinsic.&lt;/li&gt;
&lt;li&gt;A lot of work happened on the LLVM offload side for SPIRV and Intel GPU support. At the moment, our Rust frontend is tested on NVIDIA and AMD server and consumer GPUs, as well as AMD HPC and Lapotop APUs. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/karolzwolak&quot;&gt;Karol Zwolak&lt;/a&gt; reached out since he wants to help with with also running Rust on Intel GPUs. Offload relies on LLVM which started gaining Intel support, so hopefully we won&#x27;t need much work beyond a new intel-gpu target and a new stdarch module. There is also work on a new spirv target for rustc, which we could also support if it goes through LLVM. Due to some open questions around typed pointers it does not seem clear yet whether it will, so we will have to wait.&lt;/li&gt;
&lt;li&gt;Nikita started working on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150722&quot;&gt;updating&lt;/a&gt; our submodule to LLVM 22. This hopefully does not only brings some compile and runtime performance improvements, but also greatly simplifies how we can build and use offload. Once it landed I&#x27;ll refactor our bootstrapping logic, and as part of that start building offload in CI.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/109#issuecomment-4166618042&quot;&gt;comment from 2026-04-01&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;std::autodiff&lt;/code&gt; is now partly in CI, and &lt;code&gt;std::offload&lt;/code&gt; got tested on a lot more benchmarks.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;autodiff-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#autodiff-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
autodiff&lt;/h4&gt;
&lt;p&gt;Work continued on enabling autodiff in nightly. Since the last update, we have enabled autodiff in some Mingw and Linux runners. Users can now download libEnzyme artifacts, place them locally in the right spot for their toolchain, and then use autodiff on their nightly compiler. Once macOS is added, we will enable a new rustup component that will handle the download for users. Before enabling autodiff on macOS, however, we want to change how we distribute LLVM on this target (from static to dynamic linking). There are a lot of workflows and users of this target, not all of which can be modelled in the Rust CI. Our last two attempts sadly broke such downstream users and local contributors, so both attempts had to be reverted. Since testing here is tricky, progress here might be on the slower side; we will see.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;offload-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#offload-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
offload&lt;/h4&gt;
&lt;p&gt;Most of the work on the offload side lately has been invisible, since we were working on implementing more benchmarks and LLVM optimizations, as well as missing features, discovered by those benchmarks. We achieved excellent performance on those benchmarks; more details will soon be presented by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt; at the EuroLLVM conference in two weeks!&lt;/p&gt;
&lt;p&gt;Beyond benchmarks, there was a lot of tinkering on smaller PRs, reviewing, and housekeeping. LLVM-22 landed, so we updated our bootrstrap code to make use of new APIs, and tried to move a few smaller PRs forward, mainly around a better user experience and for making more Rust features available. Since the focus is still on benchmarks, not many of those PRs landed. They are in a mostly ready state, so it&#x27;s a good time to pick them up if you&#x27;re considering contributing. Please ping me on Zulip or in any PR with the offload label if you are interested!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;getting-rust-for-linux-into-stable-rust-compiler-features&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#getting-rust-for-linux-into-stable-rust-compiler-features&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/407&quot;&gt;Getting Rust for Linux into stable Rust: compiler features&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt;, compiler contributors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/WesleyWiser&quot;&gt;Wesley Wiser&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/rust-for-linux-compiler-features.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;4 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/407#issuecomment-3760359980&quot;&gt;comment from 2026-01-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-01-14 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;register-tool-rust-66079&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#register-tool-rust-66079&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;#![register_tool]&lt;/code&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/66079&quot;&gt;rust#66079&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Tyler Mandry proposed FCP of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3808&quot;&gt;RFC#3808&lt;/a&gt; and nominated it for a Lang discussion.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zdebuginfo-compression-rust-120953&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zdebuginfo-compression-rust-120953&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;-Zdebuginfo-compression&lt;/code&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/120953&quot;&gt;rust#120953&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Wesley Wiser proposed stabilization: &lt;a href&#x3D;&quot;ttps://github.com/rust-lang/rust/pull/150625&quot;&gt;rust#150625&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Josh Triplett suggested trying to bring &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/trifectatechfoundation/zlib-rs&quot;&gt;zlib-rs&lt;/a&gt; in the kernel as a case study.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zdirect-access-external-data-rust-127488&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zdirect-access-external-data-rust-127488&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;-Zdirect-access-external-data&lt;/code&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/127488&quot;&gt;rust#127488&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150494&quot;&gt;rust#150494&lt;/a&gt; was merged two days ago, what reminds is updating the documentation and stabilizing the feature.&lt;/p&gt;
&lt;p&gt;There&#x27;s an &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/425075-rust-for-linux/topic/New.20relocation.20model.20for.20relocatable.20code.20but.20static.20data/with/566044955&quot;&gt;ongoing discussion about the feature on the Rust Zulip&lt;/a&gt; as well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/407#issuecomment-3914550342&quot;&gt;comment from 2026-02-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Updates from the 2026-01-28 and 2026-02-11 meetings:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zdirect-access-external-data-rust-127488-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zdirect-access-external-data-rust-127488-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
-Zdirect-access-external-data &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/127488&quot;&gt;rust#127488&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nbdd0121&quot;&gt;Gary Guo&lt;/a&gt;&#x27;s &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150494&quot;&gt;fix PR&lt;/a&gt; was merged.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;emit-noreturn&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#emit-noreturn&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;--emit&#x3D;noreturn&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ojeda&quot;&gt;Miguel Ojeda&lt;/a&gt; reiterated that this is high on the list of compiler features the project needs. Right now, they&#x27;re &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/objtool/check.c#n186&quot;&gt;doing these checks manually&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Improving objtool&#x27;s handling of noreturn is on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nbdd0121&quot;&gt;Gary Guo&lt;/a&gt;&#x27;s radar but there wasn&#x27;t time yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/407#issuecomment-4068915161&quot;&gt;comment from 2026-03-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-03-11 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;emit-noreturn-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#emit-noreturn-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;--emit&#x3D;noreturn&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;It seems that figuring out which functions are &lt;code&gt;noreturn&lt;/code&gt; is at a level too low for rustc. Function signatures are not sufficient and there are cases where &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://godbolt.org/z/jexfjGanf&quot;&gt;rustc doesn&#x27;t know&lt;/a&gt; whether to emit &lt;code&gt;noreturn&lt;/code&gt;. It is something we should ask the LLVM to give us that information.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zsanitizer-kernel-hwaddress&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zsanitizer-kernel-hwaddress&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/975&quot;&gt;&lt;code&gt;-Zsanitizer&#x3D;kernel-hwaddress&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt; opened a new issue to introduce the &lt;code&gt;-Zsanitizer&#x3D;kernel-hwaddress&lt;/code&gt; sanitizer for aarch64 targets: https://github.com/rust-lang/compiler-team/issues/975&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zharden-sls&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zharden-sls&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/116851&quot;&gt;&lt;code&gt;-Zharden-sls&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/WesleyWiser&quot;&gt;Wesley Wiser&lt;/a&gt; is working on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152821&quot;&gt;allowing forbidden target features to be hard errors&lt;/a&gt;, which the &lt;code&gt;-Zharden-sls&lt;/code&gt; patch should be rebased on top of.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;register-tool&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#register-tool&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/66079&quot;&gt;&lt;code&gt;#![register_tool]&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3808&quot;&gt;corresponding RFC&lt;/a&gt; has been discussed by the Lang team on 2026-03-11. The overall vibe was positive and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/traviscross&quot;&gt;TC&lt;/a&gt; is going to read through it and hopefully check a box on the proposed FCP.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zdebuginfo-compression&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zdebuginfo-compression&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/120953&quot;&gt;&lt;code&gt;-Zdebuginfo-compression&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150625&quot;&gt;proposed stabilization&lt;/a&gt; received some feedback that needs to be addressed.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zdirect-access-external-data&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zdirect-access-external-data&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/127488&quot;&gt;&lt;code&gt;-Zdirect-access-external-data&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The discussion here has stalled.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/407#issuecomment-4223621611&quot;&gt;comment from 2026-04-10&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-04-08 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zsanitize-kernel-hwaddress&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zsanitize-kernel-hwaddress&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153049&quot;&gt;&lt;code&gt;-Zsanitize&#x3D;kernel-hwaddress&lt;/code&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/153049&quot;&gt;rust#153049&lt;/a&gt; is merged. What remains of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/154171&quot;&gt;tracking issue rust#154171&lt;/a&gt; is a few docs checklists.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt; added the unstable book doc changes in the PR itself and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/WesleyWiser&quot;&gt;Wesley Wiser&lt;/a&gt; confirmed that&#x27;s all the documentation needed for sanitizers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;getting-rust-for-linux-into-stable-rust-language-features&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#getting-rust-for-linux-into-stable-rust-language-features&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116&quot;&gt;Getting Rust for Linux into stable Rust: language features&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dingxiangfei2009&quot;&gt;Ding Xiang Fei&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/governance/teams&quot;&gt;lang-docs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/traviscross&quot;&gt;TC&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Superseded by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/roadmap-rust-for-linux.html&quot;&gt;Rust for Linux&lt;/a&gt; 2026 roadmap&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;6 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-3768690708&quot;&gt;comment from 2026-01-19&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-01-14 meeting.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;deref-receiver&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#deref-receiver&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;Deref&lt;/code&gt; / &lt;code&gt;Receiver&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Ding&#x27;s arbitrary_self_types: Split the Autoderef chain &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/146095&quot;&gt;rust#146095&lt;/a&gt; is waiting on reviews. It updates the method resolution to essentially: &lt;code&gt;deref_chain(T).flat_map(|U| receiver_chain(U))&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The perf run was a wash and a carter has completed yesterday. Analysis pending.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;rfc-3851-supertrait-auto-impl&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rfc-3851-supertrait-auto-impl&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3851&quot;&gt;RFC #3851: Supertrait Auto-impl&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ding has submitted a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pull/436&quot;&gt;Rust Project goal for Supertrait Auto Impl&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;arbitrary-self-types-rust-44874&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#arbitrary-self-types-rust-44874&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Arbitrary Self Types &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/44874&quot;&gt;rust#44874&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;We&#x27;ve discovered the &lt;code&gt;#[feature(arbitrary_self_types_pointer)]&lt;/code&gt; feature gate. As the Lang consensus is to not support the &lt;code&gt;Receiver&lt;/code&gt; trait on raw pointer types we&#x27;re probably going to remove it (but this needs further discussion). This was a remnant from the original proposal, but the Lang has changed direction since.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;derive-coercepointee-rust-123430&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#derive-coercepointee-rust-123430&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;derive(CoercePointee)&lt;/code&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/123430&quot;&gt;rust#123430&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ding is working on a fix to prevent accidental specialization of the trait implementation. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149968&quot;&gt;rust#149968&lt;/a&gt; is adding an interim fix.&lt;/p&gt;
&lt;p&gt;Alice opened a Reference PR for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/136776&quot;&gt;rust#136776&lt;/a&gt;. There are questions around the behaviour of the &lt;code&gt;as&lt;/code&gt; cast vs. coercions.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;pass-pointers-to-const-in-assembly-rfc-3848&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#pass-pointers-to-const-in-assembly-rfc-3848&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Pass pointers to const in assembly &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3848&quot;&gt;rfc#3848&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Gary opened implementation for the RFC: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/138618&quot;&gt;rust#138618&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;field-projections-goal-390&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#field-projections-goal-390&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Field Projections &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/390&quot;&gt;goal#390&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Benno updated the Field Representing Types PR to the latest design. This makes the PR much simpler.&lt;/p&gt;
&lt;p&gt;Tyler opened a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/beyond-refs&quot;&gt;Beyond References wiki&lt;/a&gt; to keep all the proposals, resources in one place.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;in-place-initialization-goal-395&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#in-place-initialization-goal-395&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
In-place initialization &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/395&quot;&gt;goal#395&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ding is writing a post to describe all the open proposals including Alice&#x27;s new one that she brouhght up during the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://lpc.events/event/19/&quot;&gt;LPC 2025&lt;/a&gt;. He&#x27;ll merge it in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/beyond-refs&quot;&gt;Beyond References wiki&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;macros-attributes-derives-etc&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#macros-attributes-derives-etc&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Macros, attributes, derives, etc.&lt;/h4&gt;
&lt;p&gt;Josh brought up his work on adding more capable declarative macros for writing attributes and derives. He&#x27;s asked the Rust for Linux team for what they need to stop using proc macros.&lt;/p&gt;
&lt;p&gt;Miguel noted they&#x27;ve just added dependency on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/crates/syn&quot;&gt;syn&lt;/a&gt;, but they would like to remove it some day if their could.&lt;/p&gt;
&lt;p&gt;Benno provided a few cases of large macros that he thought were unlikely to be replaceable by declarative-style ones. Josh suggested there may be a way and suggested an asynchronous discussion.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-3909582195&quot;&gt;comment from 2026-02-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Updates from the 2026-01-28 and 2026-02-11 meetings:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;removing-the-likely-unlikely-hints-in-favour-of-cold-path&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#removing-the-likely-unlikely-hints-in-favour-of-cold-path&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Removing the &lt;code&gt;likely&lt;/code&gt;/&lt;code&gt;unlikely&lt;/code&gt; hints in favour of &lt;code&gt;cold_path&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151576&quot;&gt;stabilization of &lt;code&gt;core::hint::cold_path&lt;/code&gt; lint&lt;/a&gt; is imminent and after it, the &lt;code&gt;likely&lt;/code&gt; and &lt;code&gt;unlikely&lt;/code&gt; hints are likely (pardon the pun) to be removed.&lt;/p&gt;
&lt;p&gt;The team discussed the impact of this. These hints are used in C but not yet in Rust. &lt;code&gt;cold_path&lt;/code&gt; would be sufficient, but &lt;code&gt;likely&lt;/code&gt;/&lt;code&gt;unlikely&lt;/code&gt; would still be more convenient in cases where there isn&#x27;t an &lt;code&gt;else&lt;/code&gt; branch. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tmandry&quot;&gt;Tyler Mandry&lt;/a&gt; mentioned that these can be implemented in terms of &lt;code&gt;cold_path&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;niche-optimizations&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#niche-optimizations&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Niche optimizations&lt;/h4&gt;
&lt;p&gt;We discussed the feasibility of embedding data in lower bits of a pointer -- something the kernel is doing in C. This could also enable setting the top bit in the integers (which is otherwise never set) and make it represent an error in that case (and a regular pointer otherwise).&lt;/p&gt;
&lt;p&gt;Ideally, this would be done in safe Rust, as the idea is to improve the safety of the C code in question.&lt;/p&gt;
&lt;p&gt;Extending the niches is something Rust wants to see, but it&#x27;s waiting on pattern types. There are short/medium-term options by using &lt;code&gt;unsafe&lt;/code&gt; and wrapping it in a safe macro, but the long-term hope is to have this supported in the language.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;vendoring-zerocopy&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#vendoring-zerocopy&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Vendoring zerocopy&lt;/h4&gt;
&lt;p&gt;The project has interest in vendoring &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/google/zerocopy&quot;&gt;zerocopy&lt;/a&gt;. We had its maintainers &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jswrenn&quot;&gt;Jack Wrenn&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshlf&quot;&gt;Joshua Liebow-Feeser&lt;/a&gt; join us to discuss this and answer our questions. The main question was about whether to vendor at all, how often should we (or will have to) upgrade, and how much of it is expected to end up in the standard library.&lt;/p&gt;
&lt;p&gt;The project follows semver with the extended promise to not break minor versions even before 1.0.0. We could vendor the current 0.8 and we should be upgrade on our own terms (e.g. when we bring in new features) rather than being forced to.&lt;/p&gt;
&lt;p&gt;Right now, the project is able to experiment with various approaches and capabilities. Any stdlib integration a long way away, but there is interest in integrating these to the language and libraries where appropriate.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;new-trait-solver&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-trait-solver&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New trait solver&lt;/h4&gt;
&lt;p&gt;There&#x27;s been a long-term effort to finish the new trait solver, which will unblock a lot of things. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt; asked about things it&#x27;s blocking for Rust for Linux.&lt;/p&gt;
&lt;p&gt;This is the list: unmovable types, guaranteed destructors, Type Alias Impl Trait (TAIT), Return Type Notation (RTN), const traits, const generics (over integer types), extern type.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;2026-project-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#2026-project-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
2026 Project goals&lt;/h4&gt;
&lt;p&gt;This year brings in the concept of roadmaps. We now have a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/roadmap-rust-for-linux.html&quot;&gt;Rust for Linux&lt;/a&gt; and a few more granular Goals. We&#x27;ll be adding more goals over time, but the one merged cover what we&#x27;ve been focusing on for now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-4039494143&quot;&gt;comment from 2026-03-11&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-02-25 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;2026-project-goals-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#2026-project-goals-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
2026 Project goals&lt;/h4&gt;
&lt;p&gt;We spent most of the meeting going over the open Project goals, the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/roadmap-rust-for-linux.html&quot;&gt;Rust for Linux roadmap&lt;/a&gt; and other things we&#x27;d like to see that aren&#x27;t the right shape for a goal.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ojeda&quot;&gt;Miguel Ojeda&lt;/a&gt; brought up the upcoming Debian 14 release (coming out probably somewhere around Q2 of 2027) and we went over each item and decided whether it&#x27;s something we need to make sure is in that release or not.&lt;/p&gt;
&lt;p&gt;Debian stable is an important milestone and the Rust version in it serves as a baseline for Rust for Linux development.&lt;/p&gt;
&lt;p&gt;I&#x27;ll add all this data into the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/roadmap-rust-for-linux.html&quot;&gt;roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-4068513211&quot;&gt;comment from 2026-03-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-03-11 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;field-projections&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#field-projections&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Field projections&lt;/h4&gt;
&lt;p&gt;We now have a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://lore.kernel.org/rust-for-linux/20260302164239.284084-1-gary@kernel.org/&quot;&gt;macro and machinery that uses the projection mechanism&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;dma_read!&lt;/code&gt; / &lt;code&gt;dma_write!&lt;/code&gt; macros switched over to it. This also fixes a soundness issue &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-for-linux.zulipchat.com/#narrow/channel/288089-General/topic/Soundness.20of.20.60dma_read!.28.29.60/with/573645610&quot;&gt;1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note: this is done entirely via macros and doesn&#x27;t use any Field projections language features. The Field projection syntax and traits should make this more ergonomic and integrate the borrow checker so we can accept more code.&lt;/p&gt;
&lt;p&gt;We&#x27;re planning to have a design meeting with the Lang team in the last week of March.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;rustfmt-imports-formatting-and-trailing-slashes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rustfmt-imports-formatting-and-trailing-slashes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
rustfmt imports formatting and trailing slashes&lt;/h4&gt;
&lt;p&gt;We talked about the rustfmt formatting of the &lt;code&gt;use&lt;/code&gt; statements again. While the trailing empty comment &lt;code&gt;//&lt;/code&gt; workaround (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-3442107142&quot;&gt;see this update&lt;/a&gt;) is acceptable as a temporary measure, we need to find a long-term solution where you can configure rustfmt to accept this style.&lt;/p&gt;
&lt;p&gt;We don&#x27;t have a issue for this specific formatting yet, though it was discussed in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustfmt/issues/3361#issuecomment-3382614679&quot;&gt;#3361&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next step are to create such an issue. We were hesitant to add burden to a team that&#x27;s already at limit, but having the issue would let us track it from the Rust for Linux side.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-4136755115&quot;&gt;comment from 2026-03-26&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-03-26 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;const-generics-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#const-generics-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Const generics&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt; asked the team for features that are most important under the const generics umbrella. This might help with prioritisation and just understanding of practical uses.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ability to do arithmetic on const generic types&lt;/strong&gt;: e.g. the kernel has a type &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust.docs.kernel.org/next/kernel/num/bounded/struct.Bounded.html&quot;&gt;Bounded&lt;/a&gt; which has a value and a maximum size (in bits). Both the bit width and value are const values. They want to be able to do arithmetics on these types (starting with bit shifts) that will guarantee the the result will fit within the specified size at compile time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Argument-position const generics&lt;/strong&gt;: right now, the const generic types must be specified in the type bound section (within the angle brackets). So for example you have to write: &lt;code&gt;Bounded::&amp;lt;u8, 4&amp;gt;::new::&amp;lt;7&amp;gt;()&lt;/code&gt; instead of the more natural &lt;code&gt;Bounded::&amp;lt;u8, 4&amp;gt;::new(7)&lt;/code&gt;. This gets more complicated when there&#x27;s const-time calculation happening rather than just a numerical constant -- in which case this also needs to be wrapped in curly brackets: &lt;code&gt;{ ... }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Being generic over types other than numbers: pointers would be useful for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rfcs/3848-asm-const-ptr.html&quot;&gt;asm_const_ptr&lt;/a&gt;. String literals too -- even if they&#x27;re just passed through without being processed / operated on. And if going from a passthrough string makes it possible to pass through any type, that would help the team replace some typestate patterns they&#x27;re using with an &lt;code&gt;enum&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id&#x3D;&quot;statx&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#statx&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;statx&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team/issues/761&quot;&gt;proposed&lt;/a&gt; being able to create &lt;code&gt;std::fs::Metadata&lt;/code&gt; from Linux &lt;code&gt;statx&lt;/code&gt; syscall.&lt;/p&gt;
&lt;p&gt;This was discussed in the Libs-API meeting and they had questions about possible evolutions of the &lt;code&gt;statx&lt;/code&gt; ABI -- if/how it can grow in the future and how they could handle that if they wanted some of the new data available. So we discussed it in the Rust for Linux meeting.&lt;/p&gt;
&lt;p&gt;In the end, it seems prudent to be reasonably defensive rather than relying on the syscall pre-filling default values.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Darksonn&quot;&gt;Alice Ryhl&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team/issues/761#issuecomment-4132354333&quot;&gt;proposed&lt;/a&gt; an opaque &lt;code&gt;statx&lt;/code&gt; struct that would give the stdlib a way to decide on the struct&#x27;s size, pre-filled contents and mask.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ojeda&quot;&gt;Miguel Ojeda&lt;/a&gt; suggested contacting Christian Brauner and Alexander Viro (i.e. the VFS maintainers); &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt; agreed that it would be good if we can get a thread with the right people in linux-fsdevel.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomassedovic&quot;&gt;Tomas Sedovic&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116#issuecomment-4224585576&quot;&gt;comment from 2026-04-10&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update from the 2026-04-08 meeting:&lt;/p&gt;
&lt;h4 id&#x3D;&quot;zerocopy-features-in-rust-s-std&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#zerocopy-features-in-rust-s-std&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
zerocopy features in Rust&#x27;s std&lt;/h4&gt;
&lt;p&gt;zerocopy uses two traits that are both polyfills for unstable traits : &lt;code&gt;KnownLayout&lt;/code&gt; (for &lt;code&gt;ptr_metadata&lt;/code&gt;) and &lt;code&gt;Immutable&lt;/code&gt; (for &lt;code&gt;Freeze&lt;/code&gt;). It would &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/81513#issuecomment-2414679019&quot;&gt;help maintenance of zerocopy&lt;/a&gt; (which Rust for Linux plans to start using) if these were stabilised.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ptr_metadata&lt;/code&gt; is something the team wants in the kernel independently. It&#x27;s possibly blocked on (or at least might have interactions with) the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/144404&quot;&gt;Sized Hierarchy work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Freeze&lt;/code&gt; (now &lt;code&gt;NoCell&lt;/code&gt;) has an &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3633&quot;&gt;RFC&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;deref-receiver-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#deref-receiver-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;Deref&lt;/code&gt;/&lt;code&gt;Receiver&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726&quot;&gt;Jack Huey&lt;/a&gt; started reviewing &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dingxiangfei2009&quot;&gt;Ding Xiang Fei&lt;/a&gt;&#x27;s &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/146095&quot;&gt;PR to split the autoderef chain&lt;/a&gt; and feels it&#x27;s not ready to go in front of the full Lang team.&lt;/p&gt;
&lt;p&gt;We also discussed the dependence/independence of the &lt;code&gt;Deref&lt;/code&gt; and &lt;code&gt;Receiver&lt;/code&gt; implementations, in particular whether it ever makes sense to implement &lt;code&gt;Deref&lt;/code&gt; but &lt;em&gt;not&lt;/em&gt; &lt;code&gt;Receiver&lt;/code&gt;. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt; suggested gathering examples for cases like that (where you can&#x27;t use the type as a &lt;code&gt;Self&lt;/code&gt; type in the function declaration, but allow calling methods on it).&lt;/p&gt;
&lt;p&gt;The current plan for the experiment is to have these traits separate, but have the compiler enforce that if they implement the same type, their targets are identical. This will let us open the door for any future possibilities (a supertrait / subtrait relation, or having diverging targets in the future).&lt;/p&gt;
&lt;p&gt;We want to experiment to see where and how these traits and their possible evolution might be helpful.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;null-ptr-deref&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#null-ptr-deref&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
null-ptr-deref&lt;/h4&gt;
&lt;p&gt;The team would like to have a (an optional) compiler guarantee, that the compiler never removes null checks on raw pointers. What can currently happen in C is that if you deref a null pointer, the compiler can do optimisations including removing any subsequent checks whether that pointer is null, because dereferencing a null pointer is undefined behaviour.&lt;/p&gt;
&lt;p&gt;But the null check can still help prevent further bugs and in C, the kernel now disables the optimisation that would remove it.&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ojeda&quot;&gt;Miguel Ojeda&lt;/a&gt; is going to open an MCP for this.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;in-place-initialization-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#in-place-initialization-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
In-Place Initialization&lt;/h4&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BennoLossin&quot;&gt;Benno Lossin&lt;/a&gt; opened a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/all-hands-2026/issues/17&quot;&gt;proposal for an in-person room&lt;/a&gt; at the 2026 All Hands for In-place initialization.&lt;/p&gt;
&lt;p&gt;Here&#x27;s a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/153825&quot;&gt;meta issue&lt;/a&gt; tracking all the proposals and discussions about the feature.&lt;/p&gt;
&lt;p&gt;The design space is complex and the team hopes that discussing it in person will help move it forward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;implement-open-api-namespace-support&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implement-open-api-namespace-support&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/256&quot;&gt;Implement Open API Namespace Support&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/b-naber&quot;&gt;b-naber&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/b-naber&quot;&gt;b-naber&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crates.io&quot;&gt;crates-io&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/carols10cents&quot;&gt;Carol Nichols&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/open-namespaces.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;mir-move-elimination&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#mir-move-elimination&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/396&quot;&gt;MIR move elimination&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/mir-move-elimination.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/396#issuecomment-4183522763&quot;&gt;comment from 2026-04-03&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The RFC has just been &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3943&quot;&gt;published&lt;/a&gt;. It has been significantly reworked since the last draft.&lt;/p&gt;
&lt;p&gt;Notable changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removed the concept of activation/de-activation. Now the semantics don&#x27;t need to deal with partially allocated locals. This is less powerful optimization-wise but should still cover most cases.&lt;/li&gt;
&lt;li&gt;Added byref/byval to call arguments to clarify how they are passed.&lt;/li&gt;
&lt;li&gt;Added a separate section for the surface language changes to separate it from the MIR changes.&lt;/li&gt;
&lt;li&gt;Added more details on the MIR optimization which eliminates moves.&lt;/li&gt;
&lt;li&gt;Changed the MIR operand evaluation order to be left-to-right, except for destination places which are always evaluated last.&lt;/li&gt;
&lt;li&gt;Added StorageLive back: we need it to mark the location where &lt;code&gt;llvm.lifetime.start&lt;/code&gt; should be inserted, which is not the same as the location where a local is initialized. In the opsem, &lt;code&gt;StorageLive&lt;/code&gt; doesn&#x27;t actually allocate the local, that&#x27;s still done when it is initialized by a write.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;prototype-a-new-set-of-cargo-plumbing-commands&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#prototype-a-new-set-of-cargo-plumbing-commands&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/264&quot;&gt;Prototype a new set of Cargo &quot;plumbing&quot; commands&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/cargo-plumbing.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;prototype-cargo-build-analysis&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#prototype-cargo-build-analysis&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/398&quot;&gt;Prototype Cargo build analysis&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;Weihang Lo&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;Weihang Lo&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Completed&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;1 detailed update available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;Weihang Lo&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/398#issuecomment-3725163795&quot;&gt;comment from 2026-01-08&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The prototype of this project goal is basically complete.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;current-state&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#current-state&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Current state&lt;/h3&gt;
&lt;p&gt;This project goal introduces &lt;strong&gt;build analysis support in Cargo&lt;/strong&gt;, with the aim of making build behavior understandable across multiple invocations, not just a single run.&lt;/p&gt;
&lt;p&gt;At a high level, the prototype:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Records build metadata over time, including:
&lt;ul&gt;
&lt;li&gt;rebuild reasons&lt;/li&gt;
&lt;li&gt;timing information&lt;/li&gt;
&lt;li&gt;relevant invocation context&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Stores this data locally in a structured log format suitable for later analysis&lt;/li&gt;
&lt;li&gt;Exposes the data via unstable &lt;code&gt;cargo report&lt;/code&gt; subcommands, such as:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cargo report sessions&lt;/code&gt; - list session IDs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report timings&lt;/code&gt; - HTML timing report&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report rebuilds&lt;/code&gt; - Why things rebuilt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-analysis&quot;&gt;the Reference&lt;/a&gt; for a more thorough usage documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id&#x3D;&quot;path-towards-stabilization&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#path-towards-stabilization&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Path towards stabilization&lt;/h3&gt;
&lt;p&gt;Before this feature can be stabilized, the following unresolved questions must be answered. They might not block stabilization, but need to be evaluated if it is fine to leave for future.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;cargo-report-commands&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-report-commands&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;cargo report&lt;/code&gt; commands&lt;/h4&gt;
&lt;p&gt;This is a stabilization blocker.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Currently all three report commands (&lt;code&gt;sessions&lt;/code&gt;, &lt;code&gt;rebuilds&lt;/code&gt;, &lt;code&gt;timings&lt;/code&gt;)
implicitly inspect global log files when if not in a workspace.
&lt;ul&gt;
&lt;li&gt;Should this be explicit with a flag?&lt;/li&gt;
&lt;li&gt;Should this be an error if not in a workspace?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Bikeshed on command names
&lt;ul&gt;
&lt;li&gt;Currently we have all nouns
&lt;ul&gt;
&lt;li&gt;For &lt;code&gt;sessions&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;runs&lt;/code&gt; simple but ambiguous&lt;/li&gt;
&lt;li&gt;Just &lt;code&gt;log&lt;/code&gt; like &lt;code&gt;git log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;history&lt;/code&gt; user-friendly (&lt;code&gt;docker history&lt;/code&gt;, shell &lt;code&gt;history&lt;/code&gt;, though not alike)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;timings&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Not controversial, as we have &lt;code&gt;--timings&lt;/code&gt; flag already&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;rebuilds&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rebuild-reasons&lt;/code&gt; more explicit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Or move to action-oriented verbs:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report list-sessions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report analyze-timings&lt;/code&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://bazel.build/docs/user-manual#analyze-profile&quot;&gt;&lt;code&gt;bazel analyze-profile&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report explain-rebuilds&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Or question-oriented verbs:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report what-ran&lt;/code&gt; more general (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://buck2.build/docs/developers/what-ran/&quot;&gt;&lt;code&gt;buck2 log what-ran&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cargo report why-rebuilt/why-reran&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id&#x3D;&quot;cargo-report-sessions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-report-sessions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;cargo report sessions&lt;/code&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Currently it prints a human-readable output without a format for programmable use cases.
&lt;ul&gt;
&lt;li&gt;Should we provide a programmable output (for example behind &lt;code&gt;--message-format&#x3D;json&lt;/code&gt;)?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id&#x3D;&quot;cargo-report-rebuilds&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-report-rebuilds&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;cargo report rebuilds&lt;/code&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Extend the report from fingerprint to new hash (&lt;code&gt;-Cmetadata&lt;/code&gt;/&lt;code&gt;-Cextra-filename&lt;/code&gt;)
&lt;ul&gt;
&lt;li&gt;We currently can&#x27;t distinguish whether a fresh build is a real new build or just rustflags changed&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16456#discussion_r2662364819&quot;&gt;https://github.com/rust-lang/cargo/pull/16456#discussion_r2662364819&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Make each rebuilt reason more actionable and friendly for end-users.&lt;/li&gt;
&lt;li&gt;Should we log the fingerprint values being compared, or just the diff result?&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/logging.20unit.20fingerprint/near/565825913&quot;&gt;#t-cargo &amp;gt; logging unit fingerprint @ 💬&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id&#x3D;&quot;log-message-schema&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#log-message-schema&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Log message schema&lt;/h4&gt;
&lt;p&gt;This is a stabilization blocker.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Providing types for reading log messages
&lt;ul&gt;
&lt;li&gt;We should export &lt;code&gt;LogMessage&lt;/code&gt; enum and related types in &lt;code&gt;cargo-util-schemas&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Users may want to parse logs programmatically&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16150#discussion_r2462065538&quot;&gt;https://github.com/rust-lang/cargo/pull/16150#discussion_r2462065538&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
JSON schema evolution and versioning
&lt;ul&gt;
&lt;li&gt;Should we version the schema explicitly in each message?&lt;/li&gt;
&lt;li&gt;Compatibility might be the same as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/commands/cargo-metadata.html?highlight&#x3D;compa#compatibility&quot;&gt;https://doc.rust-lang.org/nightly/cargo/commands/cargo-metadata.html?highlight&#x3D;compa#compatibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Message structure consistency
&lt;ul&gt;
&lt;li&gt;Current log messages deviate from cargo&#x27;s normal JSON message structure&lt;/li&gt;
&lt;li&gt;Should we align with existing cargo JSON output format, for example the &lt;code&gt;target&lt;/code&gt; field?&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16414#discussion_r2632724893&quot;&gt;https://github.com/rust-lang/cargo/pull/16414#discussion_r2632724893&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/16303#discussion_r2565526807&quot;&gt;https://github.com/rust-lang/cargo/pull/16303#discussion_r2565526807&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/16303#discussion_r2561862478&quot;&gt;https://github.com/rust-lang/cargo/pull/16303#discussion_r2561862478&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Should we expose the entire &lt;code&gt;DirtyReason&lt;/code&gt; enum as-is?
&lt;ul&gt;
&lt;li&gt;Currently exposes internal implementation details&lt;/li&gt;
&lt;li&gt;May want to create a separate public-facing enum&lt;/li&gt;
&lt;li&gt;Need to decide which variants are user-facing vs internal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Check usefulness of each variant
&lt;ul&gt;
&lt;li&gt;Some variants may be obsolete (e.g., &lt;code&gt;RustflagsChanged&lt;/code&gt; may be rare after &lt;code&gt;-Cmetadata&lt;/code&gt; changes)&lt;/li&gt;
&lt;li&gt;Need audit of which variants actually occur in practice&lt;/li&gt;
&lt;li&gt;Remove or consolidate rarely-used variants&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Make dirty reasons end-user friendly
&lt;ul&gt;
&lt;li&gt;Current reasons are technical (e.g., &quot;local fingerprint type changed&quot;)&lt;/li&gt;
&lt;li&gt;Users need actionable messages (e.g., &quot;file modified: src/lib.rs&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Expose &lt;code&gt;target&lt;/code&gt; and &lt;code&gt;mode&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Are they universal for all kind of units?
We might want to rename mode to action, as an action kind of a unit.&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/build.20analysis.20log.20format/near/564781487&quot;&gt;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/build.20analysis.20log.20format/near/564781487&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id&#x3D;&quot;log-infrastructure&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#log-infrastructure&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Log infrastructure&lt;/h4&gt;
&lt;p&gt;These are mostly future possibilities, not a stabilization blocker,
as it is highly possible to do incremental improvements.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
log compression &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16475&quot;&gt;https://github.com/rust-lang/cargo/issues/16475&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
log rotation &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16471&quot;&gt;https://github.com/rust-lang/cargo/issues/16471&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
Is losing data on crashes ok? https://github.com/rust-lang/cargo/pull//16150#discussion_r2462056940&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See also &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16471#issuecomment-3724915770&quot;&gt;https://github.com/rust-lang/cargo/issues/16471#issuecomment-3724915770&lt;/a&gt;&lt;/p&gt;
&lt;h4 id&#x3D;&quot;nested-cargo-calls&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#nested-cargo-calls&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Nested Cargo calls&lt;/h4&gt;
&lt;p&gt;See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16477&quot;&gt;https://github.com/rust-lang/cargo/issues/16477&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Basically, we need to have a way to associate log files of nested Cargo calls.
That helps other tools as well as &lt;code&gt;cargo fix&lt;/code&gt; itself.&lt;/p&gt;
&lt;p&gt;This is a stabilization blocker.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;how-contributors-can-help&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-contributors-can-help&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How contributors can help&lt;/h4&gt;
&lt;p&gt;Future contributors can help by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;picking up any linked issues below or in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15844&quot;&gt;https://github.com/rust-lang/cargo/issues/15844&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;building external tools utilizing the log messages, and providing feedback&lt;/li&gt;
&lt;li&gt;providing real-world feedback from large or unusual builds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A series of follow-up tasks has been cut to track remaining work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16470&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16471&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16472&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16473&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16474&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16475&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16477&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/cargo/issues/16488&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;reflection-and-comptime&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#reflection-and-comptime&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406&quot;&gt;reflection and comptime&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/scottmcm&quot;&gt;Scott McMurray&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team&quot;&gt;libs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/joshtriplett&quot;&gt;Josh Triplett&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/reflection-and-comptime.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;5 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406#issuecomment-3749416638&quot;&gt;comment from 2026-01-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/146923&quot;&gt;The MVP&lt;/a&gt; has landed, and we even got the first contribs adding array support to reflection.
&lt;ul&gt;
&lt;li&gt;there are lots more types and type information that we could support, and it&#x27;s rather easy to add more. Happy to review any work here.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150033&quot;&gt;&lt;code&gt;try_as_dyn&lt;/code&gt; and &lt;code&gt;try_as_dyn_mut&lt;/code&gt;&lt;/a&gt; have landed, and I&#x27;m working on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150161&quot;&gt;removing the &lt;code&gt;&#x27;static&lt;/code&gt; requirement&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406#issuecomment-3871224433&quot;&gt;comment from 2026-02-09&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;@BD103 added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151019&quot;&gt;&lt;code&gt;Type::of&lt;/code&gt; for unsized types&lt;/a&gt; and support for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151118&quot;&gt;slices&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151031&quot;&gt;arrays&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151119&quot;&gt;raw pointer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/SpriteOvO&quot;&gt;Asuna&lt;/a&gt; added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151123&quot;&gt;all of our primitives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/clubby789&quot;&gt;Jamie Hill-Daniel&lt;/a&gt; gave us &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151222&quot;&gt;references&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;@izagawd made it possible to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151239&quot;&gt;extract some info from &lt;code&gt;dyn Trait&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is ongoing work for Adts and function pointers, both of which will land as MVPs and will need some work to make them respect semver or generally become useful in practice&lt;/p&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/150161&quot;&gt;Removing the &lt;code&gt;&#x27;static&lt;/code&gt; bound from &lt;code&gt;try_as_dyn&lt;/code&gt;&lt;/a&gt; turned out to have many warts, so I&#x27;m limiting it to a much smaller subset and will have borrowck emit the &lt;code&gt;&#x27;static&lt;/code&gt; requirement if the other rules do not apply (instead of having an unconditional &lt;code&gt;&#x27;static&lt;/code&gt; requirement)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406#issuecomment-4093308372&quot;&gt;comment from 2026-03-19&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;I added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152381&quot;&gt;support for getting reflection information of any type, not just &lt;code&gt;&#x27;static&lt;/code&gt; ones&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/9SonSteroids&quot;&gt;9SonSteroids&lt;/a&gt; added a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152173&quot;&gt;function pointer MVP&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152003&quot;&gt;trait object support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/SpriteOvO&quot;&gt;Asuna&lt;/a&gt; added &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/151142&quot;&gt;basic struct/enum/union support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406#issuecomment-4294713163&quot;&gt;comment from 2026-04-22&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No changes since last time.&lt;/p&gt;
&lt;p&gt;I&#x27;m writing a document for the lang team meeting on reflection next week&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oliver Scherer&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/406#issuecomment-4294725433&quot;&gt;comment from 2026-04-22&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 id&#x3D;&quot;help-wanted-3&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#help-wanted-3&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Help wanted&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;add more information to adts (e.g. doc comments, attributes, ...), whatever else is usually used by crates like bevy-reflect&lt;/li&gt;
&lt;li&gt;need to make struct field reflection respect privacy&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;rework-cargo-build-dir-layout&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rework-cargo-build-dir-layout&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/401&quot;&gt;Rework Cargo Build Dir Layout&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;Ross Sullivan&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;Weihang Lo&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Completed; the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/cargo-cross-workspace-cache.html&quot;&gt;Cargo cross workspace cache&lt;/a&gt; 2026 goal will build on this work&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;2 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;Ross Sullivan&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/401#issuecomment-3752502595&quot;&gt;comment from 2026-01-15&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16155&quot;&gt;Fine grain locking for &lt;code&gt;build-dir&lt;/code&gt;&lt;/a&gt; was merged and now available on nightly via &lt;code&gt;-Zfine-grain-locking&lt;/code&gt; unstable flag. 🎉&lt;/p&gt;
&lt;p&gt;There are some known issues we&#x27;d like to address before doing a formal call for testing. Notably, improving blocking messages, fixing potential thread starvation in Cargo&#x27;s job queue when locks block, and investigate increasing rlimits to reduce risk of hitting max file descriptors for large projects.&lt;/p&gt;
&lt;p&gt;I am hopeful that these issues will be resolved over the coming month and we can do a call for testing to start gathering feedback from the community on whether the new locking strategy improves workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;Ross Sullivan&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/401#issuecomment-4024119674&quot;&gt;comment from 2026-03-09&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;After the initial PR from the last update was merged, we shifted our focus to resolving some of the known issues. Notably, locking blocks the Cargo job queue slowly causing thread starvation if many build units are held by another Cargo instance.&lt;/p&gt;
&lt;p&gt;We investigated adding the ability for Cargo to &quot;suspend&quot; a job internally while waiting for a lock, but we felt this change was a bit invasive and did not fit well with how the job queue was designed. Instead we plan to change our design to acquire all build unit locks prior to running the job queue (see &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16657&quot;&gt;#16657&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;At the same time, we have continued to refine the new &lt;code&gt;build-dir&lt;/code&gt; to prepare it for a call for testing and eventual stabilization. (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16542&quot;&gt;#16542&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16502&quot;&gt;#16502&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16515&quot;&gt;#16515&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16514&quot;&gt;#16514&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Finally we decided to split &lt;code&gt;.cargo-lock&lt;/code&gt; into 2 locks to allow &lt;code&gt;cargo check&lt;/code&gt; and &lt;code&gt;cargo build&lt;/code&gt; to run in parallel when &lt;code&gt;artifact-dir &#x3D;&#x3D; build-dir&lt;/code&gt; (and &lt;code&gt;-Zfine-grain-locking&lt;/code&gt; is enabled)&lt;/p&gt;
&lt;p&gt;I suspect this may be the last update on this goal, as the 2026 slate of goals is coming up. While I did not renew this goal for 2026, I do plan to continue work on this and eventually stabilize this within this year.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;run-more-tests-for-gcc-backend-in-the-rust-s-ci&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#run-more-tests-for-gcc-backend-in-the-rust-s-ci&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/402&quot;&gt;Run more tests for GCC backend in the Rust&#x27;s CI&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/WesleyWiser&quot;&gt;Wesley Wiser&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team&quot;&gt;infra&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcoieni&quot;&gt;Marco Ieni&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Completed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;rust-stabilization-of-memorysanitizer-and-threadsanitizer-support&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-stabilization-of-memorysanitizer-and-threadsanitizer-support&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/403&quot;&gt;Rust Stabilization of MemorySanitizer and ThreadSanitizer Support&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jakos-sec&quot;&gt;Jakob Koschel&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/1c3t3a&quot;&gt;Bastian Kersting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/stabilization-of-sanitizer-support.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;3 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jakos-sec&quot;&gt;Jakob Koschel&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/403#issuecomment-3750257467&quot;&gt;comment from 2026-01-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/951&quot;&gt;MCP&lt;/a&gt; has been seconded and is still waiting 3 days to be approved. Once that is done, we can proceed with merging the Tier 2 target.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jakos-sec&quot;&gt;Jakob Koschel&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/403#issuecomment-3907370057&quot;&gt;comment from 2026-02-16&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Both the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/951&quot;&gt;MCP&lt;/a&gt; and the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149644&quot;&gt;PR&lt;/a&gt; for the AddressSanitizer target have been merged. Next up I should prepare the MCP for the Memory- and ThreadSanitizer targets, hopefully sending out soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jakos-sec&quot;&gt;Jakob Koschel&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/403#issuecomment-4161071545&quot;&gt;comment from 2026-03-31&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/152757&quot;&gt;targets for MSan and TSan&lt;/a&gt; are merged now.&lt;/p&gt;
&lt;p&gt;Next, I&#x27;ll be working on stabilizing those two, now that we have a way to use it without other unstable features (&lt;code&gt;build-std&lt;/code&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;rust-vision-document&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-vision-document&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/269&quot;&gt;Rust Vision Document&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;&lt;/strong&gt;, vision team&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Partially completed; work continues outside of Project Goals&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;rustc-perf-improvements&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rustc-perf-improvements&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/275&quot;&gt;rustc-perf improvements&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Jamesbarford&quot;&gt;James Barford&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team&quot;&gt;infra&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Technical work completed; remaining policy and infrastructure work postponed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;stabilize-public-private-dependencies&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilize-public-private-dependencies&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/272&quot;&gt;Stabilize public/private dependencies&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo&quot;&gt;cargo&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/pub-priv.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;stabilize-rustdoc-doc-cfg-feature&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stabilize-rustdoc-doc-cfg-feature&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/404&quot;&gt;Stabilize rustdoc &lt;code&gt;doc_cfg&lt;/code&gt; feature&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;rustdoc&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GuillaumeGomez&quot;&gt;Guillaume Gomez&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; Not completed (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/404#issuecomment-3667410003&quot;&gt;blocked&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;sve-and-sme-on-aarch64&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#sve-and-sme-on-aarch64&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270&quot;&gt;SVE and SME on AArch64&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libs-team&quot;&gt;libs&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/scalable-vectors.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;5 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270#issuecomment-3754437263&quot;&gt;comment from 2026-01-15&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/143924&quot;&gt;rust-lang/rust#143924&lt;/a&gt; has been merged, enabling scalable vector types to be defined on nightly, and I&#x27;m working on a patch to introduce unstable intrinsics/scalable vector types to &lt;code&gt;std::arch&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270#issuecomment-3914105881&quot;&gt;comment from 2026-02-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Progress has been slow since the last update because I&#x27;ve been busy, but I&#x27;ve been working on a rebase of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/stdarch/pull/1509&quot;&gt;rust-lang/stdarch#1509&lt;/a&gt;, which has bitrot quite a bit. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; is joining me to work on the Sized Hierarchy parts of the goal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270#issuecomment-4073820988&quot;&gt;comment from 2026-03-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On the scalable vector half of the goal, I&#x27;ve got a branch with &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/stdarch/pull/1509&quot;&gt;rust-lang/stdarch#1509&lt;/a&gt; rebased, though without the &lt;code&gt;intrinsic-test&lt;/code&gt; tool having been updated - that ended up being tricky and we&#x27;ve agreed to do it as a follow-up. We&#x27;ve opened &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/153286&quot;&gt;rust-lang/rust#153286&lt;/a&gt; with the compiler fixes that the stdarch patch requires, which should land soon (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/153653&quot;&gt;rust-lang/rust#153653&lt;/a&gt; was opened and landed in the interim).&lt;/p&gt;
&lt;p&gt;On the sized hierarchy half of the goal, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; has been updating our RFC such that we can discuss it in design meetings with the language team on the 18th and 25th - we&#x27;ll update &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3729&quot;&gt;rust-lang/rfcs#3729&lt;/a&gt; later today. We&#x27;ve split out the &lt;code&gt;const Sized&lt;/code&gt; parts as a future possibility (though one we are committed to pursuing) as that has more open design questions, and we&#x27;ve discussed the proposed syntax and approach to migration - which are what we intend to focus on in the design meetings. He&#x27;s also been working out how we can start implementing our migration strategy and help resolve blockers in other areas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270#issuecomment-4076740397&quot;&gt;comment from 2026-03-17&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Per last comment, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3729#issuecomment-4076702909&quot;&gt;rust-lang/rfcs#3729 has been updated&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco&quot;&gt;David Wood&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/270#issuecomment-4245300680&quot;&gt;comment from 2026-04-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For the scalable vector half of the goal, we&#x27;ve landed a bunch of compiler fixes - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/153286&quot;&gt;rust-lang/rust#153286&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/153608&quot;&gt;rust-lang/rust#153608&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/154850&quot;&gt;rust-lang/rust#154850&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/154950&quot;&gt;rust-lang/rust#154950&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/155106&quot;&gt;rust-lang/rust#155106&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/155243&quot;&gt;rust-lang/rust#155243&lt;/a&gt; - and opened our stdarch patch with intrinsics - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/stdarch/pull/2071&quot;&gt;rust-lang/stdarch#2071&lt;/a&gt;. That patch should be passing CI tomorrow once nightly updates to fix an unrelated spurious CI failure. We&#x27;ve got a handful of follow-ups to do afterwards, listed on &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/rust/pull/145052&quot;&gt;rust-lang/rust#145052&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For the sized hierarchy half of the goal, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; and I had two design meetings with the language team (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/@rust-lang-team/SJlubIO5bl&quot;&gt;2026/03/18&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/@rust-lang-team/r1TBpYZsWg&quot;&gt;2026/03/25&lt;/a&gt;) discussing the syntax/naming and migration strategy respectively.&lt;/p&gt;
&lt;p&gt;On syntax, the language team preferred introducing an &quot;only bounds&quot; syntax to control opting-out of default bounds and opting-in to alternative bounds in a family of traits (described in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidtwco/rfcs/blob/1bb22f00880cb6d24192af4041585683b56e9b3a/text/3729-sized-hierarchy.md#adding-only-bounds&quot;&gt;an alternative in the RFC&lt;/a&gt;), but there was an open question of whether that syntax should apply to an individual bound or all of the bounds - &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis&quot;&gt;Niko Matsakis&lt;/a&gt; is investigating that.&lt;/p&gt;
&lt;p&gt;On naming, the language team also preferred the name &lt;code&gt;SizeOfVal&lt;/code&gt; over &lt;code&gt;MetaSized&lt;/code&gt;, and didn&#x27;t like &lt;code&gt;Pointee&lt;/code&gt; but had no better alternatives. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; prepared rust-lang/rust#154374 to do that renaming and started &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/vibeck.20on.20Sized.20Hierarchy.20trait.20names/near/583074346&quot;&gt;a discussion with the library team&lt;/a&gt; to confirm they were happy with the name, because changing it involves an amount of churn. The library team &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/vibeck.20on.20Sized.20Hierarchy.20trait.20names/near/584067359&quot;&gt;wanted to know what other traits in the hierarchy might later be introduced&lt;/a&gt;, as that would help inform the naming of the currently proposed traits, so &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/vibeck.20on.20Sized.20Hierarchy.20trait.20names/near/584637057&quot;&gt;wrote up a document&lt;/a&gt; with that information. We&#x27;re holding off on doing any name changes until we find some consensus between libs and lang - who is responsible for these traits&#x27; names is a bit unclear.&lt;/p&gt;
&lt;p&gt;On migration, the language team were largely happy with our proposed approach, and we realised that the approach proposed by lcnr for associated types might also work for our other migrations. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd&quot;&gt;Rémy Rakic&lt;/a&gt; has had meetings with lcnr to better understand that approach and to work out the next steps for implementing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id&#x3D;&quot;type-system-documentation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#type-system-documentation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/405&quot;&gt;Type System Documentation&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lcnr&quot;&gt;lcnr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team&quot;&gt;types&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/BoxyUwU&quot;&gt;Boxy&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/typesystem-docs.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;unsafe-fields&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#unsafe-fields&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/273&quot;&gt;Unsafe Fields&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;People involved:&lt;/strong&gt; &lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jswrenn&quot;&gt;Jack Wrenn&lt;/a&gt;&lt;/strong&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jhpratt&quot;&gt;Jacob Pratt&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/veluca93&quot;&gt;Luca Versari&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Champions:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/compiler-team&quot;&gt;compiler&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jswrenn&quot;&gt;Jack Wrenn&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://github.com/rust-lang/lang-team&quot;&gt;lang&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/scottmcm&quot;&gt;Scott McMurray&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status:&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/unsafe-fields.html&quot;&gt;Continued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;2 detailed updates available.&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jswrenn&quot;&gt;Jack Wrenn&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/273#issuecomment-3922926899&quot;&gt;comment from 2026-02-18&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;RFC has been accepted. I&#x27;m preparing a 2026 continuing goal for stabilization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jswrenn&quot;&gt;Jack Wrenn&lt;/a&gt;&lt;/strong&gt; — &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/273#issuecomment-4244724055&quot;&gt;comment from 2026-04-14&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Opened PR (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/16767&quot;&gt;#16767&lt;/a&gt;(https://github.com/rust-lang/rust-clippy/pull/16767)) extending Clippy support to unsafe fields.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;blockers-7&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#blockers-7&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Blockers&lt;/h3&gt;
&lt;p&gt;Waiting for t-clippy to review &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/16767&quot;&gt;#16767&lt;/a&gt;(https://github.com/rust-lang/rust-clippy/pull/16767).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
</content>

        <author>
            <name>Nurzhan Saken</name>
        </author>
    </entry>
    <entry>
        <title>Rust is participating in Outreachy</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/05/04/outreachy-2026-may/" type="text/html" title="Rust is participating in Outreachy" />
        <published>2026-05-04T00:00:00+00:00</published>
        <updated>2026-05-04T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/05/04/outreachy-2026-may/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/05/04/outreachy-2026-may/">&lt;p&gt;The Rust Project has been building up a good history of participating in various open-source mentorship programs, including &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/&quot;&gt;Google Summer of Code&lt;/a&gt; for three years (including this year) and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/05/07/OSPP-2024/&quot;&gt;previously OSPP&lt;/a&gt;. We&#x27;re happy to announce that this year we are also participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.outreachy.org/&quot;&gt;Outreachy&lt;/a&gt; starting in the May 2026 cohort.&lt;/p&gt;
&lt;p&gt;Each of these mentorship programs has different criteria for eligibility depending on who they target and the motivations of the program. Outreachy provides internships in open source, to people from any background who face underrepresentation, systemic bias, or discrimination in the technical industry where they are living. You can learn more about the Outreachy program &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.outreachy.org/&quot;&gt;on their website&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-is-outreachy-and-how-is-it-different-than-google-summer-of-code&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-outreachy-and-how-is-it-different-than-google-summer-of-code&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is Outreachy and how is it different than Google Summer of Code&lt;/h2&gt;
&lt;p&gt;Outreachy is similar to Google Summer of Code (GSoC) in some aspects, but different in others. First off, unlike GSoC, Outreachy interns first apply to the overall program and only &lt;em&gt;then&lt;/em&gt; can apply to specific communities. Second, while oftentimes GSoC applicants submit various contributions prior to their application, Outreachy has a dedicated period where contributions are not just optional, but required. Finally, Outreachy applicants submit an application similar to GSoC applications and communities pick interns based on those applications and the interns&#x27; contributions. Outreachy has two internship periods per year, one running from May to August (in which we are currently participating) and one from December to March.&lt;/p&gt;
&lt;p&gt;The other major difference between Google Summer of Code and Outreachy is the source of intern stipends. For GSoC, Google graciously covers contributor stipends and overhead. For Outreachy, communities instead cover the interns&#x27; stipends and overhead.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;we-are-mentoring-4-interns-for-the-may-2026-cohort&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#we-are-mentoring-4-interns-for-the-may-2026-cohort&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
We are mentoring 4 interns for the May 2026 cohort&lt;/h2&gt;
&lt;p&gt;Because of limited funding availability and mentoring capacity, the Rust Project decided to select four interns for mentorship. We&#x27;ll briefly share these projects below.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;calling-overloaded-c-functions-from-rust&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#calling-overloaded-c-functions-from-rust&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Calling overloaded C++ functions from Rust&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.github.com/Ajay-singh1&quot;&gt;Ajay Singh&lt;/a&gt; has been selected, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/teor2345&quot;&gt;teor&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cramertj&quot;&gt;Taylor Cramer&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/thunderseethe&quot;&gt;Ethan Smith&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This project aims to implement an experimental feature for calling overloaded C++ functions from Rust, and to begin testing that feature in a few representative use cases.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;code-coverage-of-the-rust-compiler-at-scale&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#code-coverage-of-the-rust-compiler-at-scale&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Code coverage of the Rust compiler at scale&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/akintewe&quot;&gt;Akintewe Oluwasola&lt;/a&gt; has been selected, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726/&quot;&gt;Jack Huey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This project aims to develop the workflows to run and analyze code coverage of the compiler at the scale of the entire compiler test suite and on ecosystem crates detected by crater. The hope is to be able to detect when the compiler is inadequately tested, both within the compiler and in the ecosystem, and to build tools to do continuous analysis on this.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;fuzzing-the-a-mir-formality-type-system-implementation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#fuzzing-the-a-mir-formality-type-system-implementation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Fuzzing the a-mir-formality type system implementation&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/System625&quot;&gt;Tunde-Ajayi Olamiposi&lt;/a&gt; has been selected, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nikomatsakis/&quot;&gt;Niko Matsakis&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lqd/&quot;&gt;Rémy Rakic&lt;/a&gt;, and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;tiif&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This project aims to implement fuzzing for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/a-mir-formality/&quot;&gt;a-mir-formality&lt;/a&gt;, an in-progress model for Rust&#x27;s type and trait system.  The goal is to generate programs in order to identify rules with underspecified semantics in a-mir-formality.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improve-the-security-of-github-actions-of-the-rust-project&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-the-security-of-github-actions-of-the-rust-project&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve the security of GitHub Actions of the Rust Project&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rukysandy&quot;&gt;oghenerukevwe Sandra Idjighere&lt;/a&gt; has been selected, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcoieni&quot;&gt;Marco Ieni&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ubiratansoares&quot;&gt;Ubiratan Soares&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This project aims to improve the security of GitHub Actions workflows of the repositories owned by the Rust Project. It will develop tools and workflows, integrating with existing software, to analyze Github repositories and detect if they follow the best security practices, fix existing issues, and ensure that good security practices are followed in the future.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-next&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-next&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s next&lt;/h2&gt;
&lt;p&gt;Over the next 3 months, the interns will work closely with their mentors to make progress on their projects. When the internship period is over, we&#x27;ll write another blog post to share the results! See you then!&lt;/p&gt;
&lt;p&gt;We also want to thank all the people that submitted applications and made contributions. It was quite tough to decide which applicants to select. Hopefully we will participate in Outreachy again in the future and there are other opportunities to participate. We also very much welcome you to stick around and continue being involved - there is a ton of places in the Rust Project with opportunities to be involved.&lt;/p&gt;
</content>

        <author>
            <name>Jack Huey</name>
        </author>
    </entry>
    <entry>
        <title>Raising the baseline for the &#x60;nvptx64-nvidia-cuda&#x60; target</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/05/01/nvptx-baseline-update/" type="text/html" title="Raising the baseline for the &#x60;nvptx64-nvidia-cuda&#x60; target" />
        <published>2026-05-01T00:00:00+00:00</published>
        <updated>2026-05-01T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/05/01/nvptx-baseline-update/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/05/01/nvptx-baseline-update/">&lt;p&gt;The &lt;code&gt;nvptx64-nvidia-cuda&lt;/code&gt; target is a compilation target for NVIDIA GPUs. When using this target, the final output is &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.nvidia.com/cuda/parallel-thread-execution/index.html&quot;&gt;PTX&lt;/a&gt;. Two version choices shape that output:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a GPU architecture (for example, &lt;code&gt;sm_70&lt;/code&gt;, &lt;code&gt;sm_80&lt;/code&gt;, …), which determines which GPUs can run the PTX, and&lt;/li&gt;
&lt;li&gt;a PTX ISA version, which determines which CUDA driver versions can load (and JIT-compile) the PTX.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Rust 1.97 (scheduled for release on July 9, 2026), the baseline PTX ISA version and GPU architecture for &lt;code&gt;nvptx64-nvidia-cuda&lt;/code&gt; will be &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/965&quot;&gt;increased&lt;/a&gt;. These changes affect both the Rust compiler (&lt;code&gt;rustc&lt;/code&gt;) and related host tooling, and they make it impossible to generate PTX artifacts compatible with older GPUs and older CUDA drivers.&lt;/p&gt;
&lt;p&gt;The new minimum supported versions will be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PTX ISA 7.0&lt;/strong&gt; (requires a CUDA 11 driver or newer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SM 7.0&lt;/strong&gt; (GPUs with compute capability below 7.0 are no longer supported)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;why-are-the-requirements-being-changed&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#why-are-the-requirements-being-changed&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Why are the requirements being changed?&lt;/h2&gt;
&lt;p&gt;Until now, Rust has supported emitting PTX for a wide range of GPU architectures and PTX ISA versions. In practice, several defects existed that could cause valid Rust code to trigger compiler crashes or miscompilations. Raising the baseline addresses these issues and enables more complete support for the remaining supported hardware.&lt;/p&gt;
&lt;p&gt;Removing support affects users of the architectures being removed. In this case, the most recent affected GPU architectures date back to 2017 and are no longer actively supported by NVIDIA. We therefore expect the overall impact of this change to be limited.&lt;/p&gt;
&lt;p&gt;Maintaining support for these architectures would require substantial effort. These removals let us focus development efforts on improving correctness and performance for currently supported hardware.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-happens-when-i-update-to-rust-1-97&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-happens-when-i-update-to-rust-1-97&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What happens when I update to Rust 1.97?&lt;/h2&gt;
&lt;p&gt;If you need to target a CUDA driver that does not support PTX ISA 7.0 (CUDA 10-era drivers and older), Rust 1.97 will no longer be able to generate PTX compatible with that environment. Similarly, if you need to run on GPUs with compute capability below 7.0 (for example, Maxwell or Pascal), Rust 1.97 will no longer be able to generate compatible PTX for those GPUs.&lt;/p&gt;
&lt;p&gt;Assuming you are targeting a CUDA driver compatible with CUDA 11 or newer and using GPUs with compute capability 7.0 or newer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you do &lt;strong&gt;not&lt;/strong&gt; specify &lt;code&gt;-C target-cpu&lt;/code&gt;, the new default will be &lt;code&gt;sm_70&lt;/code&gt;, and your build should continue to work (but will no longer be compatible with pre-Volta GPUs).&lt;/li&gt;
&lt;li&gt;If you currently specify an older &lt;code&gt;-C target-cpu&lt;/code&gt; (for example, &lt;code&gt;sm_60&lt;/code&gt;), you will need to either:
&lt;ul&gt;
&lt;li&gt;remove that flag and let it default to &lt;code&gt;sm_70&lt;/code&gt;, or&lt;/li&gt;
&lt;li&gt;update it to &lt;code&gt;sm_70&lt;/code&gt; or a newer architecture.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If you already specify &lt;code&gt;-C target-cpu&#x3D;sm_70&lt;/code&gt; (or newer), there should be no behavioral changes from this update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details on building and configuring &lt;code&gt;nvptx64-nvidia-cuda&lt;/code&gt;, see &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/rustc/platform-support/nvptx64-nvidia-cuda.html&quot;&gt;the platform support documentation&lt;/a&gt;.&lt;/p&gt;
</content>

        <author>
            <name>Kjetil Kjeka</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Google Summer of Code 2026 selected projects</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/" type="text/html" title="Announcing Google Summer of Code 2026 selected projects" />
        <published>2026-04-30T00:00:00+00:00</published>
        <updated>2026-04-30T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/">&lt;p&gt;As &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/02/19/Rust-participates-in-GSoC-2026/&quot;&gt;previously announced&lt;/a&gt;, the Rust Project is participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC)&lt;/a&gt; 2026. GSoC is a global program organized by Google that is designed to bring new contributors to the world of open source.&lt;/p&gt;
&lt;p&gt;A few months ago, we published a list of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;GSoC project ideas&lt;/a&gt;, and started discussing these projects with potential GSoC applicants on our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;Zulip&lt;/a&gt;. We had many interesting discussions with the potential contributors, and even saw some of them making non-trivial contributions to various Rust Project repositories before GSoC officially started!&lt;/p&gt;
&lt;p&gt;The applicants prepared and submitted their project proposals by the end of March. This year, we received 96 proposals, which is a 50% increase from last year. We are glad that there was again a lot of interest in our projects! Like many other GSoC organizations this year, we somewhat struggled with some AI-generated proposals and low-quality contributions generated using AI agents, but it stayed manageable.&lt;/p&gt;
&lt;p&gt;GSoC requires us to produce an ordered list of the best proposals, which is always challenging, as Rust is a big project with many priorities. Our mentors examined the submitted proposals and evaluated them based on their prior interactions with the given applicant, their contributions so far, the quality of the proposal itself, but also the importance of the proposed project for the Rust Project and its wider community. We also had to take mentor bandwidth and availability into account. Unfortunately, we had to cancel some projects due to several mentors losing their funding for Rust work in the past few weeks.&lt;/p&gt;
&lt;p&gt;As is usual in GSoC, even though some project topics received multiple proposals&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-most-popular-1&quot;&gt;&lt;a href&#x3D;&quot;#fn-most-popular&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, we had to pick only one proposal per project topic. We also had to choose between proposals targeting different work to avoid overloading a single mentor with multiple projects. In the end, we narrowed the list down to the best proposals that we could still realistically support with our available mentor pool. We submitted this list and eagerly awaited how many of them would be accepted into GSoC.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;selected-projects&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#selected-projects&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Selected projects&lt;/h2&gt;
&lt;p&gt;On the 30th of April, Google has announced the accepted projects. We are happy to share that &lt;strong&gt;13&lt;/strong&gt; Rust Project proposals were accepted by Google for Google Summer of Code 2026. That is a lot of projects! We are really happy and excited about GSoC 2026!&lt;/p&gt;
&lt;p&gt;Below you can find the list of accepted proposals (in alphabetical order), along with the names of their authors and the assigned mentor(s):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/eF3fkjrN&quot;&gt;A Frontend for Safe GPU Offloading in Rust&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Fx0vHvcq&quot;&gt;Adding WebAssembly Linking Support to Wild&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lapla-cogito&quot;&gt;Kei Akiyama&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Wg1mCCHL&quot;&gt;Bringing autodiff and offload into Rust CI&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sgasho&quot;&gt;Shota Sugano&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/TBpqK07H&quot;&gt;Debugger for Miri&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/moabo3li&quot;&gt;Mohamed Ali Mohamed&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oli Scherer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/xFrskRCv&quot;&gt;Implementing impl and mut restrictions&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CoCo-Japan-pan&quot;&gt;Ryosuke Yamano&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jhpratt&quot;&gt;Jacob Pratt&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Urgau&quot;&gt;Urgau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/g4xMTT5l&quot;&gt;Improving Ergonomics and Safety of serialport-rs&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/NONnonHere&quot;&gt;Tanmay&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sirhcel&quot;&gt;Christian Meusel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/AObylxqh&quot;&gt;libc: transition differing bit-width time and offset variants and deprecate bug-prone constants&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dybucc&quot;&gt;Adam Martinez&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tgross35&quot;&gt;Trevor Gross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/svblODn5&quot;&gt;Link Linux kernel and its Modules with Wild&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/vishruth-thimmaiah&quot;&gt;Vishruth Thimmaiah&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/lif4YQOE&quot;&gt;Migrating rust-analyzer assists to SyntaxEditor&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Shourya742&quot;&gt;Shourya Sharma&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ChayimFriedman2&quot;&gt;Chayim Refael Friedman&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Veykril&quot;&gt;Lukas Wirth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Aak8J6RB&quot;&gt;Port std::arch test suite to rust-lang/rust&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/xonx4l&quot;&gt;Sumit Kumar&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;Jakub Beránek&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/folkertdev&quot;&gt;Folkert de Vries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/l4jlMDP9&quot;&gt;Reorganizing tests/ui/issues&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zedddie&quot;&gt;zedddie&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Teapot4195&quot;&gt;Teapot&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kivooeo&quot;&gt;Kivooeo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/gzkF5BG0&quot;&gt;Utilize debugger APIs to improve debug info test accuracy and error reporting&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Walnut356&quot;&gt;Anthony Bolden&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;Jakub Beránek&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/jP7dTlN6&quot;&gt;XDG path support for rustup&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Cloud0310&quot;&gt;Guicheng Liu&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rami3l&quot;&gt;rami3l&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Congratulations to all applicants whose project was selected!&lt;/strong&gt; Our mentors are looking forward to working with you on these exciting projects to improve the Rust ecosystem. You can expect to hear from us soon, so that we can start coordinating the work on your GSoC projects.&lt;/p&gt;
&lt;p&gt;We are excited to mentor three contributors who already experienced GSoC with us in the previous year. Welcome back, Kei, Marcelo and Shourya!&lt;/p&gt;
&lt;p&gt;We would like to thank all the applicants whose proposal was sadly not accepted, for their interactions with the Rust community and contributions to various Rust projects. There were some great proposals that did not make the cut, in large part because of limited mentorship capacity. However, even if your proposal was not accepted, we would be happy if you would consider contributing to the projects that got you interested, even outside GSoC! Our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;project idea list&lt;/a&gt; is still current and could serve as a general entry point for contributors that would like to work on projects that would help the Rust Project and the Rust ecosystem. Some of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/goals.html&quot;&gt;Rust Project Goals&lt;/a&gt; are also looking for help.&lt;/p&gt;
&lt;p&gt;There is a good chance we&#x27;ll participate in GSoC next year as well (though we can&#x27;t promise anything at this moment), so we hope to receive your proposals again in the future!&lt;/p&gt;
&lt;p&gt;The accepted GSoC projects will run for several months. After GSoC 2026 finishes (in autumn of 2026), we will publish a blog post in which we will summarize the outcome of the accepted projects.&lt;/p&gt;
&lt;section class&#x3D;&quot;footnotes&quot;&gt;
&lt;ol class&#x3D;&quot;footnotes-list&quot;&gt;
&lt;li id&#x3D;&quot;fn-most-popular&quot;&gt;
&lt;p&gt;The most popular project topic received fourteen different proposals! &lt;a href&#x3D;&quot;#fr-most-popular-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Jakub Beránek</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-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-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-entity z-name z-function&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-variable&quot;&gt;    unix&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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-keyword&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&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-comment&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&quot;&gt; unix specific functionality &lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&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-variable&quot;&gt;    target_pointer_width&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;32&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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-keyword&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&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-comment&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&quot;&gt; non-unix, 32-bit functionality &lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&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-variable&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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-keyword&quot;&gt;        fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&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-comment&quot;&gt; /*&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&quot;&gt; fallback implementation &lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&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-storage z-type&quot;&gt;let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; is_windows_str&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&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-variable&quot;&gt;    windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&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-variable&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;not windows&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&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-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-keyword z-control&quot;&gt;match&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&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-entity z-name z-type&quot;&gt;    Some&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control&quot;&gt; if&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; let&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; Ok&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; compute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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-punctuation z-definition z-comment z-comment&quot;&gt;        //&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&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-entity z-name z-function&quot;&gt;        println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;, &lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;{&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt; x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&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-variable&quot;&gt;    _&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&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>docs.rs: building fewer targets by default</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/04/04/docsrs-only-default-targets/" type="text/html" title="docs.rs: building fewer targets by default" />
        <published>2026-04-04T00:00:00+00:00</published>
        <updated>2026-04-04T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/04/04/docsrs-only-default-targets/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/04/04/docsrs-only-default-targets/">&lt;h1 id&#x3D;&quot;building-fewer-targets-by-default&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#building-fewer-targets-by-default&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Building fewer targets by default&lt;/h1&gt;
&lt;p&gt;On &lt;strong&gt;2026-05-01&lt;/strong&gt;, docs.rs will make a &lt;strong&gt;breaking&lt;/strong&gt; change to its build
behavior.&lt;/p&gt;
&lt;p&gt;Today, if a crate does not define a &lt;code&gt;targets&lt;/code&gt; list in its
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.rs/about/metadata&quot;&gt;docs.rs metadata&lt;/a&gt;, docs.rs builds documentation for a default
list of five targets.&lt;/p&gt;
&lt;p&gt;Starting on &lt;strong&gt;2026-05-01&lt;/strong&gt;, docs.rs will instead build documentation for only
the default target unless additional targets are requested explicitly.&lt;/p&gt;
&lt;p&gt;This is the next step in a change we first introduced in 2020, when docs.rs
added support for opting into fewer build targets. Most crates do not compile
different code for different targets, so building fewer targets by default is a
better fit for most releases. It also reduces build times and saves resources on
docs.rs.&lt;/p&gt;
&lt;p&gt;This change only affects:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;new releases&lt;/li&gt;
&lt;li&gt;rebuilds of old releases&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id&#x3D;&quot;how-is-the-default-target-chosen&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-is-the-default-target-chosen&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How is the default target chosen?&lt;/h2&gt;
&lt;p&gt;If you do not set &lt;code&gt;default-target&lt;/code&gt;, docs.rs uses the target of its build
servers: &lt;code&gt;x86_64-unknown-linux-gnu&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can override that by setting &lt;code&gt;default-target&lt;/code&gt; in your
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.rs/about/metadata&quot;&gt;docs.rs metadata&lt;/a&gt;:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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;package&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;metadata&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;docs&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;rs&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-variable&quot;&gt;default-target&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;x86_64-apple-darwin&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id&#x3D;&quot;how-do-i-build-documentation-for-additional-targets&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-do-i-build-documentation-for-additional-targets&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How do I build documentation for additional targets?&lt;/h2&gt;
&lt;p&gt;If your crate needs documentation to be built for more than the default target,
define the full list explicitly in your &lt;code&gt;Cargo.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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;package&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;metadata&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;docs&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;rs&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-variable&quot;&gt;targets&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;    &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;x86_64-unknown-linux-gnu&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-array&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;    &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;x86_64-apple-darwin&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-array&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;    &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;x86_64-pc-windows-msvc&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-array&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;    &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;i686-unknown-linux-gnu&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-array&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;    &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;i686-pc-windows-msvc&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When &lt;code&gt;targets&lt;/code&gt; is set, docs.rs will build documentation for exactly those
targets.&lt;/p&gt;
&lt;p&gt;docs.rs still supports any target available in the Rust toolchain. Only the
default behavior is changing.&lt;/p&gt;
</content>

        <author>
            <name>Denis Cornehl</name>
        </author>
    </entry>
    <entry>
        <title>Changes to WebAssembly targets and handling undefined symbols</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/04/04/changes-to-webassembly-targets-and-handling-undefined-symbols/" type="text/html" title="Changes to WebAssembly targets and handling undefined symbols" />
        <published>2026-04-04T00:00:00+00:00</published>
        <updated>2026-04-04T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/04/04/changes-to-webassembly-targets-and-handling-undefined-symbols/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/04/04/changes-to-webassembly-targets-and-handling-undefined-symbols/">&lt;p&gt;Rust&#x27;s WebAssembly targets are soon going to experience a change which has a
risk of breaking existing projects, and this post is intended to notify users of
this upcoming change, explain what it is, and how to handle it. Specifically, all
WebAssembly targets in Rust have been linked using the &lt;code&gt;--allow-undefined&lt;/code&gt; flag
to &lt;code&gt;wasm-ld&lt;/code&gt;, and this flag is being removed.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-is-allow-undefined&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-allow-undefined&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is &lt;code&gt;--allow-undefined&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;WebAssembly binaries in Rust today are all created by linking with &lt;code&gt;wasm-ld&lt;/code&gt;.
This serves a similar purpose to &lt;code&gt;ld&lt;/code&gt;, &lt;code&gt;lld&lt;/code&gt;, and &lt;code&gt;mold&lt;/code&gt;, for example; it
takes separately compiled crates/object files and creates one final binary.
Since the first introduction of WebAssembly targets in Rust, the
&lt;code&gt;--allow-undefined&lt;/code&gt; flag has been passed to &lt;code&gt;wasm-ld&lt;/code&gt;. This flag is documented
as:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;  --allow-undefined       Allow undefined symbols in linked binary. This options&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;                          is equivalent to --import-undefined and&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;                          --unresolved-symbols&#x3D;ignore-all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The term &quot;undefined&quot; here specifically means with respect to symbol resolution in &lt;code&gt;wasm-ld&lt;/code&gt; itself. Symbols used by &lt;code&gt;wasm-ld&lt;/code&gt; correspond relatively closely to what native platforms use, for example all Rust functions have a symbol associated with them. Symbols can be referred to in Rust through &lt;code&gt;extern &quot;C&quot;&lt;/code&gt; blocks, for example:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; extern&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;C&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&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-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; mylibrary_init&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&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-keyword&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; init&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-keyword&quot;&gt;    unsafe&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-entity z-name z-function&quot;&gt;        mylibrary_init&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&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 symbol &lt;code&gt;mylibrary_init&lt;/code&gt; is an undefined symbol. This is typically defined by
a separate component of a program, such as an externally compiled C library,
which will provide a definition for this symbol. By passing &lt;code&gt;--allow-undefined&lt;/code&gt;
to &lt;code&gt;wasm-ld&lt;/code&gt;, however, it means that the above would generate a WebAssembly
module like so:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;wasm&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt;module&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;    (&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt;import&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;env&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;mylibrary_init&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt;func&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; $mylibrary_init&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-punctuation z-definition z-comment z-comment&quot;&gt;    ;;&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment&quot;&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;This means that the undefined symbol was ignored and ended up as an imported
symbol in the final WebAssembly module that is produced.&lt;/p&gt;
&lt;p&gt;The precise history here is somewhat lost to time, but the current understanding
is that &lt;code&gt;--allow-undefined&lt;/code&gt; was effectively required in the very early days of
introducing &lt;code&gt;wasm-ld&lt;/code&gt; to the Rust toolchain. This historical workaround stuck
around till today and hasn&#x27;t changed.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-wrong-with-allow-undefined&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-wrong-with-allow-undefined&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s wrong with &lt;code&gt;--allow-undefined&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;By passing &lt;code&gt;--allow-undefined&lt;/code&gt; on all WebAssembly targets, rustc is introducing
diverging behavior between other platforms and WebAssembly. The main risk of
&lt;code&gt;--allow-undefined&lt;/code&gt; is that misconfiguration or mistakes in building can
result in broken WebAssembly modules being produced, as opposed to compilation
errors. This means that the proverbial can is kicked down the road and lengthens
the distance from where the problem is discovered to where it was introduced.
Some example problematic situations are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If &lt;code&gt;mylibrary_init&lt;/code&gt; was typo&#x27;d as &lt;code&gt;mylibraryinit&lt;/code&gt; then the final binary would
import the &lt;code&gt;mylibraryinit&lt;/code&gt; symbol instead of calling the linked
&lt;code&gt;mylibrary_init&lt;/code&gt; C symbol.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If &lt;code&gt;mylibrary&lt;/code&gt; was mistakenly not compiled and linked into a final
application then the &lt;code&gt;mylibrary_init&lt;/code&gt; symbol would end up imported rather than
producing a linker error saying it&#x27;s undefined.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If external tooling is used to process a WebAssembly module, such as &lt;code&gt;wasm-bindgen&lt;/code&gt; or &lt;code&gt;wasm-tools component new&lt;/code&gt;, these tools don&#x27;t know what to do with &lt;code&gt;&quot;env&quot;&lt;/code&gt; imports by default and they are likely to provide an error message of some form that isn&#x27;t clearly connected back to the original source code and where the symbols was imported from.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For web users if you&#x27;ve ever seen an error along the lines of &lt;code&gt;Uncaught TypeError: Failed to resolve module specifier &quot;env&quot;. Relative references must start with either &quot;/&quot;, &quot;./&quot;, or &quot;../&quot;.&lt;/code&gt; this can mean that &lt;code&gt;&quot;env&quot;&lt;/code&gt; leaked into the final module unexpectedly and the true error is the undefined symbol error, not the lack of &lt;code&gt;&quot;env&quot;&lt;/code&gt; items provided.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All native platforms consider undefined symbols to be an error by default, and
thus by passing &lt;code&gt;--allow-undefined&lt;/code&gt; rustc is introducing surprising behavior on
WebAssembly targets. The goal of the change is to remove this surprise and
behave more like native platforms.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-is-going-to-break-and-how-to-fix&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-going-to-break-and-how-to-fix&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is going to break, and how to fix?&lt;/h2&gt;
&lt;p&gt;In theory, not a whole lot is expected to break from this change. If the final
WebAssembly binary imports unexpected symbols, then it&#x27;s likely that the binary
won&#x27;t be runnable in the desired embedding, as the desired embedding probably
doesn&#x27;t provide the symbol as a definition. For example, if you compile an
application for &lt;code&gt;wasm32-wasip1&lt;/code&gt; if the final binary imports &lt;code&gt;mylibrary_init&lt;/code&gt;
then it&#x27;ll fail to run in most runtimes because it&#x27;s considered an unresolved
import. This means that most of the time this change won&#x27;t break users, but
it&#x27;ll instead provide better diagnostics.&lt;/p&gt;
&lt;p&gt;The reason for this post, however, is that it&#x27;s possible users could be
intentionally relying on this behavior. For example your application might have:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; extern&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;C&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&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-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; js_log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;n&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; u32&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&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;//&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then perhaps some JS code that looks like:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;javascript&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt;let&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-other z-readwrite z-js z-variable&quot;&gt; instance&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-control z-flow z-js z-keyword z-control&quot;&gt; await&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-other z-object z-js z-variable&quot;&gt; WebAssembly&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-accessor&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;instantiate&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-brace&quot;&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-type&quot;&gt;module&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr z-meta z-object-literal z-key&quot;&gt;    env&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr z-meta z-object-literal z-key&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;        js_log&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr z-meta z-object-literal z-key&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-parameter z-variable&quot;&gt; n&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; &#x3D;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-other z-object z-js z-variable&quot;&gt; console&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-accessor&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt;log&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-brace&quot;&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable z-other z-readwrite z-js z-variable&quot;&gt;n&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-brace&quot;&gt;)&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-var z-expr&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-brace&quot;&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Effectively it&#x27;s possible for users to explicitly rely on the behavior of
&lt;code&gt;--allow-undefined&lt;/code&gt; generating an import in the final WebAssembly binary.&lt;/p&gt;
&lt;p&gt;If users encounter this then the code can be fixed through a &lt;code&gt;#[link]&lt;/code&gt; attribute
which explicitly specifies the &lt;code&gt;wasm_import_module&lt;/code&gt; name:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-code&quot;&gt;&lt;code data-lang&#x3D;&quot;rust&quot;&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;link&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;wasm_import_module &lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-keyword z-operator&quot;&gt;&#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;env&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt;&amp;quot;&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-keyword&quot;&gt;unsafe&lt;/span&gt;&lt;span class&#x3D;&quot;z-storage z-type&quot;&gt; extern&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-string&quot;&gt;C&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-string&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-keyword&quot;&gt;    fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function&quot;&gt; js_log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-variable&quot;&gt;n&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-type&quot;&gt; u32&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&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;//&lt;/span&gt;&lt;span class&#x3D;&quot;z-comment z-line z-double-slash z-comment&quot;&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will have the same behavior as before and will no longer be considered an
undefined symbol to &lt;code&gt;wasm-ld&lt;/code&gt;, and it&#x27;ll work both before and after this change.&lt;/p&gt;
&lt;p&gt;Affected users can also compile with &lt;code&gt;-Clink-arg&#x3D;--allow-undefined&lt;/code&gt; as well to
quickly restore the old behavior.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;when-is-this-change-being-made&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#when-is-this-change-being-made&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
When is this change being made?&lt;/h2&gt;
&lt;p&gt;Removing &lt;code&gt;--allow-undefined&lt;/code&gt; on wasm targets is being done in
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149868&quot;&gt;rust-lang/rust#149868&lt;/a&gt;. That change is slated to land in nightly soon, and will then get released with Rust 1.96 on 2026-05-28. If you see any issues as a
result of this fallout please don&#x27;t hesitate to file an issue on
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;rust-lang/rust&lt;/a&gt;.&lt;/p&gt;
</content>

        <author>
            <name>Alex Crichton</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-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>
    <entry>
        <title>Security advisory for Cargo</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/03/21/cve-2026-33056/" type="text/html" title="Security advisory for Cargo" />
        <published>2026-03-21T00:00:00+00:00</published>
        <updated>2026-03-21T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/03/21/cve-2026-33056/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/03/21/cve-2026-33056/">&lt;p&gt;The Rust Security Response Team was notified of a vulnerability in the
third-party crate &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/crates/tar&quot;&gt;&lt;code&gt;tar&lt;/code&gt;&lt;/a&gt;, used by Cargo to extract packages during a build. The
vulnerability, tracked as &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;, allows a malicious crate to change
the permissions on arbitrary directories on the filesystem when Cargo extracts
it during a build.&lt;/p&gt;
&lt;p&gt;For users of the public crates.io registry, we deployed a change on March 13th
to prevent uploading crates exploiting this vulnerability, and we audited all
crates ever published. We can confirm that no crates on crates.io are exploiting
this.&lt;/p&gt;
&lt;p&gt;For users of alternate registries, please contact the vendor of your registry to
verify whether you are affected by this. The Rust team will release Rust 1.94.1
on March 26th, 2026, updating to a patched version of the &lt;code&gt;tar&lt;/code&gt; crate (along
with other non-security fixes for the Rust toolchain), but that won&#x27;t protect
users of older versions of Cargo using alternate registries.&lt;/p&gt;
&lt;p&gt;We&#x27;d like to thank Sergei Zimmerman for discovering the underlying &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/crates/tar&quot;&gt;&lt;code&gt;tar&lt;/code&gt;&lt;/a&gt; crate
vulnerability and notifying the Rust project ahead of time, and William Woodruff
for directly assisting the crates.io team with the mitigations. We&#x27;d also like
to thank the Rust project members involved in this advisory: Eric Huss for
patching Cargo; Tobias Bieniek, Adam Harvey and Walter Pearce for patching
crates.io and analyzing existing crates; Emily Albini and Josh Stone for
coordinating the response; and Emily Albini for writing this advisory.&lt;/p&gt;
</content>

        <author>
            <name>The Rust Security Response Team</name>
        </author>
    </entry>
    <entry>
        <title>What we heard about Rust&#x27;s challenges</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/03/20/rust-challenges/" type="text/html" title="What we heard about Rust&#x27;s challenges" />
        <published>2026-03-20T00:00:00+00:00</published>
        <updated>2026-03-20T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/03/20/rust-challenges/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/03/20/rust-challenges/">&lt;p&gt;&lt;em&gt;Author&#x27;s note&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/blog.rust-lang.org/blob/786db4b4d202d85ef79741de5be4cee5ea330999/content/rust-challenges.md&quot;&gt;original version&lt;/a&gt; of this article has been retracted. I used an LLM to write the first draft, though this had come after many hours of &lt;em&gt;planning&lt;/em&gt; and going through the data and analyses to identify the points to be made, as well as me going through the post line by line, editing into my voice and verifying the wording and scope of the text was accurate. However, many people still felt like the LLM-speak bled through in ways that felt uncomfortable. Given this, I and other members of the Rust Project have decided to retract the post in its entirety.&lt;/p&gt;
&lt;p&gt;I stand by the content of the post. As I said, the LLM did not decide the points to be made - those were done well in advance of even beginning to write the blog post. And, admittedly, I &lt;em&gt;did&lt;/em&gt; need to make edits to dampen the scope of them (in large part because I couldn&#x27;t find specific quotes to substantiate them, even though I often &quot;felt&quot; that they were true given what I know as a Rust Project member), but in general I (and the Vision Doc team) defined the content, not an LLM.&lt;/p&gt;
&lt;p&gt;Many people thought that the blog post felt &quot;empty&quot;, with no &quot;real substance&quot;. While I see the point here, this is unfortunately just how the data played out and goal of this effort. The Vision Doc team conducted ~70 interviews (mostly 1:1), which were the basis for the conclusions in this blog post. This is &lt;em&gt;a lot&lt;/em&gt; of data, it&#x27;s hard to fully capture the essence of them in a single blog post. And yet, it is also &lt;em&gt;not enough&lt;/em&gt; data to fully capture the nuance of differences across groups of different types. On top of this, it shouldn&#x27;t be that unexpected the problems we heard about in these interviews are the same problems that we (and many others) mostly already knew existed. The insight these interviews give us is that they allow us to begin to capture &lt;em&gt;for whom which issues are most prominent&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The insights we identify and the conclusions we make are supported by the data we have gathered. When making these posts, the Vision Doc team has tried to stay as neutral as possible, doing our best to not exert bias by making any claims that cannot be supported &lt;em&gt;as stated&lt;/em&gt; by the data itself. With drastically more time, I would have loved to pull in data from the ~5500 survey responses we got, which ultimately could help us make &lt;em&gt;stronger&lt;/em&gt; claims or conclusions, but unfortunately that is time that I haven&#x27;t had. That shouldn&#x27;t diminish the substance of the insights and conclusions we &lt;em&gt;have&lt;/em&gt; been able to make though.&lt;/p&gt;
&lt;p&gt;Wording matters though. And it&#x27;s clear that to many people, the blog post as-written didn&#x27;t meet the mark that they want. LLMs are a tool that many people use (including me, obviously) to varying degrees to help do things that they couldn&#x27;t do before (either for lack of skill, lack of time, or lack of motivation). In this case, I used an LLM to compensate for the lack of time for me to dedicate to sifting through transcripts for the ~70 interviews we did, and the many analyses that followed, to find specific quotes and write an early draft. It certainly did not help that writing and editing of this post happened over the span of about 3 months - meaning that things that &quot;worked&quot; in early edits did not necessarily work in later edits.&lt;/p&gt;
&lt;p&gt;This all being said, I think that we as a Vision Doc team owe it to the Rust Project and the community to share (at least to some extent) what we have learned here. So, I have taken the original challenges identified by the team (without the recommendations or conclusions) and will provide a brief personal commentary on them. I&#x27;ve chosen to exclude any specific quotes - rather, just focus on the &quot;high level&quot; ideas. So, as a disclaimer, this will mean that the statements here will be much more biased than what we typically want to publish as part of the Vision Doc work.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Across the ~70 interviews the Vision Doc team conducted, we heard &lt;em&gt;a lot&lt;/em&gt; of complaints. Of course, we tried to keep these interviews pretty high-level, not focusing on any particular technical details. Rather, we wanted to get a general sense of what the difficulties were that people encountered, among the other topics discussed during these interviews. Here, we&#x27;ve identified a few common challenges to most people, and then a few challenges that are more domain-specific.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;challenges-that-are-universal&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#challenges-that-are-universal&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Challenges that are universal&lt;/h2&gt;
&lt;p&gt;We heard a number of things that basically everyone said was an issue for them, in some capacity. Doing things to address these issues could have a universal impact, but that is not to say that these issues necessarily &lt;em&gt;block&lt;/em&gt; people from using Rust.&lt;/p&gt;
&lt;p&gt;The universal challenges, you&#x27;ve definitely heard before. If you write Rust, you&#x27;ve probably encountered them. That&#x27;s what makes them universal. However, the point is that we share the data that we gather, and the fact that we have learned that these challenges &lt;em&gt;do&lt;/em&gt; affect everyone is data in itself: we have sampled different domains, different experience levels, and different backgrounds; and we have found that these challenges exist for everyone.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;compilation-performance&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#compilation-performance&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Compilation performance&lt;/h3&gt;
&lt;p&gt;Everybody knows that &quot;compile times&quot; are a thing that Rust is known for. This is an ever-moving target: the Rust Project tracks performance of the compiler on every merged change to track regressions, many people have attempted many times to make substantial progress here, and yet there is always more that we want to or could do.&lt;/p&gt;
&lt;p&gt;The good news, is that among our interviews, nobody really told us that compilation time &lt;em&gt;currently&lt;/em&gt; blocks them. We did hear things to the effect of &quot;if we keep writing more and more Rust code, we may eventually get to a point that compile times are an issue&quot;, so that&#x27;s not to say that we&#x27;re &quot;in the clear&quot; but it is important to think about how this matters &lt;em&gt;on balance&lt;/em&gt; with other challenges that people face.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;borrow-checking-and-ownership&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#borrow-checking-and-ownership&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Borrow checking and ownership&lt;/h3&gt;
&lt;p&gt;Again, another thing that Rust is known for. Borrow checking and ownership is a hard topic that basically every beginner struggles with. However, we found that &quot;Rust experts&quot; don&#x27;t really complain about the borrow checker anymore: it &lt;em&gt;is&lt;/em&gt; a challenge that goes away with experience. That&#x27;s not to say we can&#x27;t do better for beginners, but it&#x27;s not clear exactly what that means.&lt;/p&gt;
&lt;p&gt;Certainly learning materials and compiler error messages help, and these are areas that we&#x27;ve tried in the past and today to sincerely provide the best experience. Despite that, the borrow checker remains a difficult part of the Rust language. We have &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/polonius.html&quot;&gt;ongoing efforts&lt;/a&gt; to improve the borrow checker, but it&#x27;s likely that there are (for example) language features that may make this better. (Or worse!)&lt;/p&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/12/19/what-do-people-love-about-rust/#each-piece-is-necessary-for-the-whole-to-work&quot;&gt;found previously&lt;/a&gt; that what makes Rust &lt;em&gt;great&lt;/em&gt; is the balance that we put on reliability, efficiency, and versatility. And, we need to be careful when adjusting something as core as the borrow checker to maintain this balance.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;async&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#async&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Async&lt;/h3&gt;
&lt;p&gt;When conducting our interviews, async was consistently something that many people had issues with. Beginners often said that they basically completely ignore async while learning. People who &lt;em&gt;do&lt;/em&gt; use async often said that the choice wasn&#x27;t always clear, and that even though using async feels like the right choice &lt;em&gt;now&lt;/em&gt;, they still encounter issues.&lt;/p&gt;
&lt;p&gt;Fortunately, unlike performance and the borrow checker, we have a number of clear &quot;next steps&quot; for async (e.g. async fns in traits, async drop, async version of std traits) that will &lt;em&gt;begin&lt;/em&gt; to solve these issues and close the gap. Of course, for other things (like the coloring problem), we don&#x27;t have good &quot;solutions&quot; just quite yet.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;ecosystem-crates&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#ecosystem-crates&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Ecosystem crates&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/12/19/what-do-people-love-about-rust/#example-the-wealth-of-crates-on-crates-io-are-a-key-enabler-but-can-be-an-obstacle&quot;&gt;previously&lt;/a&gt; talked about how crates.io creates a wealth of resources for people to turn to, but people still run into issues. For one, when there &lt;em&gt;are&lt;/em&gt; crates that do the thing people want, they need to know: which crates do the things they need, which crates can they trust, and which crates are just overall the &quot;best&quot; for them. Further, in some domains and industries, there &lt;em&gt;aren&#x27;t&lt;/em&gt; crates that do what people need; Rust support for some industries are still too immature.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;challenges-that-are-domain-specific&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#challenges-that-are-domain-specific&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Challenges that are domain-specific&lt;/h2&gt;
&lt;p&gt;Though more challenging given the limited diversity in the interviews we conducted, we still were able to find &lt;em&gt;some&lt;/em&gt; domain-specific challenges: at least, we were able to hear about some challenges that seem to disproportionately effect some domains over others.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;embedded&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#embedded&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Embedded&lt;/h3&gt;
&lt;p&gt;For developers programming for embedded systems, we heard most often about the difficulties that fundamentally boil down to constrained resource management. For example, embedded developers are often unable to use the vast majority of the crate ecosystem, they often have trouble using the standard library, and the debugging experience is generally harder. Things that are &quot;normal&quot; for most Rust developers are oftentimes &quot;special&quot; for embedded developers.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;safety-critical&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#safety-critical&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Safety-critical&lt;/h3&gt;
&lt;p&gt;We made an &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/01/14/what-does-it-take-to-ship-rust-in-safety-critical/&quot;&gt;entire post&lt;/a&gt; about shipping Rust in safety critical systems. The biggest issue for safety-critical developers with Rust is the lack of availability or maturity for tools to &lt;em&gt;certify&lt;/em&gt; their Rust code.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;gui-development&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#gui-development&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GUI development&lt;/h3&gt;
&lt;p&gt;The biggest issue heard from GUI developers is compilation time but is slightly different from the general case, because GUI development is so heavily dependent on the &lt;em&gt;visual&lt;/em&gt; changes - and so this is a slightly different workflow than just &quot;check if the code compiles and passes tests&quot;.&lt;/p&gt;
</content>

        <author>
            <name>Jack Huey</name>
        </author>
    </entry>
</feed>
