<?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/inside-rust/" version="0.1.0">Inside Rust Blog</generator>
    <link href="https://blog.rust-lang.org/inside-rust/feed.xml" rel="self" type="application/atom+xml" />
    <link href="https://blog.rust-lang.org/inside-rust/" rel="alternate" type="text/html" />
    <id>https://blog.rust-lang.org/inside-rust/</id>
    <title>Inside Rust Blog</title>
    <subtitle>Want to follow along with Rust development? Curious how you might get involved? Take a look!</subtitle>
    <author>
        <name>Maintained by the Rust Teams.</name>
        <uri>https://github.com/rust-lang/blog.rust-lang.org/</uri>
    </author>
    <updated>2026-03-13T17:08:26+00:00</updated>

    
    <entry>
        <title>This Development-cycle in Cargo: 1.94</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/" type="text/html" title="This Development-cycle in Cargo: 1.94" />
        <published>2026-02-18T00:00:00+00:00</published>
        <updated>2026-02-18T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/">&lt;h1 id&#x3D;&quot;this-development-cycle-in-cargo-1-94&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#this-development-cycle-in-cargo-1-94&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
This Development-cycle in Cargo: 1.94&lt;/h1&gt;
&lt;p&gt;This is a summary of what has been happening around Cargo development for the last 6 weeks which is approximately the merge window for Rust 1.94.&lt;/p&gt;
&lt;!-- time period: 2025-12-12 through 2026-01-21--&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#plugin-of-the-cycle&quot;&gt;Plugin of the cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#implementation&quot;&gt;Implementation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#build-dir-layout&quot;&gt;Build dir layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#target-dir-locking&quot;&gt;Target dir locking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#structured-logging&quot;&gt;Structured logging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#toml-1-1&quot;&gt;TOML 1.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#cargo-cargofmt&quot;&gt;cargo-cargofmt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#lockfile-path&quot;&gt;lockfile-path&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/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#design-discussions&quot;&gt;Design discussions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#workspace-and-configuration-discovery&quot;&gt;Workspace and configuration discovery&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/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#misc&quot;&gt;Misc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/18/this-development-cycle-in-cargo-1.94/#focus-areas-without-progress&quot;&gt;Focus areas without progress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;plugin-of-the-cycle&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#plugin-of-the-cycle&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Plugin of the cycle&lt;/h2&gt;
&lt;p&gt;Cargo can&#x27;t be everything to everyone,
if for no other reason than the compatibility guarantees it must uphold.
Plugins play an important part of the Cargo ecosystem and we want to celebrate them.&lt;/p&gt;
&lt;p&gt;Our plugin for this cycle is &lt;a href&#x3D;&quot;https://crates.io/crates/cargo-edit&quot;&gt;cargo-edit&lt;/a&gt; which provides commands for editing &lt;code&gt;Cargo.toml&lt;/code&gt; files.  &lt;code&gt;cargo add&lt;/code&gt; and &lt;code&gt;cargo rm&lt;/code&gt; have already been merged into &lt;code&gt;cargo&lt;/code&gt;.  This also provides &lt;code&gt;cargo upgrade&lt;/code&gt; for changing version requirements (support in Cargo tracked at &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/12425&quot;&gt;#12425&lt;/a&gt;) and &lt;code&gt;cargo set-version&lt;/code&gt; for changing &lt;code&gt;package.version&lt;/code&gt; (no request exists for merging into &lt;code&gt;cargo&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/kpreid&quot;&gt;kpreid&lt;/a&gt; for the suggestion!&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/Plugin.20of.20the.20Dev.20Cycle/near/420703211&quot;&gt;Please submit your suggestions for the next post.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id&#x3D;&quot;implementation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implementation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Implementation&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;build-dir-layout&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#build-dir-layout&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Build dir layout&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#build-dir-layout&quot;&gt;1.93&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;ranger-ross&lt;/a&gt;
posted &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16502&quot;&gt;#16502&lt;/a&gt;
to update Cargo&#x27;s internal documentation on the build dir layout.
The documentation provided another angle for reviewing this change which led to further refinements like
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16514&quot;&gt;#16514&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16515&quot;&gt;#16515&lt;/a&gt;,
and &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16519&quot;&gt;#16519&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For an unrelated change,
&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; had previously proposed making
&lt;code&gt;CARGO_BIN_EXE_*&lt;/code&gt; available at runtime, and not just compile time
(&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/cargo_bin_exe.20and.20tests/near/564776712&quot;&gt;Zulip&lt;/a&gt;)
but abandoned it after finding it wasn&#x27;t needed.
After examining the results of the &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149852#issuecomment-3664993475&quot;&gt;first crater run&lt;/a&gt;,
they decided to move forward with this to reduce the ecosystem impact of this change and possible offer other benefits and posted
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16421&quot;&gt;#16421&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; also experimented with running all of Cargo&#x27;s test suite on the new build dir layout
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16375&quot;&gt;#16375&lt;/a&gt;)
which led to &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16348&quot;&gt;#16348&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149852#issuecomment-3764244130&quot;&gt;new crater run&lt;/a&gt; was kicked off and analysis of the results is in going.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;target-dir-locking&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#target-dir-locking&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Target dir locking&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#target-dir-locking&quot;&gt;1.93&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;!--
https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/Build.20cache.20and.20locking.20design/near/563673412
https://github.com/rust-lang/cargo/pull/16155#discussion_r2635734239
--&gt;
&lt;p&gt;In addition to the challenges since the last update,
another is that a lock needs to be held while reading the fingerprint to decide if we want to mutate the cache entry or not.
Lock upgrading and downgrading has the risk of deadlocking&lt;/p&gt;
&lt;p&gt;The last update ended with the idea of the top-level build operation owning all of the locks and them being grabbed exclusively.
That can help solve the fingerprint problem,
we just grab the lock before reading the fingerprint and we know it is good.
This does mean two of the same build will contend for the locks.
At least &lt;code&gt;cargo check&lt;/code&gt; from rust-analyzer and &lt;code&gt;cargo test&lt;/code&gt; (wrapping a &lt;code&gt;cargo build&lt;/code&gt;) or &lt;code&gt;cargo clippy&lt;/code&gt; won&#x27;t contend.
Except they will in some easy to overlook but significant cases.
For &lt;code&gt;cargo check&lt;/code&gt; and &lt;code&gt;cargo clippy&lt;/code&gt;, &lt;code&gt;cargo clippy&lt;/code&gt; only gets unique cache entries for workspace members,
so non-workspace members will contend for the locks.
For &lt;code&gt;cargo check&lt;/code&gt; and &lt;code&gt;cargo test&lt;/code&gt;, the cache entries are unique
(at least for now, see &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/3501&quot;&gt;#3501&lt;/a&gt;)
except when it comes to proc-macros and build scripts.
We decided to punt on this for now to get a minimal design merged that we can iterate on further.&lt;/p&gt;
&lt;p&gt;We also punted on
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16155#discussion_r2632376448&quot;&gt;dynamic rlimits&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16155#discussion_r2648691107&quot;&gt;Blocking messages for the user&lt;/a&gt;,
and reusing a build thread with another build unit rather than sitting idle when blocked.
At that point,
we were able to merge &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16155&quot;&gt;#16155&lt;/a&gt;.
We are tracking the progress on these deferred items in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/4282&quot;&gt;#4282&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;structured-logging&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#structured-logging&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Structured logging&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#structured-logging&quot;&gt;1.93&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; continued making progress on this, including&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;refactors (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16485&quot;&gt;#16485&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;documentation (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16476&quot;&gt;#16476&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;adding missing features to &lt;code&gt;cargo report timings&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16414&quot;&gt;#16414&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16441&quot;&gt;#16441&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;adding &lt;code&gt;cargo report rebuild&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16456&quot;&gt;#16456&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16408&quot;&gt;#16408&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16448&quot;&gt;#16448&lt;/a&gt;) to see why rebuilds happens&lt;/li&gt;
&lt;li&gt;adding &lt;code&gt;cargo report sessions&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16428&quot;&gt;#16428&lt;/a&gt;) to find the ID needed for use in &lt;code&gt;cargo report timings&lt;/code&gt; and &lt;code&gt;cargo report rebuild&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;providing man pages for &lt;code&gt;cargo report *&lt;/code&gt; commands (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16432&quot;&gt;#16432&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16430&quot;&gt;#16430&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;removing unstable &lt;code&gt;--timings&#x3D;FMT&lt;/code&gt; as it is redundant with &lt;code&gt;cargo report timings&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16420&quot;&gt;#16420&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the project goal tracking issue,
&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt;
&lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/398#issuecomment-3725163795&quot;&gt;posted a summary&lt;/a&gt;,
remaining steps towards stabilization,
and how people can help.&lt;/p&gt;
&lt;!--
https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/build.20analysis.20log.20format/near/563511292
https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/logging.20unit.20fingerprint/near/565825913
--&gt;
&lt;h3 id&#x3D;&quot;toml-1-1&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#toml-1-1&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
TOML 1.1&lt;/h3&gt;
&lt;p&gt;On December 18th, &lt;a href&#x3D;&quot;https://github.com/toml-lang/toml/releases/tag/1.1.0&quot;&gt;TOML v1.1 spec&lt;/a&gt; was released.
The major change with this version is that newlines are now allowed inside of inline-tables.
The same day, &lt;a href&#x3D;&quot;https://docs.rs/toml/latest/toml/&quot;&gt;&lt;code&gt;toml&lt;/code&gt; v0.9.10&lt;/a&gt; was released to
&lt;a href&#x3D;&quot;https://github.com/toml-rs/toml/blob/main/crates/toml/CHANGELOG.md#0910---2025-12-18&quot;&gt;support parsing TOML 1.1 files&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/TOML.201.2E1/near/564132825&quot;&gt;Zulip&lt;/a&gt;,
we discussed the transition for Cargo.
Users could inadvertently use a TOML v1.1 feature and bump the required version of Cargo to parse their manifest.
This is one of many reasons why &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/rust-version.html#support-expectations&quot;&gt;we encourage those keeping a &lt;code&gt;rust-version&lt;/code&gt; to verify it in CI&lt;/a&gt;.
However, the impact will be limited because &lt;code&gt;cargo package&lt;/code&gt; rewrites the published &lt;code&gt;Cargo.toml&lt;/code&gt;,
including using only TOML v0.5 or earlier features.
The impact for this will mostly be felt when using a
&lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section&quot;&gt;git patch&lt;/a&gt;
to the original repo.&lt;/p&gt;
&lt;p&gt;There is one caveat in this:
&lt;code&gt;toml&lt;/code&gt; does not currently preserve whether &lt;a href&#x3D;&quot;https://docs.rs/toml_datetime/0.7.5+spec-1.1.0/toml_datetime/struct.Time.html&quot;&gt;seconds or nanoseconds in a time&lt;/a&gt; were omitted or &lt;code&gt;0&lt;/code&gt;,
assuming that seconds is never omitted and that 0 nanoseconds is always omitted.
If &lt;code&gt;toml&lt;/code&gt; starts to preserve this information &lt;em&gt;and&lt;/em&gt; a &lt;code&gt;Cargo.toml&lt;/code&gt; field uses a time (likely only in a &lt;code&gt;[*.metadata]&lt;/code&gt; field) &lt;em&gt;and&lt;/em&gt; the user formats their time using the new syntax,
then &lt;code&gt;cargo package&lt;/code&gt; will generate a rewritten &lt;code&gt;Cargo.toml&lt;/code&gt; that requires a new version of Cargo to parse.&lt;/p&gt;
&lt;p&gt;Cargo could detect that a TOML v1.1 feature is used and warn if the &lt;code&gt;package.rust-version&lt;/code&gt; field is too old but we didn&#x27;t view this as blocking because this is the same situation as any other field we have today that you can use that will bump your MSRV.&lt;/p&gt;
&lt;p&gt;Cargo support for TOML v1.1 was merged on December 28th
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16415&quot;&gt;#16415&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id&#x3D;&quot;cargo-cargofmt&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-cargofmt&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;cargo-cargofmt&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;There has long been a desire for &lt;code&gt;cargo fmt&lt;/code&gt; to also format &lt;code&gt;Cargo.toml&lt;/code&gt; files
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustfmt/issues/4091&quot;&gt;rustfmt#4091&lt;/a&gt;).
One major blocker for this work is that the &lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/style-guide/cargo.html&quot;&gt;official style guide for &lt;code&gt;Cargo.toml&lt;/code&gt; files&lt;/a&gt; does not align with existing or expected uses of &lt;code&gt;Cargo.toml&lt;/code&gt; files.
Proposed ideas for the style guide had been discussed on
&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/.60Cargo.2Etoml.60.20style.20guide/near/380796244&quot;&gt;Zulip&lt;/a&gt;
but the conversation stalled out.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; created &lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt&quot;&gt;&lt;code&gt;cargo-cargofmt&lt;/code&gt;&lt;/a&gt; as a test bed for style guide ideas as well as how to implement them.
This included
&lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt/discussions/9&quot;&gt;summarizing past conversations&lt;/a&gt;
as well as
&lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt/discussions/3&quot;&gt;comparing existing formatters&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/iepathos&quot;&gt;iepathos&lt;/a&gt; stepped in and expanded the formatting rules,
including some gnarly work to adjust between single and multi-line arrays
(&lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt/pull/37&quot;&gt;cargo-cargofmt#37&lt;/a&gt;).
Formatting inline tables to multi-line was deferred out as it would likely require a new &lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/style-guide/editions.html&quot;&gt;Style Edition&lt;/a&gt; to ensure the package&#x27;s MSRV is high enough to support it.&lt;/p&gt;
&lt;p&gt;See &lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt/discussions/25&quot;&gt;cargo-cargofmt#25&lt;/a&gt;
for what is supported today
and &lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-cargofmt/issues&quot;&gt;the issues&lt;/a&gt; for what is being considered.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;lockfile-path&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#lockfile-path&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
lockfile-path&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2024/10/01/this-development-cycle-in-cargo-1.82/#misc&quot;&gt;1.82&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Previously, unstable support for &lt;code&gt;--lockfile-path ../Cargo.lock&lt;/code&gt; had been added (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/14326&quot;&gt;#14326&lt;/a&gt;).
In &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15510&quot;&gt;#15510&lt;/a&gt;,
we got a request to also support setting it via an environment variable.
In discussing this, we felt we should shift the implementation away from a CLI flag to a config field as that would support the environment variables and CLI (through &lt;code&gt;--config&lt;/code&gt;).
In particular, something we try to keep in mind is how easily someone can look at &lt;code&gt;cargo &amp;lt;cmd&amp;gt; --help&lt;/code&gt; and find what they are looking for.
The more flags that exist, the more likely it is that a user won&#x27;t find the flag they are looking for, the less value users get out of all flags as people instead work around what they presume to be the lack of support for a feature.
This came up before in the discussion of &lt;code&gt;--out-dir&lt;/code&gt; / &lt;code&gt;--artifact-dir&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6100&quot;&gt;#6100&lt;/a&gt;).
In weighing the scope of this feature,
&quot;hiding&quot; it away in config seems the best course of action.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; added &lt;code&gt;resolver.lockfile-path&lt;/code&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16510&quot;&gt;#16510&lt;/a&gt;.
We&#x27;ll remove &lt;code&gt;--lockfile-path&lt;/code&gt; in another development cycle to allow callers time to transition.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;design-discussions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#design-discussions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Design discussions&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;workspace-and-configuration-discovery&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#workspace-and-configuration-discovery&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Workspace and configuration discovery&lt;/h3&gt;
&lt;!--
https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2026-01-13.md#backlog-nightly-features-in-a-parent-cargotoml-causes-build-in-unrelated-sub-crate-to-fail-when-building-with-beta-or-stable-cargo

https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2026-01-20.md#backlog-cargo-confused-about-broken-cargotoml-in-home
--&gt;
&lt;p&gt;If you accidentally copy a &lt;code&gt;Cargo.toml&lt;/code&gt; file to your home directory,
it will fail the build of all of your packages without an explicit &lt;code&gt;[workspace]&lt;/code&gt;.
This is true for any broken or nightly-only &lt;code&gt;Cargo.toml&lt;/code&gt; or &lt;code&gt;.cargo/config.toml&lt;/code&gt; file that happens to be in a parent directory
(e.g. &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6646&quot;&gt;#6646&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6706&quot;&gt;#6706&lt;/a&gt;).
For &lt;code&gt;Cargo.toml&lt;/code&gt;, Cargo is checking if the current manifest is part of a workspace.&lt;/p&gt;
&lt;p&gt;We can at least improve the error message which we are tracking in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6706&quot;&gt;#6706&lt;/a&gt;.
It would also help if we discouraged new users from accidentally creating packages in their home directory
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16562&quot;&gt;#16562&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;For the nightly manifest case,
Cargo could check if the parent &lt;code&gt;Cargo.toml&lt;/code&gt; has a &lt;code&gt;[workspace]&lt;/code&gt; table and skip it by delaying the nightly feature check.
However, a nightly feature could impact workspace discovery.&lt;/p&gt;
&lt;p&gt;For manifests, a workaround is to add an empty &lt;code&gt;[workspace]&lt;/code&gt; to your package.
However, if you run &lt;code&gt;cargo new&lt;/code&gt; in a subdirectory, it will automatically be added as a member.
We could extend &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/manifest.html#the-workspace-field&quot;&gt;&lt;code&gt;package.workspace &#x3D; &quot;&amp;lt;path&amp;gt;&quot;&lt;/code&gt;&lt;/a&gt;
with &lt;code&gt;package.workspace &#x3D; &amp;lt;bool&amp;gt;&lt;/code&gt; for opting in or out of auto-discover of the workspace.
For this case, you could insert &lt;code&gt;package.workspace &#x3D; false&lt;/code&gt; to avoid walking ip the directory tree.
Cargo script is starting with workspace auto-discovery disabled and this could be how we allow enabling it.
This idea is being tracked in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16563&quot;&gt;#16563&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We would like to more broadly improve the workspace and config discovery behavior which we are tracking in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/7871&quot;&gt;#7871&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;misc&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#misc&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/osiewicz&quot;&gt;osiewicz&lt;/a&gt; sped up &lt;code&gt;cargo clean -p&lt;/code&gt; and &lt;code&gt;cargo clean --workspace&lt;/code&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16264&quot;&gt;#16264&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#custom-final-artifacts&quot;&gt;1.93&lt;/a&gt;)&lt;/em&gt; &lt;a href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;ranger-ross&lt;/a&gt; added unstable support for build scripts to use &lt;code&gt;cargo::metadata&lt;/code&gt; without &lt;code&gt;package.links&lt;/code&gt; manifest key (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16436&quot;&gt;#16436&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;focus-areas-without-progress&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#focus-areas-without-progress&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Focus areas without progress&lt;/h2&gt;
&lt;p&gt;These are areas of interest for Cargo team members with no reportable progress for this development-cycle.&lt;/p&gt;
&lt;p&gt;Project goals in need of owners&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/pub-priv.html&quot;&gt;Stabilize public/private dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/cargo-plumbing.html&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://rust-lang.github.io/rust-project-goals/2025h2/libtest-json.html&quot;&gt;Finish the libtest json output experiment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
- [Prototype Cargo build analysis](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-analysis.html)
- [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-script.html)
- [Rework Cargo Build Dir Layout](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-dir-layout.html)
--&gt;
&lt;p&gt;Ready-to-develop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#open-namespaces&quot;&gt;Open namespaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14520&quot;&gt;Auto-generate completions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;See &lt;a href&#x3D;&quot;https://github.com/clap-rs/clap/issues/3166&quot;&gt;clap-rs/clap#3166&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Needs design and/or experimentation:
--&gt;
&lt;p&gt;Planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/3126&quot;&gt;Disabling of default features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3416&quot;&gt;RFC #3416: &lt;code&gt;features&lt;/code&gt; metadata&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3487&quot;&gt;RFC #3487: visibility&lt;/a&gt; (visibility)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3486&quot;&gt;RFC #3486: deprecation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/unstable.html#list-of-unstable-features&quot;&gt;Unstable features&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://internals.rust-lang.org/t/pre-rfc-mutually-excusive-global-features/19618&quot;&gt;Pre-RFC: Global, mutually exclusive features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3553&quot;&gt;RFC #3553: Cargo SBOM Fragment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/1734&quot;&gt;OS-native config/cache directories (ie XDG support)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;how-you-can-help&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-you-can-help&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How you can help&lt;/h2&gt;
&lt;p&gt;If you have ideas for improving cargo,
we recommend first checking &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/&quot;&gt;our backlog&lt;/a&gt;
and then exploring the idea on &lt;a href&#x3D;&quot;https://internals.rust-lang.org/c/tools-and-infrastructure/cargo/15&quot;&gt;Internals&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If there is a particular issue that you are wanting resolved that wasn&#x27;t discussed here,
some steps you can take to help move it along include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summarizing the existing conversation (example:
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/2644#issuecomment-1489371226&quot;&gt;Better support for docker layer caching&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/8728#issuecomment-1610265047&quot;&gt;Change in &lt;code&gt;Cargo.lock&lt;/code&gt; policy&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/9930#issuecomment-1489089277&quot;&gt;MSRV-aware resolver&lt;/a&gt;
)&lt;/li&gt;
&lt;li&gt;Document prior art from other ecosystems so we can build on the work others have done and make something familiar to users, where it makes sense&lt;/li&gt;
&lt;li&gt;Document related problems and solutions within Cargo so we see if we are solving to the right layer of abstraction&lt;/li&gt;
&lt;li&gt;Building on those posts, propose a solution that takes into account the above information and cargo&#x27;s compatibility requirements (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/9930#issuecomment-1489269471&quot;&gt;example&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are available to help mentor people for
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/issues.html#issue-status-labels&quot;&gt;S-accepted issues&lt;/a&gt;
on
&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo&quot;&gt;zulip&lt;/a&gt;
and you can talk to us in real-time during
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/wiki/Office-Hours&quot;&gt;Contributor Office Hours&lt;/a&gt;.
If you are looking to help with one of the bigger projects mentioned here and are just starting out,
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/process/index.html#working-on-issues&quot;&gt;fixing some issues&lt;/a&gt;
will help familiarize yourself with the process and expectations,
making things go more smoothly.
If you&#x27;d like to tackle something
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/issues.html#issue-status-labels&quot;&gt;without a mentor&lt;/a&gt;,
the expectations will be higher on what you&#x27;ll need to do on your own.&lt;/p&gt;
</content>

        <author>
            <name>Ed Page</name>
        </author>
    </entry>
    <entry>
        <title>Leadership Council March 2026 Representative Selections</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/02/13/leadership-council-repr-selection/" type="text/html" title="Leadership Council March 2026 Representative Selections" />
        <published>2026-02-13T00:00:00+00:00</published>
        <updated>2026-02-13T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/02/13/leadership-council-repr-selection/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/02/13/leadership-council-repr-selection/">&lt;p&gt;The selection process for representatives on the &lt;a href&#x3D;&quot;https://www.rust-lang.org/governance/teams/leadership-council&quot;&gt;Leadership Council&lt;/a&gt; is starting today.&lt;/p&gt;
&lt;p&gt;Every six months, half of the council terms end.
The following teams are up to choose their representative for the next year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://www.rust-lang.org/governance/teams/compiler&quot;&gt;Compiler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://www.rust-lang.org/governance/teams/dev-tools&quot;&gt;Devtools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://forge.rust-lang.org/governance/council.html#the-launching-pad-top-level-team&quot;&gt;Launching Pad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are aiming to have the teams confirm their choices by March 20, 2026, and for any possible new members to be ready to join the council meetings starting March 27th.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;criteria-for-representatives&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#criteria-for-representatives&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Criteria for representatives&lt;/h2&gt;
&lt;p&gt;Any member of the top-level team or a member of any of their subteams is eligible to be the representative.
See &lt;a href&#x3D;&quot;https://forge.rust-lang.org/governance/council.html#candidate-criteria&quot;&gt;candidate criteria&lt;/a&gt; for a description of what makes a good representative.&lt;/p&gt;
&lt;p&gt;There is a limit of at most two people affiliated with the same company or other legal entity being on the council &lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-affiliates-1&quot;&gt;&lt;a href&#x3D;&quot;#fn-affiliates&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.
During the selection process, the council will consider the affiliation of candidates to decide if all choices will be compatible with that constraint.&lt;/p&gt;
&lt;p&gt;Representatives may serve multiple terms if the team decides to choose the same representative again.
There is a soft limit of three terms.&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-limit-1&quot;&gt;&lt;a href&#x3D;&quot;#fn-limit&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;
It is recommended that teams rotate their representatives if possible to help avoid burnout and to spread the experience to a broader group of people.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-do-representatives-do&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-do-representatives-do&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What do Representatives do?&lt;/h2&gt;
&lt;p&gt;A representative provides a voice on the council to represent the interests of their teams and contribute to the long-term success of the Rust Project.
A detailed description of the role may be found at the &lt;a href&#x3D;&quot;https://github.com/rust-lang/leadership-council/blob/main/roles/council-representative.md&quot;&gt;Representative Role Description&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;how-should-teams-make-their-selection&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-should-teams-make-their-selection&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How should teams make their selection?&lt;/h2&gt;
&lt;p&gt;The Leadership Council has put together a &lt;a href&#x3D;&quot;https://github.com/rust-lang/leadership-council/blob/main/guides/representative-selection.md&quot;&gt;Representative Selection Guide&lt;/a&gt; with recommendations for teams on how to go about choosing a representative.
It is not a requirement that teams follow this guide; top-level teams may choose their own process.&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-affiliates&quot;&gt;
&lt;p&gt;See &lt;a href&#x3D;&quot;https://forge.rust-lang.org/governance/council.html#limits-on-representatives-from-a-single-companyentity&quot;&gt;Limits on representatives from a single company/entity&lt;/a&gt; &lt;a href&#x3D;&quot;#fr-affiliates-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id&#x3D;&quot;fn-limit&quot;&gt;
&lt;p&gt;See &lt;a href&#x3D;&quot;https://forge.rust-lang.org/governance/council.html#term-limits&quot;&gt;Term limits&lt;/a&gt;. &lt;a href&#x3D;&quot;#fr-limit-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Eric Huss</name>
        </author>
    </entry>
    <entry>
        <title>Program management update — January 2026</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/02/11/program-management-update-2026-01/" type="text/html" title="Program management update — January 2026" />
        <published>2026-02-11T00:00:00+00:00</published>
        <updated>2026-02-11T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/02/11/program-management-update-2026-01/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/02/11/program-management-update-2026-01/">&lt;p&gt;Happy 2026! We got off to a great start with Project goals and hiring. I had a couple of weeks off in December, and that was really lovely.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;project-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#project-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Project goals&lt;/h2&gt;
&lt;p&gt;The goals initiative is in full swing. Following the &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/12/16/please-submit-2026-project-goal-proposals/&quot;&gt;call for proposals&lt;/a&gt;, people started opening &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pulls&quot;&gt;pull requests&lt;/a&gt; for new goals. In addition, many of the current goals are planned to continue into 2026.&lt;/p&gt;
&lt;p&gt;As of right now, we have around 60 goals proposed, with a few more to come. That&#x27;s a lot! But we&#x27;re moving to the second phase.&lt;/p&gt;
&lt;p&gt;In February, we&#x27;re inviting feedback on the proposed goals -- particularly from the teams being asked for something. You can look at the &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/reference.html#goals-by-team&quot;&gt;Goals by team&lt;/a&gt; page, find your team, and see all goals that call it out. It&#x27;s a good time to check whether these goals make sense to you, start thinking about your capacity, and consider whether you have champions who can sign up.&lt;/p&gt;
&lt;p&gt;In March, we&#x27;ll open the RFC for 2026 goals, which all the team leads will review. They&#x27;ll look at the proposed goals in aggregate and sign off on the champions and team capacity.&lt;/p&gt;
&lt;p&gt;And then from April to December, it&#x27;s implementation season!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;2026-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#2026-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
2026 changes&lt;/h3&gt;
&lt;p&gt;In addition to running the program throughout the whole year, we&#x27;ve made other changes.&lt;/p&gt;
&lt;p&gt;Flagship themes gave way to &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/reference.html#roadmaps&quot;&gt;Roadmaps&lt;/a&gt;. Many of the larger initiatives we want to achieve don&#x27;t really match the six-month or even yearly cycle. We want goals to be achievable in a single year, but e.g., &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/roadmap-just-add-async.html&quot;&gt;completing the &lt;code&gt;async&lt;/code&gt; features and ergonomics&lt;/a&gt; will likely take multiple years to complete.&lt;/p&gt;
&lt;p&gt;A goal can belong to more than one roadmap.&lt;/p&gt;
&lt;p&gt;Above roadmaps are &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/reference.html#application-areas&quot;&gt;Application areas&lt;/a&gt; such as &quot;Cross-language interop&quot; or &quot;Safety-critical &amp;amp; regulated&quot; -- large initiatives that often align with a specific industry. We are hoping that the roadmaps and application areas can help focus industry funding. For example, an automotive company may be very interested in funding the &quot;Safety-critical&quot; area, as the code and libraries they use need to go through expensive attestation. On the other hand, companies with large C++ codebases will be more interested in &quot;Cross-language interop&quot;.&lt;/p&gt;
&lt;p&gt;There are also &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/highlights.html&quot;&gt;individual goals that we want to highlight&lt;/a&gt; because we think people will be excited about them and we expect them to stabilize this year (note that the current list is likely to change while we look at all the proposed goals).&lt;/p&gt;
&lt;p&gt;Getting all this in was a significant effort by Niko Matsakis, Rémy (lqd), and myself. I&#x27;d like to thank everyone for their submissions and for participating in the discussion!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;hiring-a-second-program-manager&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hiring-a-second-program-manager&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hiring a second Program Manager&lt;/h2&gt;
&lt;p&gt;Originally, the Leadership Council planned to hire two Program Managers so there would be continuity, a backup, and enough capacity to cover the Project&#x27;s needs. Unfortunately, in 2025, it hadn&#x27;t been clear whether there would be enough budget to support two people, so the Council had opted to hire just one.&lt;/p&gt;
&lt;p&gt;After getting the 2026 funding from the Foundation clarified, the Council &lt;a href&#x3D;&quot;https://github.com/rust-lang/leadership-council/issues/255&quot;&gt;allocated extra funds to hire a second Program Manager&lt;/a&gt;. This let us reach out to Nurzhan Saken, whom we&#x27;d hoped to bring on board along with yours truly back in June.&lt;/p&gt;
&lt;p&gt;I spoke to Nurzhan, saw why TC and Joel Marcey wanted to hire him in the first place, and I&#x27;m delighted to announce that Nurzhan joined the Project at the beginning of February!&lt;/p&gt;
&lt;p&gt;I&#x27;ll help him get on board, and I&#x27;m really excited about this.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;rust-for-linux&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-for-linux&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rust for Linux&lt;/h2&gt;
&lt;p&gt;We&#x27;ve continued our regular meetings, and you can see the updates on the &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/issues/116&quot;&gt;Rust for Linux project goal tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rust-lang.github.io/beyond-refs/&quot;&gt;We now have a wiki&lt;/a&gt; that covers Field Projection, In-place initialization, and the other language features that we&#x27;re planning to build.&lt;/li&gt;
&lt;li&gt;Ding Xiang Fei opened a 2026 Project goal for &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/supertrait-auto-impl.html&quot;&gt;Supertrait &lt;code&gt;auto impl&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Gary Guo opened a &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/138618&quot;&gt;pull request&lt;/a&gt; implementing the &lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3848&quot;&gt;Pass pointers to &lt;code&gt;const&lt;/code&gt; in assembly RFC#3848&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#x27;ve opened a &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pull/531&quot;&gt;pull request&lt;/a&gt; that proposes a new &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/pull/531&quot;&gt;Rust for Linux roadmap&lt;/a&gt; which ties in the existing standalone goals (&lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/field-projections.html&quot;&gt;Field projections&lt;/a&gt;, &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/in-place-init.html&quot;&gt;In-place initialization&lt;/a&gt;, and &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/supertrait-auto-impl.html&quot;&gt;Supertrait &lt;code&gt;auto impl&lt;/code&gt;&lt;/a&gt;) and breaks down the original language features into individual goals as well.&lt;/p&gt;
&lt;p&gt;This way, we can track everything for Rust for Linux under a single roadmap item and also have smaller, more focused, and easier-to-review goals.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;cpython-collaboration&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cpython-collaboration&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
CPython collaboration&lt;/h2&gt;
&lt;p&gt;We continued our weekly meetings with the Python folks interested in bringing Rust into CPython (the canonical Python interpreter, written in C). We have representatives from the Compiler, Cargo, Libs-API, and Language teams there, and we bring in additional experts where it makes sense.&lt;/p&gt;
&lt;p&gt;Here are some of the topics we went through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bootstrapping Rust currently relies on a Python script (&lt;code&gt;bootstrap.py&lt;/code&gt;). If Python starts depending on Rust at some point, we&#x27;ll have a cycle we&#x27;ll need to sort out.&lt;/li&gt;
&lt;li&gt;Safely modeling Python objects that are attached/detached from Python threads within Rust. This is something PyO3 deals with, but the API is clunky, and there are soundness edge cases there. We discussed language features that could help here.&lt;/li&gt;
&lt;li&gt;Building/linking the Rust standard library to Python extension modules in a way that doesn&#x27;t expose symbols that could conflict.&lt;/li&gt;
&lt;li&gt;Setting different linker arguments for &lt;code&gt;bin&lt;/code&gt; and &lt;code&gt;lib&lt;/code&gt; targets when both are present in a single crate.&lt;/li&gt;
&lt;li&gt;Potential interoperability between &lt;code&gt;async&lt;/code&gt; Rust and Python&#x27;s &lt;code&gt;asyncio&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Introducing Rust into large C codebases -- the technical as well as social aspects. For this, I reached out to the Rust for Linux folks, and Miguel Ojeda shared his perspective on introducing Rust into the Linux kernel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please note, this is all a preliminary discussion. Even the idea of adding Rust to CPython has not yet been proposed &lt;em&gt;formally&lt;/em&gt;. One of the outcomes of the work here is a &lt;a href&#x3D;&quot;https://peps.python.org/&quot;&gt;Python Enhancement Proposal (PEP)&lt;/a&gt; (analogue to Rust RFCs) that does so.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;cargo-script&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-script&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
cargo-script&lt;/h2&gt;
&lt;p&gt;This is one of my most anticipated features. &lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3502&quot;&gt;Cargo script&lt;/a&gt; lets you take a single Rust file, specify any dependencies, and run it. You can think of it as a much more streamlined &lt;code&gt;cargo run&lt;/code&gt; where you don&#x27;t have to set up a whole directory structure with &lt;code&gt;Cargo.toml&lt;/code&gt; and so on.&lt;/p&gt;
&lt;p&gt;In its simplest form, you can do:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;rust&quot; class&#x3D;&quot;language-rust z-code&quot;&gt;&lt;code class&#x3D;&quot;language-rust&quot; data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-rust&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-logical z-rust&quot;&gt;!&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;usr&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;bin&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;env cargo
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-storage z-type z-function z-rust&quot;&gt;fn&lt;/span&gt; &lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function z-rust&quot;&gt;main&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-parameters z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-parameters z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-parameters z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-parameters z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt; &lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-block z-begin z-rust&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-support z-macro z-rust&quot;&gt;println!&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-rust&quot;&gt;&amp;quot;&lt;/span&gt;Hello, world!&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-rust&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-block z-end z-rust&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(until it&#x27;s stabilized, the actual shebang invocation is something like: &lt;code&gt;#!/usr/bin/env -S cargo +nightly -Zscript&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;And run it either with &lt;code&gt;cargo hello-world.rs&lt;/code&gt; or (if you mark the file as executable): &lt;code&gt;./hello-world.rs&lt;/code&gt;:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;$ ./hello-world.rs
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;warning: &#x60;package.edition&#x60; is unspecified, defaulting to &#x60;2024&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   Compiling hello-world v0.0.0 (/home/example/tmp/hello-world.rs)
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;    Finished &#x60;dev&#x60; profile [unoptimized + debuginfo] target(s) in 0.08s
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;     Running &#x60;/home/example/.cargo/build/23/c81d708245acde/target/debug/hello-world&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;Hello, world!
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cargo will build the source and run the compiled binary.&lt;/p&gt;
&lt;p&gt;This gets really powerful when you start including dependencies -- cargo script is able to parse a &quot;front matter&quot; section which is a subset of &lt;code&gt;Cargo.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;rust&quot; class&#x3D;&quot;language-rust z-code&quot;&gt;&lt;code class&#x3D;&quot;language-rust&quot; data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-rust&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-logical z-rust&quot;&gt;!&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;usr&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;bin&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;/&lt;/span&gt;env cargo
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;cargo
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;package&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;edition &lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-rust&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-rust&quot;&gt;&amp;quot;&lt;/span&gt;2024&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-rust&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;[&lt;/span&gt;dependencies&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;chrono &lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-rust&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-rust&quot;&gt;&amp;quot;&lt;/span&gt;0.4&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-rust&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-arithmetic z-rust&quot;&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-storage z-type z-function z-rust&quot;&gt;fn&lt;/span&gt; &lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-function z-rust&quot;&gt;main&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-parameters z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-parameters z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-parameters z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-parameters z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt; &lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-block z-begin z-rust&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-keyword z-other z-rust&quot;&gt;use&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-path z-rust&quot;&gt;chrono&lt;span class&#x3D;&quot;z-punctuation z-accessor z-rust&quot;&gt;::&lt;/span&gt;&lt;/span&gt;Datelike&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-storage z-type z-rust&quot;&gt;let&lt;/span&gt; now &lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-rust&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-path z-rust&quot;&gt;chrono&lt;span class&#x3D;&quot;z-punctuation z-accessor z-rust&quot;&gt;::&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-path z-rust&quot;&gt;Local&lt;span class&#x3D;&quot;z-punctuation z-accessor z-rust&quot;&gt;::&lt;/span&gt;&lt;/span&gt;now&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-storage z-type z-rust&quot;&gt;let&lt;/span&gt; days_in_month &lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-rust&quot;&gt;&#x3D;&lt;/span&gt; now&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-function z-rust&quot;&gt;num_days_in_month&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-storage z-type z-rust&quot;&gt;let&lt;/span&gt; last_day &lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-rust&quot;&gt;&#x3D;&lt;/span&gt; now&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-function z-rust&quot;&gt;with_day&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;days_in_month&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-function z-rust&quot;&gt;into&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-function z-rust&quot;&gt;unwrap&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-accessor z-dot z-rust&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-support z-function z-rust&quot;&gt;date&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;    &lt;span class&#x3D;&quot;z-support z-macro z-rust&quot;&gt;println!&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-begin z-rust&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-rust&quot;&gt;&amp;quot;&lt;/span&gt;This month has &lt;span class&#x3D;&quot;z-constant z-other z-placeholder z-rust&quot;&gt;{days_in_month}&lt;/span&gt; days and the last day is: &lt;span class&#x3D;&quot;z-constant z-other z-placeholder z-rust&quot;&gt;{last_day}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-rust&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-group z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-group z-end z-rust&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-terminator z-rust&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-function z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-block z-rust&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-section z-block z-end z-rust&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And have it download and compile the dependencies and run the resulting script:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;$ ./hello-world.rs
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;    Updating crates.io index
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;     Locking 31 packages to latest Rust 1.93.0-nightly compatible versions
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;      Adding android_system_properties v0.1.5
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;      Adding autocfg v1.5.0
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   [...]
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   Compiling num-traits v0.2.19
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   Compiling chrono v0.4.43
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   Compiling hello-world v0.0.0 (/home/example/tmp/hello-world.rs)
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;    Finished &#x60;dev&#x60; profile [unoptimized + debuginfo] target(s) in 0.12s
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;     Running &#x60;/home/example/.cargo/build/23/c81d708245acde/target/debug/hello-world&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;This month has 28 days and the last day is: 2026-02-28+01:00
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In addition to writing &quot;scripts&quot;, cargo script is &lt;em&gt;fantastic&lt;/em&gt; for coming up with minimal bug reproducers and quick prototypes. The overhead of a few directories and an extra file doesn&#x27;t &lt;em&gt;seem like that much&lt;/em&gt;, but in practice, having a single file you can share or just include in a Markdown code block makes a huge difference.&lt;/p&gt;
&lt;p&gt;This feature, in various iterations, has existed for years, but now (thanks to Ed Page&#x27;s determination) it is tantalizingly close to shipping on stable.&lt;/p&gt;
&lt;p&gt;Getting the front matter stabilized required working with the Style team to settle on all the formatting specifics and then implementing them. Once the Style team thought it was all set, I checked with Ed and learned that while everything was good there, the &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/148051&quot;&gt;front matter stabilization&lt;/a&gt; seemed stuck on the language side.&lt;/p&gt;
&lt;p&gt;Early in December, the Lang team had a &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/148051#issuecomment-3608436373&quot;&gt;concern about stray carriage-return&lt;/a&gt; (CR, &lt;code&gt;/r&lt;/code&gt;) characters causing confusion: they could be rendered as new lines, but the Rust tooling would not interpret them as such. Ed &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149823&quot;&gt;opened a PR a few days later&lt;/a&gt;, which sat there for weeks without comment.&lt;/p&gt;
&lt;p&gt;I brought this up with Josh Triplett, and we invited Ed to a Lang meeting where the team discussed this, clarified the request and the reasoning behind it, and agreed on the next steps. Ed made the requested changes, and the front matter stabilization has passed the final comment period (FCP) a few days ago.&lt;/p&gt;
&lt;p&gt;The &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16569&quot;&gt;cargo script stabilization issue&lt;/a&gt; is now in FCP as well, with no concerns listed.&lt;/p&gt;
&lt;p&gt;I&#x27;m extremely excited about this.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;crates-io-mirroring-and-verification&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#crates-io-mirroring-and-verification&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Crates.io mirroring and verification&lt;/h2&gt;
&lt;p&gt;While there is support for alternative registries, &lt;a href&#x3D;&quot;https://crates.io/&quot;&gt;crates.io&lt;/a&gt; is what most users (and tooling, e.g., CI) interact with when downloading crates. This can put too much pressure on crates.io, and some people can&#x27;t rely on it (for example, because they don&#x27;t have enough bandwidth, a reliable internet connection, or firewalls preventing access).&lt;/p&gt;
&lt;p&gt;Linux package registries have, of course, dealt with this as well, and most popular distros have package mirrors, so you rarely even hit the original source. These can be closer to you and may often back internal CI in companies.&lt;/p&gt;
&lt;p&gt;One concern with mirrors -- especially with the security of the supply chain finally being taken more seriously -- is making sure they serve the same content as crates.io would: that there&#x27;s no tampering either on the mirror&#x27;s side or during transit.&lt;/p&gt;
&lt;p&gt;Walter Pearce and Josh Triplett are &lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3724&quot;&gt;driving an effort to build such a verification system&lt;/a&gt; building on &lt;a href&#x3D;&quot;https://theupdateframework.io/&quot;&gt;The Update Framework (TUF)&lt;/a&gt;, and last year, we had a &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h1/verification-and-mirroring.html&quot;&gt;Project goal tracking this work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was moving forward, but aside from a few meetings, there was not a lot of external communication. This was frustrating for people who were following the work and wanted to build on top of it. This effort is also sponsored by the Foundation, and while they produce regular reports, they&#x27;re not frequent or detailed enough for the needs of the Rust ecosystem.&lt;/p&gt;
&lt;p&gt;I set up a meeting with a group of people interested in this work, and they clarified their expectations and came to an agreement. Here&#x27;s what came out of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We&#x27;ll open a 2026 goal for this effort.&lt;/li&gt;
&lt;li&gt;Walter will be the point of contact, and he&#x27;ll be sending regular updates.&lt;/li&gt;
&lt;li&gt;I&#x27;ve set up a fortnightly sync meeting with the interested people.&lt;/li&gt;
&lt;li&gt;The Program Managers (Nurzhan and/or I) will attend, take minutes, and make sure the updates are posted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&#x27;s great work being done here, but we all need to work towards making it visible.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;worth-a-look&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#worth-a-look&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Worth a look&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;rust-foundation-posts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-foundation-posts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rust Foundation posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/media/announcing-the-rustconf-2026-program-committee/&quot;&gt;Announcing the RustConf 2026 Program Committee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/media/annual-report-strategy-2025/&quot;&gt;How We Invested in Rust in 2025 — and What Comes Next&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/media/rust-foundation-member-announcement-meilisearch-doulos/&quot;&gt;Rust Foundation Member Announcement: Meilisearch &amp;amp; Doulos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/media/rust-at-scale-what-whatsapps-security-journey-tells-us-about-the-future-of-safer-software/&quot;&gt;Rust at Scale: What WhatsApp’s Security Journey Tells Us About the Future of Safer Software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;rust-blog-posts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-blog-posts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rust blog posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/&quot;&gt;This Development-cycle in Cargo: 1.93&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/12/what-is-maintenance-anyway/&quot;&gt;What is maintenance, anyway?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/&quot;&gt;Infrastructure Team 2025 Q4 Recap and Q1 2026 Plan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/01/14/what-does-it-take-to-ship-rust-in-safety-critical/&quot;&gt;What does it take to ship Rust in safety-critical?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/01/21/crates-io-development-update/&quot;&gt;crates.io: development update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/01/22/Rust-1.93.0/&quot;&gt;Announcing Rust 1.93.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/27/2025-rust-foundation-annual-report/&quot;&gt;2025 Rust Foundation Annual Report Project Director Update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/&quot;&gt;First look at 2026 Project goals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/09/project-director-update/&quot;&gt;January 2026 Project Director Update&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;stats&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stats&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stats&lt;/h2&gt;
&lt;p&gt;Total words of meeting minutes written: 323k (June–January)&lt;/p&gt;
&lt;p&gt;Meetings attended: 40&lt;/p&gt;
&lt;p&gt;Total words of meeting minutes written (January): 57.8k&lt;/p&gt;
&lt;p&gt;Average (mean) word count per team meeting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cargo: 1.9k&lt;/li&gt;
&lt;li&gt;Lang triage: 6.7k&lt;/li&gt;
&lt;li&gt;Libs-API: 6.9k&lt;/li&gt;
&lt;li&gt;Leadership Council: 3.2k&lt;/li&gt;
&lt;/ul&gt;
</content>

        <author>
            <name>Tomas Sedovic</name>
        </author>
    </entry>
    <entry>
        <title>January 2026 Project Director Update</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/02/09/project-director-update/" type="text/html" title="January 2026 Project Director Update" />
        <published>2026-02-09T00:00:00+00:00</published>
        <updated>2026-02-09T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/02/09/project-director-update/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/02/09/project-director-update/">&lt;p&gt;New year, new Foundation Board Meeting recaps! Yes, it is February now, but this is the update we meant to post in January covering the Rust Foundation board meeting that happened on December 9, 2025. &lt;a href&#x3D;&quot;https://rustfoundation.org/resource/december-2025-board-meeting/&quot;&gt;Read the full minutes on the Foundation&#x27;s site&lt;/a&gt;. Highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Foundation staff proposed the final strategic goals for 2026-2028 and the board approved. &lt;a href&#x3D;&quot;https://rustfoundation.org/strategic-plan/&quot;&gt;Check out the full strategy&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Requests to crates.io served by CloudFront are using up AWS-donated credits at a higher rate than expected; the Foundation is working on short- and long-term ways to address this.&lt;/li&gt;
&lt;li&gt;The Foundation&#x27;s engineers recent progress includes:
&lt;ul&gt;
&lt;li&gt;GitLab support for Trusted Publishing is now in public beta&lt;/li&gt;
&lt;li&gt;The Capslock capability analyzer has a functioning prototype&lt;/li&gt;
&lt;li&gt;Crates.io&#x27;s vulnerability scanning RFC is in final comment period&lt;/li&gt;
&lt;li&gt;More analytics now being tracked on crates.io enables identifying anomalies in traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The RustConf &lt;a href&#x3D;&quot;https://rustconf.com/rustconf-2026/#invite&quot;&gt;visa letter request page&lt;/a&gt;, &lt;a href&#x3D;&quot;https://rustconf.com/wp-content/uploads/2025/12/RustConf_2026_Prospectus.pdf&quot;&gt;sponsorship prospectus&lt;/a&gt;, and &lt;a href&#x3D;&quot;https://sessionize.com/rustconf-2026/&quot;&gt;CFP&lt;/a&gt; are now all live. This is much earlier in relation to the conference than previous years, allowing more time for travel planning.&lt;/li&gt;
&lt;li&gt;The training program initiative proposed launching a Foundation accreditation program for companies providing Rust training, even though the individual training course has not yet launched. While the initiative will continue to explore future options for an individual training course and certification portion, accreditation for existing Rust training providers is the priority for the foreseeable future. The board approved.&lt;/li&gt;
&lt;li&gt;The Board discussed and approved of the Foundation&#x27;s 2026 budget.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&#x27;ll be back soon with February&#x27;s real update!&lt;/p&gt;
</content>

        <author>
            <name>Carol Nichols and David Wood</name>
        </author>
    </entry>
    <entry>
        <title>First look at 2026 Project goals</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/" type="text/html" title="First look at 2026 Project goals" />
        <published>2026-02-03T00:00:00+00:00</published>
        <updated>2026-02-03T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/">&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;This is an update on the Project goals plan.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;we-want-your-feedback&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#we-want-your-feedback&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
We want your feedback!&lt;/h2&gt;
&lt;p&gt;We have just published the &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/index.html&quot;&gt;&lt;strong&gt;first draft&lt;/strong&gt; of the Project goals RFC&lt;/a&gt;. This first draft contains the &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/goals.html&quot;&gt;goals proposed thus far&lt;/a&gt; as well as candidate &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/flagships.html&quot;&gt;flagship themes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a &lt;em&gt;first draft&lt;/em&gt;, the purpose of this document is to &lt;strong&gt;solicit feedback and spark discussion&lt;/strong&gt; -- so please, take a look! If you have questions or comments, open up a topic in the &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/546987-project-goals.2F2026-workshop&quot;&gt;#project-goals/2026-workshop&lt;/a&gt; channel.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;questions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#questions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Questions&lt;/h2&gt;
&lt;p&gt;Here are some of the questions I would like people&#x27;s input on (these questions link to questions in the FAQ that give more details):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do you have concerns about any goals that ask support from one of your teams?
&lt;ul&gt;
&lt;li&gt;E.g., you think this goal is a bad idea, or you think that your team does not have capacity to support the goal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Are the &quot;Team Asks&quot; in these goals appropriate?
&lt;ul&gt;
&lt;li&gt;In particular, &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/#i-see-a-small-medium-large-ask-of-my-team-what-does-that-mean&quot;&gt;should they be larger&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What do you think of the &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/#what-is-a-flagship-theme&quot;&gt;flagship themes&lt;/a&gt;, do they make sense to you?
&lt;ul&gt;
&lt;li&gt;Do you have alternative ideas for flagship themes? &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/#can-i-propose-a-new-flagship-theme&quot;&gt;You can propose your own.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Would you be interested in serving as a &lt;em&gt;point of contact&lt;/em&gt; for one of those themes, helping the goals program to draft periodic updates and track overall progress?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/#what-if-i-have-a-goal-i-would-like-to-propose-is-it-too-late&quot;&gt;Is there work that you would like to do that you think would make a good goal or fit well with the themes?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;(If you&#x27;re blocked on funding, &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/02/03/first-look-at-2026-project-goals/#i-d-like-to-propose-a-goal-but-i-would-need-funding-to-work-on-it-is-there-funding-available-for-project-goals&quot;&gt;we may be able to help&lt;/a&gt;!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;frequently-asked-questions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#frequently-asked-questions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Frequently asked questions&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;why-are-you-saying-2026-goals-and-not-2026h1-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#why-are-you-saying-2026-goals-and-not-2026h1-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Why are you saying 2026 goals and not 2026H1 goals?&lt;/h3&gt;
&lt;p&gt;We&#x27;re shifting the process from something we do every 6 months to something we do once a year. The goal program is focused on larger, long-running goals that will take significant work during the year.&lt;/p&gt;
&lt;p&gt;Team members can add new goals later in the year but you must already have a champion and general agreement from the team that this is a goal they like.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;what-is-the-process-timeline&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-the-process-timeline&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is the process timeline?&lt;/h3&gt;
&lt;p&gt;In each case the task begins at the start of the month and then extends throughout the month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot; checked&#x3D;&quot;&quot;/&gt;
January: Solicit goal proposals and write up first draft.&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
February: Solicit feedback and prepare RFC.&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
March: Open RFC and get it merged.
&lt;ul&gt;
&lt;li&gt;The RFC must be approved by the leads of every team that has a &quot;team ask&quot; listed in any goal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled&#x3D;&quot;&quot; type&#x3D;&quot;checkbox&quot;/&gt;
April: Announce 2026 Project goals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;what-if-i-have-a-goal-i-would-like-to-propose-is-it-too-late&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-if-i-have-a-goal-i-would-like-to-propose-is-it-too-late&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What if I have a goal I would like to propose?  Is it too late?&lt;/h3&gt;
&lt;p&gt;No, it&#x27;s not too late. We accept goal proposals throughout the year, but we require goals coming later in the year (including February) to already have a champion and buy-in from the team. (Of course, as a team member, you can champion your own goal within your team).&lt;/p&gt;
&lt;h3 id&#x3D;&quot;i-d-like-to-propose-a-goal-but-i-would-need-funding-to-work-on-it-is-there-funding-available-for-project-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#i-d-like-to-propose-a-goal-but-i-would-need-funding-to-work-on-it-is-there-funding-available-for-project-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
I&#x27;d like to propose a goal, but I would need funding to work on it. Is there funding available for Project goals?&lt;/h3&gt;
&lt;p&gt;Yes! We are discussing with possible sponsors both of Project goals and of champions of Project goals. Please reach out to &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#user/116009&quot;&gt;nikomatsakis&lt;/a&gt; to discuss.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;what-is-a-flagship-theme&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-a-flagship-theme&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is a &quot;Flagship Theme&quot;?&lt;/h3&gt;
&lt;p&gt;The idea of a flagship theme is that, for people paying only limited attention to the Rust Project, it should help them get a high-level view of the &quot;big things&quot; that they can expect from the Project. These stretch somewhat past a year, many of them (e.g., &quot;Beyond the &lt;code&gt;&amp;amp;&lt;/code&gt;&quot;) represent multi-year technical programs.&lt;/p&gt;
&lt;p&gt;The current set of flagship themes was decided by reading over the goals and looking for the trends that we saw. However, I would like to get to the point where every &lt;em&gt;flagship theme&lt;/em&gt; has a &lt;em&gt;point of contact&lt;/em&gt; that is holding the vision, fielding questions, and helping to draft updates for periodic blog posts on overall progress.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;can-i-propose-a-new-flagship-theme&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#can-i-propose-a-new-flagship-theme&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Can I propose a new flagship theme?&lt;/h3&gt;
&lt;p&gt;Yes! But please do so by Feb 14 (Valentine&#x27;s Day). If you&#x27;d like to propose a new flagship theme, you can open a PR using the &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust-project-goals/blob/main/src/FLAGSHIP_TEMPLATE.md&quot;&gt;&lt;code&gt;FLAGSHIP_TEMPLATE.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#x27;d like to propose changes to a flagship theme, or would consider acting as a point-of-contact for a theme, reach out on &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/546987-project-goals.2F2026-workshop&quot;&gt;&lt;code&gt;#project-goals/2026-workshop&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;i-see-a-small-medium-large-ask-of-my-team-what-does-that-mean&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#i-see-a-small-medium-large-ask-of-my-team-what-does-that-mean&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
I see a &quot;small|medium|large&quot; ask of my team, what does that mean?&lt;/h3&gt;
&lt;p&gt;In brief:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vibes&lt;/strong&gt;: Quick check if your idea is worth exploring and bringing a more mature version to the team in the future.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small&lt;/strong&gt;: Routine small reviews and actions by the team.
&lt;ul&gt;
&lt;li&gt;--&amp;gt; This is typically appropriate for a task that will require a single PR, like adding a lint.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medium&lt;/strong&gt;: Exploring a design or feature with dedicated support from a team member and involving the rest of the team in a vibe-check and small way.
&lt;ul&gt;
&lt;li&gt;--&amp;gt; This is typically appropriate for an experiment or something early stage or a task that will require multiple PRs to complete.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large&lt;/strong&gt;: Reaching consensus within the team about a design or feature.
&lt;ul&gt;
&lt;li&gt;--&amp;gt; This is typically appropriate for RFCs, stabilizations, or other things that require broad team consensus.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;can-you-give-me-some-examples-of-what-small-medium-large-means&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#can-you-give-me-some-examples-of-what-small-medium-large-means&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Can you give me some examples of what small|medium|large means?&lt;/h3&gt;
&lt;p&gt;Here are some rules of thumb and historic examples, focusing on lang + compiler:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Task&lt;/th&gt;&lt;th&gt;Lang&lt;/th&gt;&lt;th&gt;Compiler&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Adding a lint&lt;/td&gt;&lt;td&gt;Small&lt;/td&gt;&lt;td&gt;Small&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Landing a complex compiler change&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Driving an early stage lang experiment&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Accepting a lang RFC&lt;/td&gt;&lt;td&gt;Large&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Stabilizing a lang feature&lt;/td&gt;&lt;td&gt;Large&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Vet and stabilize subtle reference changes&lt;/td&gt;&lt;td&gt;Large&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Overhaul compiler&#x27;s incremental system&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;Large&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;We&#x27;ll have to figure out what these levels mean for other teams!&lt;/p&gt;
&lt;p&gt;The idea of the levels to help us avoid overcommitting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team should expect to only take a small number of &lt;em&gt;large&lt;/em&gt; items, quite possibly zero, depending on how much bandwidth they have.&lt;/li&gt;
&lt;li&gt;No individual should champion more than a small number of goals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;what-is-a-team-champion&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-is-a-team-champion&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What is a team champion?&lt;/h3&gt;
&lt;p&gt;A team &lt;em&gt;champion&lt;/em&gt; is someone who agrees to support the goal owner on an individual basis. Champions should expect to meet with the goal owner on a weekly or biweekly basis.&lt;/p&gt;
&lt;p&gt;Champions often help provide design guidance and advise on who within the team the owner ought to talk to for more information. They should also be prepared to field questions from the rest of the team about the goal.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;can-i-champion-my-own-goal&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#can-i-champion-my-own-goal&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Can I champion my own goal?&lt;/h3&gt;
&lt;p&gt;If you are a member of the team in question, you can champion your own goal, sure.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;why-do-you-call-these-project-goals-if-some-of-them-originate-from-outside-the-project&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#why-do-you-call-these-project-goals-if-some-of-them-originate-from-outside-the-project&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Why do you call these &lt;em&gt;Project goals&lt;/em&gt; if some of them originate from outside the Project?&lt;/h3&gt;
&lt;p&gt;A Project goal is an agreement between...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an &lt;strong&gt;owner&lt;/strong&gt;, who will be doing the work;&lt;/li&gt;
&lt;li&gt;and a &lt;strong&gt;team&lt;/strong&gt;, who will be accepting the work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Owners may or may not be members of a Rust team.&lt;/p&gt;
&lt;p&gt;We only accept goals where there are both owner(s) to do the work and team(s) that want it.&lt;/p&gt;
&lt;p&gt;The fact that the team(s) agree to the goal is what makes it a Rust Project goal.&lt;/p&gt;
</content>

        <author>
            <name>Niko Matsakis</name>
        </author>
    </entry>
    <entry>
        <title>2025 Rust Foundation Annual Report Project Director Update</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/01/27/2025-rust-foundation-annual-report/" type="text/html" title="2025 Rust Foundation Annual Report Project Director Update" />
        <published>2026-01-27T00:00:00+00:00</published>
        <updated>2026-01-27T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/01/27/2025-rust-foundation-annual-report/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/01/27/2025-rust-foundation-annual-report/">&lt;p&gt;The Rust Foundation has published two documents today, addressing what their funding supported in
2025 and their 2026-2028 strategic plan.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/wp-content/uploads/2026/01/2025-Annual-Report.pdf&quot;&gt;The 2025 Annual
Report&lt;/a&gt; details the
Foundation&#x27;s finances and how the Foundation supported the Project last year. For the people behind
the finances and all the work they&#x27;ve done, see the Foundation&#x27;s &lt;a href&#x3D;&quot;https://rustfoundation.org/2025/&quot;&gt;2025 Year In
Review&lt;/a&gt;, which you may have seen in December.&lt;/p&gt;
&lt;p&gt;Looking forward to the next 3 years, the Foundation staff worked with the Leadership Council,
Project Directors, and surveyed the Project as a whole to inform their Strategic Goals for
2026-2028. The 5 areas the Foundation will be concentrating on are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stable, secure infrastructure&lt;/li&gt;
&lt;li&gt;Sustainable support for maintainers&lt;/li&gt;
&lt;li&gt;Responsible growth in adoption&lt;/li&gt;
&lt;li&gt;Meaningful engagement from organizations that rely on Rust&lt;/li&gt;
&lt;li&gt;Building and supporting strong, connected global communities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://rustfoundation.org/strategic-plan/&quot;&gt;View the Rust Foundation&#x27;s full strategic plan&lt;/a&gt; for
more details, examples, and goals.&lt;/p&gt;
&lt;p&gt;We look forward to working with the Foundation towards these goals over the next 3 years!&lt;/p&gt;
</content>

        <author>
            <name>Carol Nichols</name>
        </author>
    </entry>
    <entry>
        <title>Infrastructure Team 2025 Q4 Recap and Q1 2026 Plan</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/" type="text/html" title="Infrastructure Team 2025 Q4 Recap and Q1 2026 Plan" />
        <published>2026-01-13T00:00:00+00:00</published>
        <updated>2026-01-13T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/">&lt;p&gt;As we close out the fourth quarter of 2025 and step into 2026, here’s what the Infrastructure Team delivered and what we’re focusing on next.&lt;/p&gt;
&lt;p&gt;You can find the previous blog post of this series &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q4-2025-accomplishments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q4-2025-accomplishments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q4 2025 Accomplishments&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;more-settings-configured-in-the-team-repo&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#more-settings-configured-in-the-team-repo&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
More settings configured in the &lt;code&gt;team&lt;/code&gt; repo&lt;/h3&gt;
&lt;p&gt;The Infrastructure Team always tries to move manually configured settings into Infrastructure as Code (IaC).
IaC has various benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It helps teams self-serve, since they can inspect their configuration even without admin privileges
and request changes via pull requests.&lt;/li&gt;
&lt;li&gt;It improves security by making configuration drift harder. Manual changes are still possible, but
they will be detected more easily and reverted on the next run of the IaC automation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id&#x3D;&quot;github-environments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-environments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub environments&lt;/h4&gt;
&lt;p&gt;All GitHub environments for Rust Project repositories are now defined in the &lt;a href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt; repo.&lt;/p&gt;
&lt;p&gt;Here&#x27;s an example from the &lt;a href&#x3D;&quot;https://github.com/rust-lang/team/blob/1a808bd0d6dfb4ff278b7dd07e5f9c8bf39906d9/repos/rust-lang/bors.toml#L17C1-L21C20&quot;&gt;bors&lt;/a&gt; repository file:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;environments&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-table z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;production&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;branches&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;main&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;environments&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-table z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;staging&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;branches&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;main&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/amustaque97&quot;&gt;amustaque97&lt;/a&gt; for his great work on the
&lt;a href&#x3D;&quot;https://github.com/rust-lang/team/issues/2037&quot;&gt;GitHub environments issue&lt;/a&gt;!&lt;/p&gt;
&lt;h4 id&#x3D;&quot;trusted-publishing&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#trusted-publishing&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Trusted publishing&lt;/h4&gt;
&lt;p&gt;All crates owned by the Rust Project that use crates.io &lt;a href&#x3D;&quot;https://crates.io/docs/trusted-publishing&quot;&gt;trusted publishing&lt;/a&gt;
now configure it as IaC via the &lt;a href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt; repo.&lt;/p&gt;
&lt;p&gt;Here&#x27;s an example from the &lt;a href&#x3D;&quot;https://github.com/rust-lang/team/blob/main/repos/rust-lang/measureme.toml&quot;&gt;measureme&lt;/a&gt; repository file:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-begin z-toml&quot;&gt;[[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-array z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;crates-io&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-end z-toml&quot;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;crates&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;analyzeme&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;decodeme&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;measureme&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;publish-workflow&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;publish.yml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;publish-environment&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;publish&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The work to configure trusted publishing for all the Rust Project crates will be easier now.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;crates-io-index-and-docs-rs-served-via-fastly&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#crates-io-index-and-docs-rs-served-via-fastly&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Crates.io index and docs.rs served via Fastly&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;crates.io&lt;/code&gt; index and the &lt;code&gt;docs.rs&lt;/code&gt; website are now served by the Fastly CDN.&lt;/p&gt;
&lt;p&gt;We made this change because Fastly donates its CDN to us, and we want to use our AWS credits for other resources.&lt;/p&gt;
&lt;p&gt;For docs.rs, we also enabled Fastly shielding, which adds an additional caching layer to reduce the
load on our origin server.
Here&#x27;s the effect of enabling shielding on the number of active connections after a brief experiment on
December 2 and enabling it permanently on December 3:&lt;/p&gt;
&lt;p&gt;&lt;img src&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/shielding.png&quot; alt&#x3D;&quot;A graph showing the number of active connections to docs.rs dropping significantly after enabling Fastly shielding&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Note that the &lt;code&gt;crates.io&lt;/code&gt; index is still partially served by CloudFront, and we can configure how much traffic goes to each CDN.&lt;/p&gt;
&lt;p&gt;Thanks to the crates.io and docs.rs teams for helping with this!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;the-new-bors-is-used-to-merge-rust-compiler-pull-requests&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#the-new-bors-is-used-to-merge-rust-compiler-pull-requests&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
The new Bors is used to merge Rust compiler pull requests&lt;/h3&gt;
&lt;p&gt;The Infra and &lt;a href&#x3D;&quot;https://rust-lang.org/governance/teams/infra/#team-infra-bors&quot;&gt;Bors&lt;/a&gt; teams continued working on migrating the Rust CI from the legacy Bors (&lt;a href&#x3D;&quot;https://github.com/rust-lang/homu&quot;&gt;Homu&lt;/a&gt;) to the new &lt;a href&#x3D;&quot;https://github.com/rust-lang/bors&quot;&gt;Bors&lt;/a&gt;, written in Rust.&lt;/p&gt;
&lt;p&gt;We have now enabled the new bot to merge &lt;code&gt;rust-lang/rust&lt;/code&gt; PRs, completing the migration off Homu and improving the reliability of our continuous integration infrastructure 🎉.&lt;/p&gt;
&lt;p&gt;We would like to thank all contributors who contributed to the development of bors, in particular &lt;a href&#x3D;&quot;https://github.com/l0ngvh&quot;&gt;Võ Hoàng Long&lt;/a&gt; and &lt;a href&#x3D;&quot;https://github.com/Sakib25800&quot;&gt;Sakibul Islam&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;rustc-perf-benchmarks-are-now-executed-in-parallel&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rustc-perf-benchmarks-are-now-executed-in-parallel&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
rustc-perf benchmarks are now executed in parallel&lt;/h3&gt;
&lt;p&gt;We made progress with the &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h1/perf-improvements.html&quot;&gt;Project Goal&lt;/a&gt; for parallel benchmarking of the Rust compiler. We now have two x64 machines that run benchmarks in parallel, which reduced the latency of getting a full compiler benchmark result from ~1h 20m to ~40m.&lt;/p&gt;
&lt;p&gt;In 2026, we plan to make further improvements to the benchmarking suite, such as enabling benchmarking on other hardware architectures.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;repository-default-branch-renames&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#repository-default-branch-renames&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Repository default branch renames&lt;/h3&gt;
&lt;p&gt;The following repositories have renamed their default branch from &lt;code&gt;master&lt;/code&gt; to &lt;code&gt;main&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/annotate-snippets-rs&quot;&gt;&lt;code&gt;annotate-snippets-rs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/ar_archive_writer&quot;&gt;&lt;code&gt;ar_archive_writer&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cmake-rs&quot;&gt;&lt;code&gt;cmake-rs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins&quot;&gt;&lt;code&gt;compiler-builtins&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/docs.rs&quot;&gt;&lt;code&gt;docs.rs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/infra-team&quot;&gt;&lt;code&gt;infra-team&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/moderation-team&quot;&gt;&lt;code&gt;moderation-team&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;&lt;code&gt;rust&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustfmt&quot;&gt;&lt;code&gt;rustfmt&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup&quot;&gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustwide&quot;&gt;&lt;code&gt;rustwide&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/stdarch&quot;&gt;&lt;code&gt;stdarch&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/this-week-in-rust&quot;&gt;&lt;code&gt;this-week-in-rust&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;hired-a-new-teammate&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hired-a-new-teammate&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hired a new teammate&lt;/h3&gt;
&lt;p&gt;The Rust Foundation hired a new Infrastructure Engineer in Q4.
They’ll start in January 2026, increasing the team’s capacity to better serve the Project.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;Kobzol&lt;/a&gt; for helping with the hiring process!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;triagebot-enhancements&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#triagebot-enhancements&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Triagebot enhancements&lt;/h3&gt;
&lt;p&gt;Triagebot is our trusty bot incessantly processing workflows on GitHub and on our Zulip chat.&lt;/p&gt;
&lt;p&gt;We implemented several notable changes in Q4 2025.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;triagebot-label-command-now-supports-aliases&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#triagebot-label-command-now-supports-aliases&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Triagebot label command now supports aliases&lt;/h4&gt;
&lt;p&gt;We now have a mechanism for creating aliases when applying batches of labels to an issue (or a pull request) on GitHub. If you find yourself repeatedly applying or removing the same set of labels, you can now create an alias.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;@rustbot label +regression-untriaged +I-prioritize +needs-repro
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;could become an alias:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;@rustbot label regression-needs-triaging
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/apiraino&quot;&gt;@apiraino&lt;/a&gt; for implementing the feature in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2216&quot;&gt;#2216&lt;/a&gt; (&lt;a href&#x3D;&quot;https://forge.rust-lang.org/triagebot/labeling.html#aliases&quot;&gt;documentation&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id&#x3D;&quot;turn-automatic-backport-nominations-into-suggestions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#turn-automatic-backport-nominations-into-suggestions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Turn automatic backport nominations into suggestions&lt;/h4&gt;
&lt;p&gt;We now offer project teams a streamlined workflow for backports to the stable/beta release channels. Patches fixing regressions can be manually &quot;nominated&quot; for backport by anyone interested in having said patch tested earlier. Backport nominations are discussed during the weekly triage team meetings (and then approved or declined).&lt;/p&gt;
&lt;p&gt;Now teams can configure the triagebot to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically nominate patches fixing &lt;code&gt;P-high&lt;/code&gt;/&lt;code&gt;P-critical&lt;/code&gt; regressions occurred in the beta/stable release channels.&lt;/li&gt;
&lt;li&gt;Automatically open topics in our Zulip chat to evaluate backports asynchronously (see the &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports&quot;&gt;compiler&lt;/a&gt; and &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc&quot;&gt;rustdoc&lt;/a&gt; channels). During the triage meeting, the topic is quickly skimmed and a decision can be taken faster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/apiraino&quot;&gt;@apiraino&lt;/a&gt; for implementing the feature in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2191&quot;&gt;#2191&lt;/a&gt; (&lt;a href&#x3D;&quot;https://forge.rust-lang.org/triagebot/backport.html&quot;&gt;documentation&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id&#x3D;&quot;new-triagebot-commands-r-me-and-rustbot-reroll&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-triagebot-commands-r-me-and-rustbot-reroll&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New Triagebot commands: &lt;code&gt;r? me&lt;/code&gt; and &lt;code&gt;@rustbot reroll&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Two new triagebot features have been added to improve reviewer assignment.&lt;/p&gt;
&lt;p&gt;First, &lt;a href&#x3D;&quot;https://github.com/Urgau&quot;&gt;@Urgau&lt;/a&gt; implemented support for using &lt;code&gt;r? me&lt;/code&gt; as a shorthand for &lt;em&gt;self-assignment&lt;/em&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2218&quot;&gt;#2218&lt;/a&gt;. This provides a convenient alternative to manually typing &lt;code&gt;r? @username&lt;/code&gt; when assigning a pull request to yourself.&lt;/p&gt;
&lt;p&gt;Second, &lt;a href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;@Kobzol&lt;/a&gt; added the new &lt;code&gt;@rustbot reroll&lt;/code&gt; command in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2219&quot;&gt;#2219&lt;/a&gt;. This new command &lt;em&gt;re-runs the automatic reviewer assignment logic&lt;/em&gt; normally triggered when a PR is first opened, using the latest diff and owner map.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;no-mentions-handler-removed-from-triagebot&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#no-mentions-handler-removed-from-triagebot&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;[no-mentions]&lt;/code&gt; handler removed from Triagebot&lt;/h4&gt;
&lt;p&gt;We have removed the &lt;code&gt;[no-mentions]&lt;/code&gt; handler from triagebot, as it is no longer needed. This handler was originally used to ask users to avoid &lt;code&gt;@&lt;/code&gt;-mentions in commit messages to avoid triggering user notifications.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.blog/changelog/2025-11-07-removing-notifications-for-mentions-in-commit-messages/&quot;&gt;GitHub’s recent change&lt;/a&gt;, which &lt;em&gt;disables notifications for mentions in commits&lt;/em&gt;, this workaround is no longer necessary. We appreciate GitHub for making this improvement and simplifying the workflow for everyone involved.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;highlighting-of-log-lines-in-triagebot-s-gha-log-viewer&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#highlighting-of-log-lines-in-triagebot-s-gha-log-viewer&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Highlighting of log lines in Triagebot’s GHA log viewer&lt;/h4&gt;
&lt;p&gt;Triagebot’s GitHub Actions log viewer now supports &lt;em&gt;highlighting selected log lines&lt;/em&gt;, similar to GitHub’s own code highlighting feature.&lt;/p&gt;
&lt;p&gt;This improvement was implemented by &lt;a href&#x3D;&quot;https://github.com/Urgau&quot;&gt;@Urgau&lt;/a&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2234&quot;&gt;#2234&lt;/a&gt;. It allows users to select one or more lines in build logs and share them easily using highlighted URLs, making it simpler to point others directly to relevant sections of long logs.&lt;/p&gt;
&lt;p&gt;Here’s an example of the new functionality in action:&lt;/p&gt;
&lt;p&gt;&lt;img src&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/triagebot-logs.png&quot; alt&#x3D;&quot;Screenshot showing highlighted log lines in Triagebot&amp;#39;s GHA log viewer&quot; /&gt;&lt;/p&gt;
&lt;h4 id&#x3D;&quot;triagebot-mentions-now-supports-glob-patterns&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#triagebot-mentions-now-supports-glob-patterns&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Triagebot &lt;code&gt;[mentions]&lt;/code&gt; now supports glob patterns&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;[mentions]&lt;/code&gt; configuration in triagebot now supports &lt;em&gt;glob pattern matching&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This improvement was implemented by &lt;a href&#x3D;&quot;https://github.com/Urgau&quot;&gt;@Urgau&lt;/a&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2244&quot;&gt;#2244&lt;/a&gt;. With this change, it’s now possible to group related paths under a single rule.&lt;/p&gt;
&lt;p&gt;For example, it is now possible to write:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;mentions&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-table z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;library/{dec2flt,flt2dec}&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;cc&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;@ghost&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;instead of maintaining two separate entries for each directory.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;internal-sites-team-takes-its-first-action&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#internal-sites-team-takes-its-first-action&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Internal Sites team takes its first action&lt;/h3&gt;
&lt;p&gt;The new &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/538071-t-internal-sites&quot;&gt;t-internal-sites&lt;/a&gt; team, responsible for maintaining and supporting the Rust project’s internal websites such as the &lt;a href&#x3D;&quot;https://forge.rust-lang.org/&quot;&gt;Forge&lt;/a&gt; and the &lt;a href&#x3D;&quot;https://rust-lang.github.io/rfcs&quot;&gt;RFCs site&lt;/a&gt;, has taken its first action.&lt;/p&gt;
&lt;p&gt;The team began by addressing &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/538071-t-internal-sites/topic/Stale.20non-RFC.20PRs/with/553453671&quot;&gt;stale non-RFC pull requests&lt;/a&gt; which had been stale due to the lack of ownership before t-internal-sites introduction.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q1-2026-plans&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q1-2026-plans&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q1 2026 Plans&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;finish-q4-2025-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-q4-2025-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Finish Q4 2025 goals&lt;/h3&gt;
&lt;p&gt;In Q4 2025, we didn&#x27;t manage to finish all our goals, so we will continue working on them in Q1 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;docs.rs infrastructure modernization:&lt;/strong&gt; Although we made various improvements to docs.rs in Q4 2025,
such as improving the CDN setup,
we still want to move from the single EC2 instance to a modern, managed deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External hardware CI policy:&lt;/strong&gt; publish requirements for running Rust CI on external hardware.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GCP Dev Desktops:&lt;/strong&gt; spin up one or two dev desktops in GCP.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read more about these goals in our &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/#q4-2025-plans&quot;&gt;Q4 2025 plan&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;account-and-access-management&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#account-and-access-management&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Account and Access Management&lt;/h3&gt;
&lt;p&gt;Finish the work started in &lt;a href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/64&quot;&gt;rust-lang/infra-team#64&lt;/a&gt;
by setting up a Google Workspace for the Rust Project for automated account and access management using SAML.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;move-to-github-rulesets&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#move-to-github-rulesets&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Move to GitHub Rulesets&lt;/h3&gt;
&lt;p&gt;To have more flexibility and configurability, we want to migrate from branch protection rules to
&lt;a href&#x3D;&quot;https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets&quot;&gt;GitHub Rulesets&lt;/a&gt;
across all Rust Project repositories.&lt;/p&gt;
&lt;p&gt;The branch protection rules are already defined as code in the &lt;code&gt;team&lt;/code&gt; repo, so we will
need to update the IaC automation to create rulesets instead of branch protection rules.&lt;/p&gt;
&lt;p&gt;This would also allow us to configure merge queues as IaC, which is currently not possible (see &lt;a href&#x3D;&quot;https://github.com/rust-lang/team/issues/1735&quot;&gt;rust-lang/team#1735&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id&#x3D;&quot;join-us&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#join-us&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Join us!&lt;/h2&gt;
&lt;p&gt;If you&#x27;re interested in contributing to Rust&#x27;s infrastructure, have a look at the
&lt;a href&#x3D;&quot;https://github.com/rust-lang/infra-team&quot;&gt;infra-team&lt;/a&gt; repository to learn more about us
and reach out on &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra&quot;&gt;Zulip&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are always looking for new contributors!&lt;/p&gt;
</content>

        <author>
            <name>Marco Ieni</name>
        </author>
    </entry>
    <entry>
        <title>What is maintenance, anyway?</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/01/12/what-is-maintenance-anyway/" type="text/html" title="What is maintenance, anyway?" />
        <published>2026-01-12T00:00:00+00:00</published>
        <updated>2026-01-12T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/01/12/what-is-maintenance-anyway/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/01/12/what-is-maintenance-anyway/">&lt;p&gt;Recently, the Rust Foundation has announced the &lt;a href&#x3D;&quot;https://rustfoundation.org/media/announcing-the-rust-foundation-maintainers-fund/&quot;&gt;Rust Foundation Maintainer Fund&lt;/a&gt;, whose goal is to support Rust Project maintainers. We are currently cooperating with the Foundation to define the &lt;a href&#x3D;&quot;https://github.com/rust-lang/funding/blob/main/design-docs/exploration.md&quot;&gt;guidelines&lt;/a&gt; of this Fund, such as what kind of work to fund, how to select maintainers to fund and others. One of the questions that keeps coming up is this: &lt;em&gt;Who exactly is a maintainer, and what work can be considered as being maintenance?&lt;/em&gt; This post provides some observations that might help answer these questions.&lt;/p&gt;
&lt;p&gt;Wikipedia defines &lt;a href&#x3D;&quot;https://en.wikipedia.org/wiki/Software_maintenance&quot;&gt;software maintenance&lt;/a&gt; as &quot;modification of software after delivery&quot;, but that does not correspond very well to how maintenance works in open-source or in Rust. There is no single delivery of Rust after which it would switch to &quot;maintenance mode&quot;; we deliver a new nightly version of Rust every day, and a new stable version every six weeks. And if someone contributes a pull request to the compiler, they clearly modify it, but as much as we treasure contributions to Rust, that does not immediately make them a maintainer. Instead, let us try to describe how we understand maintenance in the Rust Project.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;keeping-the-lights-on&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#keeping-the-lights-on&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Keeping the lights on&lt;/h2&gt;
&lt;p&gt;We could interpret the word &quot;maintain&quot; literally, in the sense of keeping something in a specific (hopefully working) state over a long time period. And that is indeed a large part of what maintainers do: they ensure that things that work today will still continue working tomorrow. There are many ways in which a software project might stop working properly, so this work is naturally very diverse. It includes activities such as issue triaging, investigating and fixing bugs, dealing with CI failures, responding to security incidents, resolving performance regressions, updating dependencies, making sure that documentation is up to date, and many others.&lt;/p&gt;
&lt;p&gt;This kind of &quot;janitorial&quot; work is quite challenging for several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can be difficult to demonstrate the positive effects of this work on a given software project. Users sometimes assume that if something works now, it will keep working indefinitely. Furthermore, Rust has a very high bar for being reliable (in many aspects of that word), so people are used to the fact that the compiler works correctly, that critical bugs are resolved as quickly as possible, that new releases are published every six weeks, etc. But all that takes considerable effort, even without considering shipping any new features. Therefore, a successful report of maintenance work can be simply &quot;things still work as they used to&quot;, and consistent maintenance over time manifests as an &lt;em&gt;absence&lt;/em&gt; of noteworthy incidents.&lt;/li&gt;
&lt;li&gt;It can be very unpredictable, because it is hard to estimate in advance what things will break next. This also makes it difficult to plan this work ahead and make promises about what kind of work will get done in a given time period.&lt;/li&gt;
&lt;li&gt;Finding motivation for performing a lot of maintenance work can be a struggle. It is often not work that someone &lt;em&gt;wants&lt;/em&gt; to do, but work that &lt;em&gt;has to be done&lt;/em&gt;. That can be draining, especially if that work is done by volunteers.&lt;/li&gt;
&lt;li&gt;Maintenance is often not on a roadmap, and often not viewed as high-status work that gets someone recognized or promoted.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;enabling-evolution&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#enabling-evolution&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Enabling evolution&lt;/h2&gt;
&lt;p&gt;The maintenance activities described above are required to keep a software project working. However, usually that&#x27;s not &lt;em&gt;all&lt;/em&gt; we need. Most software projects need to &lt;em&gt;evolve&lt;/em&gt; over time, and Rust is no exception; this usually means adding new features and making improvements. Improving the language, compiler, standard library, tooling, etc. might unblock some Rust users, which is great. But what might not be so obvious is that we often need to unblock the contributors who implement these new features in the first place!&lt;/p&gt;
&lt;p&gt;Before someone even starts to implement a new feature, they often want to get a vibe check from someone else knowledgeable with the corresponding part of the codebase, or advice on how best to approach the implementation. Furthermore, certain features require complex refactorings to be performed before they can be implemented. Then, once a pull request with a new feature is submitted, someone has to review it. And even once a pull request lands, it may introduce new &lt;a href&#x3D;&quot;https://en.wikipedia.org/wiki/Technical_debt&quot;&gt;technical debt&lt;/a&gt;, which will eventually need cleaning up.&lt;/p&gt;
&lt;p&gt;However, it&#x27;s not only refactoring and code reviews that help make progress on various improvements. Even implementing a new feature can unblock many other contributors, who might want to add other features that depend on it.&lt;/p&gt;
&lt;p&gt;And all of that is another part of what maintainers do. They continuously improve the codebase so that it is easier to land new changes, they review pull requests, and they communicate with and mentor other contributors. This work is crucial to ensure the long-term health of constantly evolving codebases. And it also has a strong second-order effect. By unblocking other Rust contributors, new features and improvements can be landed quicker and more frequently, which in turns unblocks and improves the lives of Rust users, which results in a positive feedback cycle. This is a multiplicative effect that strongly benefits everyone!&lt;/p&gt;
&lt;p&gt;This enablement work of course requires having a deep knowledge of the codebase, but also a long-term focus to perform complex refactorings and grit to continuously review tons of pull requests.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;conclusion&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#conclusion&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Conclusion&lt;/h2&gt;
&lt;p&gt;Based on the observations presented above, we could say that a maintainer is someone who continuously ensures that a software project keeps working, but who also does a lot of hard (and often invisible) work to enable other contributors to evolve and improve the project.&lt;/p&gt;
&lt;aside style&#x3D;&quot;float: right; width: 30%; min-width: 32rem; margin: 1.5rem 0 1.5rem 1.5rem; padding: 1em; border-top: solid; border-bottom: solid; font-family: serif;&quot;&gt;
  &lt;span style&#x3D;&quot;display: block; line-height: 1; font-size: 10rem; margin-bottom: -5rem; margin-top: -2rem; margin-left: -2rem;&quot;&gt;&amp;ldquo;&lt;/span&gt;
  &lt;p style&#x3D;&quot;margin: 0; font-size: 1.5rem; font-style: italic; line-height: 1.5;&quot;&gt;
    We see the work of maintainers as work that has a multiplicative effect on the Rust Project.
  &lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;These are some examples of the kinds of things we see as needing additional support, including from efforts like the proposed Rust Foundation Maintainers&#x27; Fund. We see the work of maintainers as work that has a multiplicative effect on the Rust Project. We have an interest in supporting other types of work with a similar multiplicative effect.&lt;/p&gt;
&lt;p&gt;You probably already guessed that maintenance work is not easy, and maybe that is one of the reasons why there seems to be a perpetual imbalance. There are often many people who want to contribute to open source, by making improvements and implementing new features, as it is often seen as being fun, and implementing a new feature is also a very visible achievement that may help meet someone&#x27;s needs or give them something obvious to be proud of. But there are far fewer people who want to continuously maintain a codebase (especially if they are not paid for it!), as the results of good maintenance are much more difficult to demonstrate, and it often more closely resembles work rather than pure fun.&lt;/p&gt;
&lt;p&gt;While being a maintainer can be challenging, &lt;em&gt;becoming&lt;/em&gt; one is even more difficult. It is not really possible to become a maintainer overnight, as it takes time to not only gain deep expertise in parts of a codebase, but also to gain trust of other maintainers and contributors. All while regularly doing work that many others aren&#x27;t enthusiastic about doing.&lt;/p&gt;
&lt;p&gt;We are incredibly happy that we have so many awesome maintainers in the Rust Project, who pour their souls into ensuring that Rust becomes better every day, and who invest enormous amounts of time into becoming experts in certain Rust projects so that they can effectively maintain them. However, many of those maintainers are volunteers, and when so much maintenance burden falls on someone who still has to work another job to pay the bills, it can lead to burnout. This is something that we want to prevent.&lt;/p&gt;
&lt;p&gt;People who do open-source maintenance deserve to be &lt;a href&#x3D;&quot;https://rust-lang.org/funding/&quot;&gt;supported&lt;/a&gt; and rewarded for it, which is where maintainer funding comes in. We are currently seeking mechanisms for supporting people who maintain various Rust Project codebases, in a way that provides stability and enables them to focus on what they do best: improving Rust. We also want to publicize their great work—which is otherwise often near-invisible—both to give them something to be proud of, and to attract more support and funding for this critical work. With the Rust Foundation Maintainer Fund and other similar initiatives, we hope to improve the long-term sustainability of Rust maintainership. Stay tuned for more updates.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek</name>
        </author>
    </entry>
    <entry>
        <title>This Development-cycle in Cargo: 1.93</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/" type="text/html" title="This Development-cycle in Cargo: 1.93" />
        <published>2026-01-07T00:00:00+00:00</published>
        <updated>2026-01-07T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/">&lt;h1 id&#x3D;&quot;this-development-cycle-in-cargo-1-93&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#this-development-cycle-in-cargo-1-93&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
This Development-cycle in Cargo: 1.93&lt;/h1&gt;
&lt;p&gt;This is a summary of what has been happening around Cargo development for the last 6 weeks which is approximately the merge window for Rust 1.93.&lt;/p&gt;
&lt;!-- time period: 2025-10-31 through 2025-12-11 --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#plugin-of-the-cycle&quot;&gt;Plugin of the cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#implementation&quot;&gt;Implementation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#rendering-diagnostics&quot;&gt;Rendering diagnostics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#linting&quot;&gt;Linting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#turn-all-warnings-into-errors&quot;&gt;Turn all warnings into errors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#shell-completions&quot;&gt;Shell completions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#build-dir-layout&quot;&gt;Build dir layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#custom-final-artifacts&quot;&gt;Custom final artifacts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#target-dir-locking&quot;&gt;Target dir locking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#structured-logging&quot;&gt;Structured logging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#config-include&quot;&gt;Config include&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#pubtime&quot;&gt;&lt;code&gt;pubtime&lt;/code&gt;&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/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#misc&quot;&gt;Misc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#focus-areas-without-progress&quot;&gt;Focus areas without progress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;plugin-of-the-cycle&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#plugin-of-the-cycle&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Plugin of the cycle&lt;/h2&gt;
&lt;p&gt;Cargo can&#x27;t be everything to everyone,
if for no other reason than the compatibility guarantees it must uphold.
Plugins play an important part of the Cargo ecosystem and we want to celebrate them.&lt;/p&gt;
&lt;p&gt;Our plugin for this cycle is &lt;a href&#x3D;&quot;https://github.com/eopb/cargo-override&quot;&gt;cargo-override&lt;/a&gt; which helps manage your &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section&quot;&gt;&lt;code&gt;patch&lt;/code&gt; table&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href&#x3D;&quot;https://github.com/eopb&quot;&gt;eopb&lt;/a&gt; for the suggestion!&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/Plugin.20of.20the.20Dev.20Cycle/near/420703211&quot;&gt;Please submit your suggestions for the next post.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id&#x3D;&quot;implementation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implementation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Implementation&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;rendering-diagnostics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rendering-diagnostics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rendering diagnostics&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/24/this-development-cycle-in-cargo-1.92/#misc&quot;&gt;1.92&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/jneem&quot;&gt;jneem&lt;/a&gt; continued the work of migrating to &lt;a href&#x3D;&quot;https://github.com/rust-lang/annotate-snippets-rs/&quot;&gt;annotate-snippets&lt;/a&gt; in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16143&quot;&gt;#16143&lt;/a&gt;.
This effort is being tracked in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15944&quot;&gt;#15944&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A compiler major change proposal (or MCP) was posted to switch nightly rustc over to using
&lt;a href&#x3D;&quot;https://github.com/rust-lang/annotate-snippets-rs/&quot;&gt;annotate-snippets&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/937&quot;&gt;compiler-team#937&lt;/a&gt;).
That experiment went well enough that it has now been approved for general use by rustc (&lt;a href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/947&quot;&gt;compiler-team#947&lt;/a&gt;).
The relevance to Cargo is that this lowers the barrier for enabling the unicode renderer for all diagnostics.
&lt;a href&#x3D;&quot;https://github.com/Muscraft&quot;&gt;Muscraft&lt;/a&gt; started this off by adding to Cargo &lt;code&gt;-Zrustc-unicode&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16243&quot;&gt;#16243&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;warning: used import from &#x60;std&#x60; instead of &#x60;core&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  --&amp;gt; src/error.rs:25:5
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;25 | use std::num::NonZeroUsize;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   |     ^^^ help: consider importing the item from &#x60;core&#x60;: &#x60;core&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   &#x3D; help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#std_instead_of
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;_core
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;note: the lint level is defined here
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  --&amp;gt; src/lib.rs:53:9
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;53 | #![warn(clippy::std_instead_of_core)]
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;warning: used import from &#x60;std&#x60; instead of &#x60;core&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   ╭▸ src/error.rs:25:5
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   │
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;25 │ use std::num::NonZeroUsize;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   │     ━━━ help: consider importing the item from &#x60;core&#x60;: &#x60;core&#x60;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   │
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   ╰ help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#std_instead_of_core
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;note: the lint level is defined here
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   ╭▸ src/lib.rs:53:9
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   │
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;53 │ #![warn(clippy::std_instead_of_core)]
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;   ╰╴        ━━━━━━━━━━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can enable this selectively for nightly by adding it to your &lt;code&gt;~/.cargo/config.toml&lt;/code&gt; file:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;unstable&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;rustc-unicode&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-constant z-language z-toml&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Stabilization is being tracked in &lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/issues/148607&quot;&gt;rust#148607&lt;/a&gt;&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improving-diagnostics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improving-diagnostics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improving diagnostics&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/24/this-development-cycle-in-cargo-1.92/#misc&quot;&gt;1.92&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We wanted to give thanks to all the people who helped improve the quality of Cargo&#x27;s error messages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/0xPoe&quot;&gt;0xPoe&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16125&quot;&gt;#16125&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/Amberley-Sz&quot;&gt;Amberley-Sz&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16241&quot;&gt;#16241&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16216&quot;&gt;#16216&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16225&quot;&gt;#16225&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16227&quot;&gt;#16227&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16233&quot;&gt;#16233&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16256&quot;&gt;#16256&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/motorailgun&quot;&gt;motorailgun&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16207&quot;&gt;#16207&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16268&quot;&gt;#16268&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/TanmayArya-1p&quot;&gt;TanmayArya-1p&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16338&quot;&gt;#16338&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-11-11.md for 16268 --&gt;
&lt;h3 id&#x3D;&quot;linting&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#linting&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Linting&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/01/this-development-cycle-in-cargo-1.90/#all-hands-cargo-linting&quot;&gt;1.90&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; added the lint &lt;code&gt;implicit_minimum_version_req&lt;/code&gt;
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16321&quot;&gt;#16321&lt;/a&gt;),
improving the linting system along the way (
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16320&quot;&gt;#16320&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16324&quot;&gt;#16324&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16364&quot;&gt;#16364&lt;/a&gt;
).&lt;/p&gt;
&lt;!-- https://github.com/rust-lang/cargo/pull/16321#discussion_r2578707514 --&gt;
&lt;p&gt;Something that came up in #16321 is whether we should lint dependencies in &lt;code&gt;workspace.dependencies&lt;/code&gt; or on every time that one of those is inherited.&lt;/p&gt;
&lt;p&gt;Or put another way, given &lt;code&gt;./Cargo.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;workspace&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;members&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;workspace&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-table z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;dependencies&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;clap&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;4&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and &lt;code&gt;./a/Cargo.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;name&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;dependencies&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;clap&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-key z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;workspace&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-constant z-language z-toml&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Should you see the following each time you inherit a dependency:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;[WARNING] dependency version requirement lacks full precision
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt; --&amp;gt; Cargo.toml:7:7
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;7 | dep &#x3D; &amp;quot;1&amp;quot;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |       ^^^
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;[NOTE] dependency &#x60;dep&#x60; was inherited
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt; --&amp;gt; a/Cargo.toml:8:5
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;8 | dep.workspace &#x3D; true
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |     ----------------
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  &#x3D; [NOTE] &#x60;cargo::imprecise_version_requirements&#x60; is set to &#x60;warn&#x60; in &#x60;[lints]&#x60;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or see the following only once, regardless of whether you inherit:&lt;/p&gt;
&lt;pre class&#x3D;&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;[WARNING] dependency version requirement without an explicit minimum version
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt; --&amp;gt; Cargo.toml:7:7
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;7 | dep &#x3D; &amp;quot;1&amp;quot;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |       ^^^ missing full version components
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  |
&lt;/span&gt;&lt;span class&#x3D;&quot;z-text z-plain&quot;&gt;  &#x3D; [NOTE] &#x60;cargo::implicit_minimum_version_req&#x60; is set to &#x60;warn&#x60; in &#x60;[lints]&#x60;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To liken this to Rust code,
should we treat inherited dependency sources as macros,
injecting their content into the caller,
or like functions which act in isolation.
Macros emit lints for each invocation and are subject to the caller&#x27;s lint level.
Functions emit lints only for where they are defined, not used, and have their own lint level controlling them.&lt;/p&gt;
&lt;p&gt;When linting &lt;code&gt;workspace.dependencies&lt;/code&gt;,
what controls the lint level?
We already have the need for &quot;workspace lints&quot; for linting
virtual workspaces (e.g. &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/13723&quot;&gt;#13723&lt;/a&gt;) and
the dependency tree (e.g. &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/9930&quot;&gt;#9930&lt;/a&gt;),
so this problem isn&#x27;t unique.
The current thought is we&#x27;d use &lt;code&gt;workspace.lints&lt;/code&gt; not just for inheriting lints for for controlling workspace lints.
We may need to do a fallback to &lt;code&gt;lints&lt;/code&gt; for implicit workspaces,
like we do for &lt;code&gt;package.resolver&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Another problem is what &lt;code&gt;edition&lt;/code&gt; is applicable?
In a previous issue with dependency inheritance,
we framed the problem around the act of inheriting and put the responsibility on the package.
That worked well for that case but won&#x27;t work for all of these other cases.
We have talked for a while of a need for a workspace &lt;code&gt;edition&lt;/code&gt;.
Luckily, we can punt on this until we need to make a change across editions.&lt;/p&gt;
&lt;p&gt;In the end, we decided to lint the &lt;code&gt;workspace.dependencies&lt;/code&gt; entry
though we have flexibility to change this in the future,
especially with this feature being unstable.&lt;/p&gt;
&lt;p&gt;In response, &lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; posted &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16367&quot;&gt;#16367&lt;/a&gt;
to update the &lt;code&gt;unknown_lints&lt;/code&gt; lint to match what we did for &lt;code&gt;implicit_minimum_version_req&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;turn-all-warnings-into-errors&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#turn-all-warnings-into-errors&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Turn all warnings into errors&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2024/08/15/this-development-cycle-in-cargo-1.81/#turn-all-warnings-into-errors&quot;&gt;1.81&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/jyn514&quot;&gt;jyn514&lt;/a&gt;
posted on &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/Environment.20variable.20for.20.5Blints.5D.20table.3F/near/548176767&quot;&gt;Zulip&lt;/a&gt;
looking at updating the Rust bootstrap process to not require a full rebuild when denying or allowing warnings.
The &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/unstable.html#warnings&quot;&gt;unstable &lt;code&gt;build.warnings&lt;/code&gt;&lt;/a&gt; seemed like a perfect fit.&lt;/p&gt;
&lt;p&gt;When jyn514 tried to apply this to bootstrap in
&lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/148332&quot;&gt;#148332&lt;/a&gt;,
they ran into problems with hard warnings (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14802#issuecomment-3487140567&quot;&gt;#14802-comment&lt;/a&gt;).
In the end, we decided to ignore hard warnings which
&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; addressed in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16213&quot;&gt;#16213&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;jyn514 also pointed out on Zulip that this does not abort the build after the first package with warnings,
unlike &lt;code&gt;RUSTFLAGS&#x3D;-Dwarnings&lt;/code&gt;.
epage suggested have it key off of &lt;code&gt;--keep-going&lt;/code&gt; for whether it should error after the first set of warnings or show all warnings.
This was not discussed further.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;shell-completions&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#shell-completions&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Shell completions&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2024/10/31/this-development-cycle-in-cargo-1.83/#shell-completions&quot;&gt;1.83&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We&#x27;d like to thank the people who helped move forward our new auto completion system (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14520&quot;&gt;#14520&lt;/a&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/charmitro&quot;&gt;charmitro&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16322&quot;&gt;#16322&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16327&quot;&gt;#16327&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16296&quot;&gt;#16296&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/jakobhellermann&quot;&gt;jakobhellermann&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16210&quot;&gt;#16210&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16215&quot;&gt;#16215&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;build-dir-layout&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#build-dir-layout&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Build dir layout&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update from &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/24/this-development-cycle-in-cargo-1.92/#build-dir-layout&quot;&gt;1.92&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/epage/&quot;&gt;epage&lt;/a&gt; proposed a transition plan on &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15010#issuecomment-3618689353&quot;&gt;#15010&lt;/a&gt; with the current focus being on testing, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rustc-dev-guide.rust-lang.org/tests/crater.html&quot;&gt;crater&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/rust/pull/149852&quot;&gt;rust#149852&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;cargo&#x27;s test suite (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16375&quot;&gt;#16375&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;manual testing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This led to several fixes (
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16300&quot;&gt;#16300&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16335&quot;&gt;#16335&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16348&quot;&gt;#16348&lt;/a&gt;,
).&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/epage/&quot;&gt;epage&lt;/a&gt; also did an audit of the feature for any potential changes that could impact testing.
This led to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slipping in more layout changes (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16351&quot;&gt;#16351&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16345&quot;&gt;#16345&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Finalizing the names of the directories on &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/.E2.9C.94.20directory.20naming.20with.20new.20build.20layout/near/562137402&quot;&gt;Zulip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Double checking any other open questions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next will be working through the test results and opening this up for wider testing by doing a Call for Testing.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;custom-final-artifacts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#custom-final-artifacts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Custom final artifacts&lt;/h3&gt;
&lt;p&gt;While the build-dir layout is an implementation detail,
there are legitimate reasons for relying on it and it would help with future transitions to provide solutions for people who are relying on it today.&lt;/p&gt;
&lt;p&gt;One such use case is accessing final artifacts created by build scripts
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/13663&quot;&gt;#13663&lt;/a&gt;).
In considering this, we need to keep in mind that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;there is the potential for any build script in the dependency tree to create such an artifact&lt;/li&gt;
&lt;li&gt;Cargo tries to avoid collisions in intermediate and final artifacts, see also &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6313&quot;&gt;#6313&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cargo tries to be safe under concurrent access between multiple &lt;code&gt;cargo&lt;/code&gt; invocations and between multiple build scripts within a single &lt;code&gt;cargo&lt;/code&gt; invocation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cargo can&#x27;t just provide build scripts with direct access to the
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/6790&quot;&gt;artifact-dir&lt;/a&gt;.
This would allow any build script to participate but Cargo couldn&#x27;t report collisions and this would not be safe for concurrent access.&lt;/p&gt;
&lt;p&gt;Build scripts could have a special directory to stage final artifacts.
Cargo would then need to walk all of the staging directories,
check for collisions, and then copy them over to the artifact-dir.
This does make predicting and resolving collisions by users more difficult as a user needs to track what every build script in their dependency tree does.
This may also have a performance impact if the build script can directly generate to the staging directory and needs to copy them over but they are unused by the user.&lt;/p&gt;
&lt;p&gt;When discussing expanding the ability for build scripts to communicate with dependents
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/3544&quot;&gt;#3544&lt;/a&gt;),
another idea came up.
We can introduce a new build script directive for specifying an artifact,
both where it comes from and where it should be placed, relative to the artifact-dir.
These artifacts would only be uplifted into the artifact-dir for selected packages, the same rule that applies to existing artifacts.
A build script could read &lt;code&gt;cargo::metadata&lt;/code&gt; output from a dependency&#x27;s build script and generate an artifact build script directive for it.&lt;/p&gt;
&lt;p&gt;So going back to our criteria&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any build script will be able to generate a final artifact though it does require some manual work&lt;/li&gt;
&lt;li&gt;Cargo could check the build script directives and report an error for collisions.  Users will have full visibility into collisions and autonomy for responding to these errors as they own all of the affected build scripts.  The errors would come at the end of the build which is unfortunate.&lt;/li&gt;
&lt;li&gt;Cargo will be doing the uplifting and can ensure the locations it will access are locked&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-11-04.md --&gt;
&lt;p&gt;This can serve as a polyfill for
&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3035&quot;&gt;RFC #3035&lt;/a&gt; (postponed),
providing a workaround for it and allowing for further experimentation.
One way this is lacking as a polyfill is
&lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies&quot;&gt;artifact dependencies&lt;/a&gt; support.
We could name the directive &lt;code&gt;artifact&lt;/code&gt; and automatically create artifact dependency variables when you depend on the package, rather than requiring &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/3544&quot;&gt;#3544&lt;/a&gt;.
The artifact could be named for the destination but if we allow directories as destinations,
we don&#x27;t have a unique name.
Depending on artifacts from a package would also be implicit in the dependency specification unlike regular artifact dependencies.&lt;/p&gt;
&lt;p&gt;Some open questions on this include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what to name it? &lt;code&gt;copy&lt;/code&gt;, &lt;code&gt;artifact&lt;/code&gt;, &lt;code&gt;copy-artifact&lt;/code&gt;, or something else?&lt;/li&gt;
&lt;li&gt;what should the copy semantics be when source or destination is a directory without a trailing &lt;code&gt;/&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;what separator should be used between the source and destination?&lt;/li&gt;
&lt;li&gt;when copying directories, do we check whether directories collide or their content?&lt;/li&gt;
&lt;li&gt;if and how we tie this to the artifacts dependency system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One potential route forward is to defer a connection to artifact dependencies and either make sure the design can handle adding it later or make the design low level and build an artifact solution on top of it later.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;target-dir-locking&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#target-dir-locking&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Target dir locking&lt;/h3&gt;
&lt;p&gt;One thing that slows down builds is being blocked on another build,
particularly when running &lt;code&gt;cargo check&lt;/code&gt; on the command-line while rust-analyzer is also running &lt;code&gt;cargo check&lt;/code&gt;.
This happens because the entire target directory underneath &lt;code&gt;target/&amp;lt;platform&amp;gt;/&amp;lt;profile&amp;gt;&lt;/code&gt; is managed by a single lock to avoid concurrent builds from negatively impacting each other.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;ranger-ross&lt;/a&gt; is working towards a cross-project cache
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/5931&quot;&gt;#5931&lt;/a&gt;)
with &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2026/01/07/this-development-cycle-in-cargo-1.93/#build-dir-layout&quot;&gt;build dir layout changes&lt;/a&gt; being one stepping stone.
They decided to explore a finer-grained locking scheme for the target directory as a user-facing deliverable on top of the build dir layout changes as well as to explore caching schemes for the cross-project cache, assuming we can get reuse.&lt;/p&gt;
&lt;p&gt;A target dir is usually made up of two concepts, a build dir for intermediate artifacts (e.g. rlibs) and an artifacts dir for final artifacts (e.g. binaries).
We&#x27;ve organize the build dir around build units for Cargo to lock them individually.
Before any build unit locking can be meaningful, we need to adjust how we lock the artifacts dir.
As most of the concern is about &lt;code&gt;cargo check&lt;/code&gt; vs &lt;code&gt;cargo check&lt;/code&gt; / &lt;code&gt;cargo clippy&lt;/code&gt; / &lt;code&gt;cargo run&lt;/code&gt; / &lt;code&gt;cargo test&lt;/code&gt;,
&lt;a href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;ranger-ross&lt;/a&gt; took the simple approach and split the build dir and artifacts dir locks,
avoiding grabbing the artifacts dir lock when no artifacts are produced.
This won&#x27;t help against &lt;code&gt;cargo build&lt;/code&gt;, &lt;code&gt;cargo run&lt;/code&gt;, &lt;code&gt;cargo test&lt;/code&gt;, or &lt;code&gt;cargo bench&lt;/code&gt; running in parallel which is likely fine as these are less likely to need to run in parallel.&lt;/p&gt;
&lt;p&gt;As for locking intermediate build unit artifacts individually,
things got complicated.
The straight forward way to start is to grab any needed locks around the operation that needs protection.
This means each build unit will grab an exclusive lock for itself and a shared lock for all dependencies.
This runs into several complications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prevents &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2019/09/26/Rust-1.38.0/#pipelined-compilation&quot;&gt;pipelined compilation&lt;/a&gt; as later build units need to wait for the rlib to be generated when they might have only needed the rmeta.&lt;/li&gt;
&lt;li&gt;performance impact of each build unit grabbing a lock for every dependency&lt;/li&gt;
&lt;li&gt;quickly hitting ulimit&#x27;s, especially with each build unit grabbing a lock for every dependency&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We had hoped to avoid some of this by using a single &lt;code&gt;(read or append) xor exclusive-write&lt;/code&gt; lock for all of the build dir.
The first problem is that build units are mutable and we don&#x27;t know ahead of time if we&#x27;ll be mutating them.
You can see what build inputs can mutate cache entries by &lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/nightly-rustc/cargo/core/compiler/fingerprint/index.html#fingerprints-and-unithashs&quot;&gt;comparing Fingerprints to &lt;code&gt;Metadata::c_metadata&lt;/code&gt;&lt;/a&gt;.
If we made cache entries immutable, we&#x27;d see an explosion of cache entries as one will exist for every &lt;code&gt;cargo check&lt;/code&gt; run done by &lt;code&gt;rust-analyzer&lt;/code&gt; when editing your source.
This would block the locking effort on build-dir GC (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/5026&quot;&gt;#5026&lt;/a&gt;)
and likely need different reclamation times for different types of entries so Cargo preserves the most relevant ones.
This would have the benefit of not rebuilding when switching back and forth between branches.
However, an even bigger problem is present: we need a build to discover the source files to find out if a cache entry exists.
For the cross-project cache, that won&#x27;t be an issue because we expect Cargo will only be storing entries in that cache for immutable packages.&lt;/p&gt;
&lt;p&gt;When exploring the per-build-unit lock design,
&lt;a href&#x3D;&quot;https://github.com/ranger-ross&quot;&gt;ranger-ross&lt;/a&gt; optimized it by caching locks for dependencies.
This led to the idea of having the top-level build operation own the locks that are lazily acquired, ensuring we&#x27;d need at most one lock per build unit.&lt;/p&gt;
&lt;p&gt;This design is being further explored on
&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/Build.20cache.20and.20locking.20design/near/548098785&quot;&gt;Zulip&lt;/a&gt;
and in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16155&quot;&gt;#16155&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;structured-logging&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#structured-logging&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Structured logging&lt;/h3&gt;
&lt;p&gt;This is a &lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-analysis.html&quot;&gt;project goal&lt;/a&gt; to add structured logging to Cargo so users can view &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/timings.html&quot;&gt;timings&lt;/a&gt; and rebuild reasons for past builds,
avoiding the frustration of &quot;why was that slow&quot; or &quot;why did that rebuild&quot; particularly when the build result is not reproducible.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; added structured logging support to cargo
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16150&quot;&gt;#16150&lt;/a&gt;)
fleshed it out (
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16179&quot;&gt;#16179&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16203&quot;&gt;#16203&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16282&quot;&gt;#16282&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16303&quot;&gt;#16303&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16346&quot;&gt;#16346&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16350&quot;&gt;#16350&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16378&quot;&gt;#16378&lt;/a&gt;,
)
and added &lt;code&gt;cargo report timings&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16377&quot;&gt;#16377&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;You can enable this for nightly toolchains by adding to your &lt;code&gt;~/.cargo/config.toml&lt;/code&gt;&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;build&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-table z-toml&quot;&gt;.&lt;/span&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;analysis&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;enabled&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-constant z-language z-toml&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is still a lot to figure out on the path to stabilization, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The data schema, especially if we want to work towards unifying this schema with Cargo&#x27;s json output which would improve Cargo&#x27;s json output (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/8283&quot;&gt;#8283&lt;/a&gt;) which would unblock a new, faster, more flexible architecture for &lt;code&gt;cargo fix&lt;/code&gt; (e.g. &lt;a href&#x3D;&quot;https://github.com/crate-ci/cargo-fixit/issues/68&quot;&gt;cargo-fixit#68&lt;/a&gt;).  See also &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/build.20analysis.20log.20format/with/563521641&quot;&gt;Zulip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The interface for the new &lt;code&gt;cargo report&lt;/code&gt; commands&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;config-include&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#config-include&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Config include&lt;/h3&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/unstable.html#config-include&quot;&gt;&lt;code&gt;-Zconfig-include&lt;/code&gt;&lt;/a&gt; allows for a &lt;code&gt;.cargo/config.toml&lt;/code&gt; file to include others, e.g.&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;frodo.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;samwise.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This has been stuck in unstable limbo since 2019
with &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/7723#issuecomment-1595887492&quot;&gt;various concerns&lt;/a&gt;.
There was an attempt to stabilize it in 2024
with the intent of expanding it in the future.
There was &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/7723#issuecomment-2386278512&quot;&gt;a desire&lt;/a&gt; to ensure we could support those future possibilities before preceding.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; picked up the work on this, starting with merging of arrays of tables across layers
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16103&quot;&gt;#16103&lt;/a&gt;),
having only supported arrays of strings before.
They then added support for &lt;code&gt;include&lt;/code&gt; being specified by an array of tables (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16174&quot;&gt;#16174&lt;/a&gt;).
This will allow for adding fields in the future to customize the include behavior,
like declaring an include optional
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16180&quot;&gt;#16180&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;As for allowing templates and globs in the future,
the original thought was to opt-in via fields on the config table.
However, other parts of Cargo directly support templates or globs.
We deferred the decision on this by erroring if glob or template syntax is present
(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16285&quot;&gt;#16285&lt;/a&gt;)
which will allow us to go down either route in the future.&lt;/p&gt;
&lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-11-25.md --&gt;
&lt;p&gt;Another question that came up during stabilization is what syntax forms are allowed and encouraged.
At this point, the following were supported:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;  &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;  &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;b.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;  &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-begin z-toml&quot;&gt;{&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;path&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-end z-toml&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;  &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-begin z-toml&quot;&gt;{&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;path&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;b.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-end z-toml&quot;&gt;}&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-array z-toml&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-begin z-toml&quot;&gt;[[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-array z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-end z-toml&quot;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;path&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;a.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-begin z-toml&quot;&gt;[[&lt;/span&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-table z-array z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-table z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-table z-array z-end z-toml&quot;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;path&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;b.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In TOML, there is no logical difference between an array of inline-tables and an Array-of-Tables but which syntax is used can affect both the user and the design.
If Array-of-Tables is our encouraged syntax,
then we should likely drop &lt;code&gt;include &#x3D; &quot;&quot;&lt;/code&gt; and &lt;code&gt;include &#x3D; [&quot;&quot;]&lt;/code&gt;
as those are shorthands that require transforming the code to a different structure when new features are needed.
An array of inline-tables has the problem that it is a top-level key which can be confusing in TOML because the root table is order dependent (has to be at the top) unlike any other table.
In this case, that can be a strength because &lt;code&gt;include&lt;/code&gt; is special and changes how the file is processed, so it likely should be at the top to help call attention to it.
We decided to prefer an array of inline-tables in our documentation and in any future &lt;code&gt;.cargo/config.toml&lt;/code&gt; style guide.
&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; updated the docs in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16301&quot;&gt;#16301&lt;/a&gt;.
We decided to drop the &lt;code&gt;include &#x3D; &quot;&quot;&lt;/code&gt; form as too specialized.
&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; did this in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16298&quot;&gt;#16298&lt;/a&gt;.&lt;/p&gt;
&lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-11-18.md --&gt;
&lt;p&gt;One workflow annoyance with &lt;code&gt;.cargo/config.toml&lt;/code&gt; is config files specific to both a project and a user (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14565&quot;&gt;#14565&lt;/a&gt;).
If a project commits their config file,
the only option for the user is to move the repo into a subdirectory that they put their own config file in.
If a project does not commit a config file, a user can create one but it won&#x27;t be ignored by default in git and users frequently commit any file that shows up in &lt;code&gt;git status&lt;/code&gt;.
With &lt;code&gt;-Zconfig-include&lt;/code&gt;, projects could gitignore a &lt;code&gt;.cargo/config.user.toml&lt;/code&gt; and have:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;toml&quot; class&#x3D;&quot;language-toml z-code&quot;&gt;&lt;code class&#x3D;&quot;language-toml&quot; data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;include&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-begin z-toml&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;    &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-begin z-toml&quot;&gt;{&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;path&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-string z-quoted z-double z-basic z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-begin z-toml&quot;&gt;&amp;quot;&lt;/span&gt;config.user.toml&lt;span class&#x3D;&quot;z-punctuation z-definition z-string z-end z-toml&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-punctuation z-separator z-inline-table z-toml&quot;&gt;,&lt;/span&gt; &lt;span class&#x3D;&quot;z-meta z-tag z-key z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-entity z-name z-tag z-toml&quot;&gt;optional&lt;/span&gt;&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-key-value z-toml&quot;&gt;&#x3D;&lt;/span&gt; &lt;span class&#x3D;&quot;z-constant z-language z-toml&quot;&gt;true&lt;/span&gt; &lt;span class&#x3D;&quot;z-punctuation z-definition z-inline-table z-end z-toml&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class&#x3D;&quot;z-source z-toml&quot;&gt;&lt;span class&#x3D;&quot;z-punctuation z-definition z-array z-end z-toml&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, this requires projects to update their MSRV and choose to adopt this convention.
Improving this now is worth considering for any impact on the design of config-include that we can&#x27;t change once stabilized.
For example, &lt;code&gt;.cargo/&lt;/code&gt; has very little use today but that can change after &lt;code&gt;-Zconfig-include&lt;/code&gt; is stabilized.
What if we reserved a name like &lt;code&gt;.cargo/config.user.toml&lt;/code&gt; before stabilizing so we could auto-load that file and have &lt;code&gt;cargo init&lt;/code&gt; gitignore it?
In addition to designing enough to know what to reserve,
this overlooks the existence of &lt;code&gt;--config PATH&lt;/code&gt; for which users could have their own files in &lt;code&gt;.cargo/&lt;/code&gt;, increasing the chance someone would be negatively impacted by reserving the name.
Blocking stabilizing &lt;code&gt;-Zconfig-include&lt;/code&gt; on researching the answers to these questions did not seem worth it.
There are still other options, for example &lt;code&gt;.cargo/config/&lt;/code&gt; is reserved by happenstance of Cargo always assuming &lt;code&gt;.cargo/config&lt;/code&gt; is a TOML file and erroring if it is a directory.&lt;/p&gt;
&lt;p&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; stabilized this feature in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16284&quot;&gt;#16284&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;pubtime&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#pubtime&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;pubtime&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Recently, there has been an increased interest in supporting gradual rollouts of new package versions by giving users control over how old a package&#x27;s version must be before being allowed to upgrade to it.&lt;/p&gt;
&lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-12-09.md --&gt;
&lt;p&gt;The first step for Cargo to support this is to know the publish time of registry packages.
Cargo&#x27;s &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/resolver.html&quot;&gt;dependency resolution&lt;/a&gt; operates off a Summary from the Registry Index.
We need to extend that format with the publish time (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15491&quot;&gt;#15491&lt;/a&gt;)
and have crates.io do a backfill while gracefully handling registries that don&#x27;t provide this information.
After discussion with the crates.io team,
&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; implemented support for this within Cargo as well as &quot;time traveling dependency resolution&quot; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/5221&quot;&gt;#5221&lt;/a&gt;) as an end-user way of exploring this functionality in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16265&quot;&gt;#16265&lt;/a&gt;
&lt;a href&#x3D;&quot;https://github.com/Turbo87&quot;&gt;Turbo87&lt;/a&gt; implemented support in the staging instance of crates.io in &lt;a href&#x3D;&quot;https://github.com/rust-lang/crates.io/pull/12315&quot;&gt;crates.io#12315&lt;/a&gt;.
In preparation for stabilization of this Summary field,
the Cargo team discussed the design and
&lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; applied the feedback in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16369&quot;&gt;#16369&lt;/a&gt;.
They then posted the stabilization request in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16372&quot;&gt;#16372&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While &quot;time traveling dependency resolution&quot; via &lt;code&gt;cargo generate-lockfile --publish-time 2025-12-01T01:01:01Z&lt;/code&gt; is straightforward to implement,
it isn&#x27;t as easy to stabilize.
This only works for registry packages where the registry provides the needed information.
Even then it is incomplete as we only track the latest &lt;code&gt;yanked&lt;/code&gt; state, rather than the history of yanking and unyanking.
We&#x27;d need to make sure we don&#x27;t over-promise to the user what this can accomplish.
We also need to clearly communicate what is happening to the user when the feature is active.
These unresolved issues are being tracked in &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/16271&quot;&gt;#16271&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/15973&quot;&gt;#15973&lt;/a&gt;,
there is on-going exploration of requirements, prior art, and designs for &lt;code&gt;minimumReleaseAge&lt;/code&gt;.&lt;/p&gt;
&lt;!-- ## Design discussions --&gt;
&lt;h2 id&#x3D;&quot;misc&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#misc&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/osiewicz&quot;&gt;osiewicz&lt;/a&gt; added &lt;code&gt;--workspace&lt;/code&gt; to &lt;code&gt;cargo clean&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16263&quot;&gt;#16263&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/osiewicz&quot;&gt;osiewicz&lt;/a&gt; sped up &lt;code&gt;cargo clean -p&lt;/code&gt; and &lt;code&gt;cargo clean --workspace&lt;/code&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16264&quot;&gt;#16264&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; added &lt;code&gt;net.git-fetch-with-cli&lt;/code&gt; support to &lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/unstable.html#git&quot;&gt;git shallow clones&lt;/a&gt; (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16156&quot;&gt;#16156&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/Muscraft&quot;&gt;Muscraft&lt;/a&gt; added spell checking to cargo&#x27;s source and documentation(&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16122&quot;&gt;#16122&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/01/this-development-cycle-in-cargo-1.90/#all-hands-cargo-explain&quot;&gt;&lt;em&gt;(Update from 1.90)&lt;/em&gt;&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/orhun&quot;&gt;orhun&lt;/a&gt; is exploring an interactive pager-like TUI for &lt;code&gt;cargo tree&lt;/code&gt; at &lt;a href&#x3D;&quot;https://github.com/orhun/cargo-tree-tui/&quot;&gt;cargo-tree-tui&lt;/a&gt; as a testing ground for extending other commands with them, see also &lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/TUI.20for.20cargo/near/556994881&quot;&gt;Zulip&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/24/this-development-cycle-in-cargo-1.92/#cargo-script&quot;&gt;&lt;em&gt;(Update from 1.92)&lt;/em&gt;&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/epage&quot;&gt;epage&lt;/a&gt; further polished Cargo Script (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16334&quot;&gt;#16334&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16248&quot;&gt;#16248&lt;/a&gt;, &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16169&quot;&gt;#16169&lt;/a&gt;) &lt;!-- https://github.com/rust-lang/cargo-team/blob/main/meetings/sync-meeting/2025-11-04.md --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/weihanglo&quot;&gt;weihanglo&lt;/a&gt; posted &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/16309&quot;&gt;#16309&lt;/a&gt; for an unstable feature for speeding up rustdoc builds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;focus-areas-without-progress&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#focus-areas-without-progress&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Focus areas without progress&lt;/h2&gt;
&lt;p&gt;These are areas of interest for Cargo team members with no reportable progress for this development-cycle.&lt;/p&gt;
&lt;p&gt;Project goals in need of owners&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/pub-priv.html&quot;&gt;Stabilize public/private dependencies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
- [Prototype Cargo build analysis](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-analysis.html)
- [Stabilize cargo-script](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-script.html)
- [Rework Cargo Build Dir Layout](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-build-dir-layout.html)
- [Prototype a new set of Cargo &quot;plumbing&quot; commands](https://rust-lang.github.io/rust-project-goals/2025h2/cargo-plumbing.html)
- [Finish the libtest json output experiment](https://rust-lang.github.io/rust-project-goals/2025h2/libtest-json.html)
--&gt;
&lt;p&gt;Ready-to-develop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#open-namespaces&quot;&gt;Open namespaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14520&quot;&gt;Auto-generate completions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;See &lt;a href&#x3D;&quot;https://github.com/clap-rs/clap/issues/3166&quot;&gt;clap-rs/clap#3166&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Needs design and/or experimentation:
--&gt;
&lt;p&gt;Planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/3126&quot;&gt;Disabling of default features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3416&quot;&gt;RFC #3416: &lt;code&gt;features&lt;/code&gt; metadata&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3487&quot;&gt;RFC #3487: visibility&lt;/a&gt; (visibility)&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3486&quot;&gt;RFC #3486: deprecation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://doc.rust-lang.org/cargo/reference/unstable.html#list-of-unstable-features&quot;&gt;Unstable features&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://internals.rust-lang.org/t/pre-rfc-mutually-excusive-global-features/19618&quot;&gt;Pre-RFC: Global, mutually exclusive features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/rfcs/pull/3553&quot;&gt;RFC #3553: Cargo SBOM Fragment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/1734&quot;&gt;OS-native config/cache directories (ie XDG support)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;how-you-can-help&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-you-can-help&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How you can help&lt;/h2&gt;
&lt;p&gt;If you have ideas for improving cargo,
we recommend first checking &lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/&quot;&gt;our backlog&lt;/a&gt;
and then exploring the idea on &lt;a href&#x3D;&quot;https://internals.rust-lang.org/c/tools-and-infrastructure/cargo/15&quot;&gt;Internals&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If there is a particular issue that you are wanting resolved that wasn&#x27;t discussed here,
some steps you can take to help move it along include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summarizing the existing conversation (example:
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/2644#issuecomment-1489371226&quot;&gt;Better support for docker layer caching&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/8728#issuecomment-1610265047&quot;&gt;Change in &lt;code&gt;Cargo.lock&lt;/code&gt; policy&lt;/a&gt;,
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/9930#issuecomment-1489089277&quot;&gt;MSRV-aware resolver&lt;/a&gt;
)&lt;/li&gt;
&lt;li&gt;Document prior art from other ecosystems so we can build on the work others have done and make something familiar to users, where it makes sense&lt;/li&gt;
&lt;li&gt;Document related problems and solutions within Cargo so we see if we are solving to the right layer of abstraction&lt;/li&gt;
&lt;li&gt;Building on those posts, propose a solution that takes into account the above information and cargo&#x27;s compatibility requirements (&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/9930#issuecomment-1489269471&quot;&gt;example&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are available to help mentor people for
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/issues.html#issue-status-labels&quot;&gt;S-accepted issues&lt;/a&gt;
on
&lt;a href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo&quot;&gt;zulip&lt;/a&gt;
and you can talk to us in real-time during
&lt;a href&#x3D;&quot;https://github.com/rust-lang/cargo/wiki/Office-Hours&quot;&gt;Contributor Office Hours&lt;/a&gt;.
If you are looking to help with one of the bigger projects mentioned here and are just starting out,
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/process/index.html#working-on-issues&quot;&gt;fixing some issues&lt;/a&gt;
will help familiarize yourself with the process and expectations,
making things go more smoothly.
If you&#x27;d like to tackle something
&lt;a href&#x3D;&quot;https://doc.crates.io/contrib/issues.html#issue-status-labels&quot;&gt;without a mentor&lt;/a&gt;,
the expectations will be higher on what you&#x27;ll need to do on your own.&lt;/p&gt;
</content>

        <author>
            <name>Ed Page</name>
        </author>
    </entry>
    <entry>
        <title>Rustup 1.29.0 beta: Call for Testing!</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2025/12/20/rustup-1.29.0-beta-cft/" type="text/html" title="Rustup 1.29.0 beta: Call for Testing!" />
        <published>2025-12-20T00:00:00+00:00</published>
        <updated>2025-12-20T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2025/12/20/rustup-1.29.0-beta-cft/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2025/12/20/rustup-1.29.0-beta-cft/">&lt;p&gt;We are excited to announce that rustup 1.29.0 beta is now available for testing
and we are currently looking for testers.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-s-new&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-s-new&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What&#x27;s new&lt;/h2&gt;
&lt;p&gt;Following the footsteps of many package managers in the pursuit of better
toolchain installation performance, the headline of this release is that rustup
has been enabled to &lt;strong&gt;download components concurrently&lt;/strong&gt; and &lt;strong&gt;unpack during
downloads&lt;/strong&gt; in operations such as &lt;code&gt;rustup update&lt;/code&gt; or &lt;code&gt;rustup toolchain&lt;/code&gt; and to
concurrently check for updates in &lt;code&gt;rustup check&lt;/code&gt;, thanks to a &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#make-rustup-concurrent&quot;&gt;GSoC 2025
project&lt;/a&gt;. This is by no means a trivial change so a long
tail of issues might occur, please report them if you have found any!
&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4388&quot;&gt;pr#4388&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4426&quot;&gt;pr#4426&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4436&quot;&gt;pr#4436&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4455&quot;&gt;pr#4455&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4471&quot;&gt;pr#4471&lt;/a&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4605&quot;&gt;pr#4605&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As usual, we would be happy to &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/issues&quot;&gt;receive&lt;/a&gt; regression/breakage reports of
any kind, especially regarding the installation and/or usage on the following
environments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New host platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sparcv9-sun-solaris&lt;/code&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4380&quot;&gt;pr#4380&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x86_64-pc-solaris&lt;/code&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4380&quot;&gt;pr#4380&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New shells:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tcsh&lt;/code&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4459&quot;&gt;pr#4459&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xonsh&lt;/code&gt; &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4626&quot;&gt;pr#4626&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Environments where you would like to bring your own &lt;code&gt;rust-analyzer&lt;/code&gt; binary
(such as r-a developers and certain Neovim/Helix users): rustup will now
consider the &lt;code&gt;rust-analyzer&lt;/code&gt; binary from &lt;code&gt;PATH&lt;/code&gt; when the rustup-managed one is
not found. &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4324&quot;&gt;pr#4324&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Environments where you would like to override an environment variable back to
the default: rustup now treats empty values as unset. &lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/pull/4422&quot;&gt;pr#4422&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;how-to-test&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#how-to-test&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
How to test&lt;/h2&gt;
&lt;p&gt;To begin testing this new version, all you need to do is simply switching to
the dev environment by setting the following environment variable when updating
or installing rustup:&lt;/p&gt;
&lt;pre data-lang&#x3D;&quot;sh&quot; class&#x3D;&quot;language-sh z-code&quot;&gt;&lt;code class&#x3D;&quot;language-sh&quot; data-lang&#x3D;&quot;sh&quot;&gt;&lt;span class&#x3D;&quot;z-source z-shell z-bash&quot;&gt;&lt;span class&#x3D;&quot;z-variable z-other z-readwrite z-assignment z-shell&quot;&gt;RUSTUP_UPDATE_ROOT&lt;/span&gt;&lt;span class&#x3D;&quot;z-keyword z-operator z-assignment z-shell&quot;&gt;&#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-string z-unquoted z-shell&quot;&gt;https://dev-static.rust-lang.org/rustup&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To switch out of the dev environment, just remove that environment variable and
do a &lt;code&gt;rustup self update&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finally, please don&#x27;t forget to check out the corresponding section in our
&lt;a href&#x3D;&quot;https://github.com/rust-lang/rustup/blob/master/CHANGELOG.md#1290---&quot;&gt;CHANGELOG.md&lt;/a&gt;
for the complete list of changes included in this version.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;acknowledgements&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#acknowledgements&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Acknowledgements&lt;/h2&gt;
&lt;p&gt;A big thank you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/djc&quot;&gt;@djc&lt;/a&gt; for continuously polishing the codebase to get rid of a whole lot of
historical burden and carefully shaping the final form of preliminary
concurrency support we have today;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/chrisdenton&quot;&gt;@ChrisDenton&lt;/a&gt; for the careful handling of IO and Windows-related complexities;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/FranciscoTGouveia&quot;&gt;@FranciscoTGouveia&lt;/a&gt; for joining me in the GSoC event to investigate the
possibilities and lay the foundation of concurrency in rustup;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://github.com/kobzol&quot;&gt;@Kobzol&lt;/a&gt; for enabling and organizing rustup&#x27;s participation in GSoC 2025 and
improving our CLI&#x27;s cold start performance;&lt;/li&gt;
&lt;li&gt;... and many other contributors who have made this new release possible!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many thanks for everyone&#x27;s continued support! Wishing you a magical holiday
season surrounded by love, peace, and laughter 🍀&lt;/p&gt;
</content>

        <author>
            <name>rami3l</name>
        </author>
    </entry>
</feed>
