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

    
    <entry>
        <title>Infrastructure Team 2026 Q3 Recap and Q4 Plan</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/10/12/infrastructure-team-q3-recap-and-q4-plan/" type="text/html" title="Infrastructure Team 2026 Q3 Recap and Q4 Plan" />
        <published>2026-10-12T00:00:00+00:00</published>
        <updated>2026-10-12T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/10/12/infrastructure-team-q3-recap-and-q4-plan/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/10/12/infrastructure-team-q3-recap-and-q4-plan/">&lt;p&gt;Here&#x27;s what the Infrastructure Team delivered in Q3 2026 and what we&#x27;re focusing
on in Q4.&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/2026/07/15/infrastructure-team-q2-recap-and-q3-plan/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q3-2026-accomplishments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q3-2026-accomplishments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q3 2026 Accomplishments&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;audit-logs-in-datadog-cloud-siem&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#audit-logs-in-datadog-cloud-siem&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Audit logs in Datadog Cloud SIEM&lt;/h3&gt;
&lt;p&gt;We enabled audit logs for the following services and sent them to Datadog, so that the
Rust Foundation security team can analyze them using
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.datadoghq.com/product/cloud-siem/&quot;&gt;Cloud SIEM&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rust GitHub Enterprise and the Rust Foundation GitHub Enterprise,
via &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise#setting-up-streaming-to-datadog&quot;&gt;audit log streaming&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;AWS, via &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://aws.amazon.com/cloudtrail/&quot;&gt;CloudTrail&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Heroku, Wiz, Fastly, and Datadog itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/290&quot;&gt;GitHub issue&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;web-application-firewall-and-ddos-protection-for-crates-io-and-docs-rs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#web-application-firewall-and-ddos-protection-for-crates-io-and-docs-rs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Web Application Firewall and DDoS protection for crates.io and docs.rs&lt;/h3&gt;
&lt;p&gt;Together with the crates.io and docs.rs teams, we set up the Fastly &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.fastly.com/products/fastly-next-gen-waf&quot;&gt;Next-Gen WAF&lt;/a&gt;
(Web Application Firewall) for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.rs&quot;&gt;docs.rs&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io&quot;&gt;crates.io&lt;/a&gt;
(see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/issues/1007&quot;&gt;GitHub issue&lt;/a&gt;).
The WAF blocks potential security threats and enforces rate limits.&lt;/p&gt;
&lt;p&gt;We also enabled Fastly &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.fastly.com/products/ddos-protection&quot;&gt;DDoS protection&lt;/a&gt; for both services.&lt;/p&gt;
&lt;p&gt;Together, these helped us mitigate DDoS attacks against crates.io this quarter,
and reduce the load on the docs.rs server.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;cdn-improvements-for-crates-io-and-docs-rs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cdn-improvements-for-crates-io-and-docs-rs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
CDN improvements for crates.io and docs.rs&lt;/h3&gt;
&lt;p&gt;We made several improvements to the Fastly configuration of crates.io and docs.rs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster crate downloads processing:&lt;/strong&gt; We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1097&quot;&gt;removed a regex&lt;/a&gt;
from the Fastly code that handles crate downloads, and did some other optimizations
(&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1095&quot;&gt;#1095&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1096&quot;&gt;#1096&lt;/a&gt;).
Requests now take 10% less compute time in the Fastly CDN nodes. Most users won&#x27;t notice the difference,
since networking dominates download latency, but it makes our CDN setup more efficient and sustainable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Content-Length&lt;/code&gt; in &lt;code&gt;HEAD&lt;/code&gt; responses:&lt;/strong&gt; Fastly &lt;code&gt;HEAD&lt;/code&gt; responses &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1130&quot;&gt;now include&lt;/a&gt;
the &lt;code&gt;Content-Length&lt;/code&gt; header for non-compressible artifacts such as &lt;code&gt;.crate&lt;/code&gt; files.
This fixes some issues encountered when using &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://buck2.build/&quot;&gt;Buck2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;crates.io static assets served from the edge:&lt;/strong&gt; &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;HEAD&lt;/code&gt; requests for READMEs and other static
assets of crates.io &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1235&quot;&gt;are now resolved&lt;/a&gt;
by the CDN instead of the crates.io web app hosted on Heroku.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;docs.rs CDN logs in Datadog:&lt;/strong&gt; The docs.rs Fastly service now sends its logs to Datadog
(&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1196&quot;&gt;#1196&lt;/a&gt;,
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1197&quot;&gt;#1197&lt;/a&gt;,
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1226&quot;&gt;#1226&lt;/a&gt;), giving us better observability of the service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CloudFront traffic:&lt;/strong&gt; In the past months, we sent 100% of crates and releases download traffic over Fastly
to spend our AWS credits on other resources. We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1219&quot;&gt;restored&lt;/a&gt;
a small share of traffic (approximately 0.4%) over CloudFront to make sure it keeps working as intended,
in case we need to fall back to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;new-message-queue-between-crates-io-and-docs-rs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-message-queue-between-crates-io-and-docs-rs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New message queue between crates.io and docs.rs&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/issues/1075&quot;&gt;provisioned&lt;/a&gt; an
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://aws.amazon.com/sqs/&quot;&gt;AWS SQS&lt;/a&gt; FIFO queue that crates.io can use to notify docs.rs about new releases.&lt;/p&gt;
&lt;p&gt;The queue is meant to replace the crates.io git index for this use case.
It&#x27;s currently unused for lack of engineering time from the crates.io team.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;renovate-for-the-rust-repository&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#renovate-for-the-rust-repository&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Renovate for the &lt;code&gt;rust&lt;/code&gt; repository&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/293&quot;&gt;configured&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.renovatebot.com/&quot;&gt;Renovate&lt;/a&gt;
for the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;&lt;code&gt;rust-lang/rust&lt;/code&gt;&lt;/a&gt; repository
(see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/blob/main/.github/renovate.json5&quot;&gt;configuration file&lt;/a&gt;).
Renovate automatically opens PRs to fix security findings and update Cargo lockfiles and GitHub Actions.&lt;/p&gt;
&lt;p&gt;From the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/134129&quot;&gt;dependency dashboard&lt;/a&gt;, maintainers can
ask Renovate to update individual dependencies when they want to.
You can see all the PRs opened by Renovate &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pulls?q&#x3D;is%3Apr+author%3Arenovate-bot&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;github-security-alerts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-security-alerts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub security alerts&lt;/h3&gt;
&lt;p&gt;We enabled &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts&quot;&gt;Dependabot alerts&lt;/a&gt;
in the &lt;code&gt;rust-lang&lt;/code&gt; GitHub organization. This means that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maintainers receive alerts for vulnerabilities affecting their repositories.&lt;/li&gt;
&lt;li&gt;Maintainers can see these vulnerabilities at &lt;code&gt;https://github.com/rust-lang/&amp;lt;repo&amp;gt;/security/dependabot&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If configured, Renovate can open PRs to fix these vulnerabilities.
See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.renovatebot.com/configuration-options/#vulnerabilityalerts&quot;&gt;Renovate docs&lt;/a&gt; to learn more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that this setting doesn&#x27;t enable automatic Dependabot PRs. That&#x27;s a separate setting called
&quot;Dependabot security updates&quot;, which we don&#x27;t plan to enable because we prefer using Renovate.&lt;/p&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;We keep moving manually configured settings into Infrastructure as Code (IaC) in the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt; repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Pages:&lt;/strong&gt; Rust Project members can now set up GitHub Pages for their repositories
by opening a PR. See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/main/docs/toml-schema.md#github-pages&quot;&gt;docs&lt;/a&gt;
and an &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/9a1b2b6b0aa87d0ad1a7e712de5dea1cd4b3ef10/repos/rust-lang/rust-forge.toml#L7&quot;&gt;example&lt;/a&gt;.
Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cuba0001&quot;&gt;cuba0001&lt;/a&gt; for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/issues/2518&quot;&gt;working on this&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Properties:&lt;/strong&gt; GitHub &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization&quot;&gt;Custom Properties&lt;/a&gt;
are &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2512&quot;&gt;now configurable&lt;/a&gt; in the &lt;code&gt;team&lt;/code&gt; repo.
This allows repositories to opt in to automations developed by the Infrastructure Team.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;hardware-security-keys&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hardware-security-keys&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hardware security keys&lt;/h3&gt;
&lt;p&gt;As a follow-up to the hardware security keys work we did in Q2, we &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2622&quot;&gt;added a convention&lt;/a&gt;
in the &lt;code&gt;team&lt;/code&gt; repository for Project members who want to share the PIV attestation certificates
extracted from their YubiKeys. We can validate these certificates against our inventory of hardware keys
through their serial numbers.&lt;/p&gt;
&lt;p&gt;More details in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/hardware-security-keys.html&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;github-actions-audits&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-actions-audits&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub Actions audits&lt;/h3&gt;
&lt;p&gt;We deployed the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crabwatch&quot;&gt;crabwatch&lt;/a&gt; workflow to audit GitHub Actions
workflows in the &lt;code&gt;rust-lang&lt;/code&gt; GitHub organization.
We enabled 23 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://zizmor.sh/&quot;&gt;Zizmor&lt;/a&gt; audits by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crabwatch/blob/0301b278b2e23d9513d4d104eefbf62ec8f2cf3d/zizmor-policy.yml#L7&quot;&gt;default&lt;/a&gt;,
and we want to enable more in the future!
In the meantime, project members can &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crabwatch/blob/0301b278b2e23d9513d4d104eefbf62ec8f2cf3d/zizmor-policy.yml#L104&quot;&gt;override&lt;/a&gt;
what audits run in their repositories.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sandijigs&quot;&gt;Sandra&lt;/a&gt;, the Outreachy intern who helped us work on this!
You can read about her internship experience in her &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://sandraidjighere.wordpress.com/2026/07/10/building-crabwatch-a-month-into-my-outreachy-internship/&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improving-user-experience-of-reviewers&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improving-user-experience-of-reviewers&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improving user experience of reviewers&lt;/h3&gt;
&lt;p&gt;Our merge queue bot (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/bors&quot;&gt;bors&lt;/a&gt;) is now able to gate approvals on pull request CI success in the &lt;code&gt;rust-lang/rust&lt;/code&gt; repository.
This makes it easier for reviewers to approve pull requests without having to babysit them until PR CI succeeds.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;trusted-contributors&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#trusted-contributors&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Trusted contributors&lt;/h3&gt;
&lt;p&gt;The Rust Project &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/leadership-council/issues/325&quot;&gt;created&lt;/a&gt; a
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/main/teams/trusted-contributors.toml&quot;&gt;&lt;code&gt;trusted-contributors&lt;/code&gt;&lt;/a&gt; marker team for trusted contributors who are not members of rust-lang teams but regularly contribute to &lt;code&gt;rust-lang/rust&lt;/code&gt;.
This team has &lt;code&gt;try&lt;/code&gt; and &lt;code&gt;perf&lt;/code&gt; permissions, so that these contributors can start try builds and performance runs independently, without
repeatedly asking a Project member to delegate permissions.&lt;/p&gt;
&lt;p&gt;Learn more about membership in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/trusted-contributors.html&quot;&gt;Forge docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;more-powerful-dev-desktops-and-rust-playground&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#more-powerful-dev-desktops-and-rust-playground&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
More powerful dev desktops and Rust Playground&lt;/h3&gt;
&lt;p&gt;We upgraded the EC2 instances of the dev desktops and the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://play.rust-lang.org/&quot;&gt;Rust Playground&lt;/a&gt;
to make these services faster for Rust contributors and the Rust community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playground: from &lt;code&gt;c5a.large&lt;/code&gt; to &lt;code&gt;c7a.xlarge&lt;/code&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1220&quot;&gt;PR&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Dev desktops (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1218&quot;&gt;PR&lt;/a&gt;):
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dev-desktop-eu-1&lt;/code&gt;: from &lt;code&gt;c6g.8xlarge&lt;/code&gt; to &lt;code&gt;c9g.8xlarge&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dev-desktop-us-1&lt;/code&gt;: from &lt;code&gt;c7g.12xlarge&lt;/code&gt; to &lt;code&gt;c9g.12xlarge&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also increased the disk quota to 200GB per user on all four dev desktops
(&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1182&quot;&gt;#1182&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/pull/1187&quot;&gt;#1187&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Learn more about dev desktops in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Forge docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;arm-machine-for-rustc-perf&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#arm-machine-for-rustc-perf&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
ARM machine for rustc-perf&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/issues/1198&quot;&gt;provisioned&lt;/a&gt; an EC2 &lt;code&gt;m9g.metal-48xl&lt;/code&gt; instance
to run &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf&quot;&gt;rustc-perf&lt;/a&gt; on ARM.
This allows the compiler team to measure optimizations done for the ARM architecture.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;new-ci-runners&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-ci-runners&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New CI runners&lt;/h3&gt;
&lt;p&gt;In partnership with Canonical, we enabled new
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/external-ci-runners.html&quot;&gt;External GitHub Actions runners&lt;/a&gt;
for the Rust Project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;s390x-unknown-linux-gnu&lt;/code&gt;: currently being evaluated in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins&quot;&gt;&lt;code&gt;compiler-builtins&lt;/code&gt;&lt;/a&gt; repository.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;armv7-unknown-linux-gnueabihf&lt;/code&gt;: used in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins&quot;&gt;&lt;code&gt;compiler-builtins&lt;/code&gt;&lt;/a&gt; repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also enabled three large ARM GitHub Actions runners
(8 vCPU, 32 GB RAM) for the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rustls&quot;&gt;rustls&lt;/a&gt; organization, covering Ubuntu 24.04,
Ubuntu 26.04, and Windows 11. This additional CI capacity is sponsored by ARM.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;riscv64gc-unknown-linux-musl-promoted-to-tier-2-with-host-tools&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#riscv64gc-unknown-linux-musl-promoted-to-tier-2-with-host-tools&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;riscv64gc-unknown-linux-musl&lt;/code&gt; promoted to tier 2 with host tools&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/158766&quot;&gt;promoted&lt;/a&gt; the &lt;code&gt;riscv64gc-unknown-linux-musl&lt;/code&gt; target
to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-2-with-host-tools&quot;&gt;tier 2 with host tools&lt;/a&gt;.
RISC-V users targeting musl no longer need to compile Rust tools like &lt;code&gt;rustc&lt;/code&gt; and &lt;code&gt;cargo&lt;/code&gt; themselves.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;on-call-rotation-moved-to-datadog&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#on-call-rotation-moved-to-datadog&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
On-call rotation moved to Datadog&lt;/h3&gt;
&lt;p&gt;Since the Rust Foundation &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/media/rust-foundation-joins-datadogs-open-source-program/&quot;&gt;joined Datadog&#x27;s Open Source Program&lt;/a&gt;,
we migrated the Rust Foundation on-call rotation from PagerDuty to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.datadoghq.com/incident_response/on-call/&quot;&gt;Datadog On-Call&lt;/a&gt;.
This allows us to save money and to remove one service from our dependencies.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;team-leader-rotation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#team-leader-rotation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Team leader rotation&lt;/h3&gt;
&lt;p&gt;We established a new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/blob/395cd345bcd37ab02829a1a66d05be2159a25df0/about/team-leads.md&quot;&gt;policy&lt;/a&gt;
for the Infrastructure Team leader.&lt;/p&gt;
&lt;p&gt;As a result, we &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/pull/301&quot;&gt;rotated&lt;/a&gt; one team leader:
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcoieni&quot;&gt;Marco&lt;/a&gt; took the place of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jdno&quot;&gt;JD&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;main-branch&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#main-branch&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Main branch&lt;/h3&gt;
&lt;p&gt;We renamed the default branch of 25 repositories to &lt;code&gt;main&lt;/code&gt;: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2517&quot;&gt;lang-team&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2554&quot;&gt;rustc-hash&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2565&quot;&gt;rustc-perf&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608681816&quot;&gt;rust-artwork&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;.github&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;compiler-team-prioritization&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;project-ffi-unwind&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;project-safe-transmute&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;wg-allocators&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Renaming.20default.20branches.20from.20master.20to.20main/near/608706242&quot;&gt;wg-cargo-std-aware&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2593&quot;&gt;futures-rs&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2593&quot;&gt;pin-utils&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2451&quot;&gt;thanks&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2697&quot;&gt;rust-forge&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2696&quot;&gt;triagebot&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2720&quot;&gt;mdBook&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2759&quot;&gt;portable-simd&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2758&quot;&gt;rustup-components-history&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2768&quot;&gt;std-dev-guide&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2807&quot;&gt;polonius&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2803&quot;&gt;cargo-bisect-rustc&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-mode/pull/594&quot;&gt;rust-mode&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust.vim/pull/535#issuecomment-5954813612&quot;&gt;rust.vim&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/types-team/pull/135&quot;&gt;types-team&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2809&quot;&gt;rfcs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Among public repositories in the &lt;code&gt;rust-lang&lt;/code&gt; organization that are neither archived nor forks,
113 use &lt;code&gt;main&lt;/code&gt; and 56 still use &lt;code&gt;master&lt;/code&gt;.&lt;/p&gt;
&lt;h3 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;/h3&gt;
&lt;p&gt;We converted 7 crates to use
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/docs/trusted-publishing&quot;&gt;trusted publishing&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2555&quot;&gt;rustc-hash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2595&quot;&gt;jobserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2619&quot;&gt;libc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2619&quot;&gt;ctest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2686&quot;&gt;docs_rs_crates_io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2686&quot;&gt;font-awesome-as-a-crate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2803&quot;&gt;cargo-bisect-rustc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;triagebot-assign-priority-command&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#triagebot-assign-priority-command&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Triagebot Assign-priority command&lt;/h3&gt;
&lt;p&gt;We improved and added a shortcut to the &lt;code&gt;assign-priority&lt;/code&gt; command (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/commit/e747558e&quot;&gt;e747558e&lt;/a&gt;), see docs on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/compiler/prioritization.html#assigning-priority-to-an-issue&quot;&gt;forge&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q4-2026-plans&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q4-2026-plans&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q4 2026 Plans&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;finish-q3-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-q3-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Finish Q3 goals&lt;/h3&gt;
&lt;p&gt;In Q3, we didn&#x27;t manage to finish all our goals, so we will continue working on them in Q4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve access controls for Rust infrastructure with SAML SSO.&lt;/li&gt;
&lt;li&gt;Move mailing lists from Mailgun to Google Groups to reduce spam.&lt;/li&gt;
&lt;li&gt;Consolidate logs on Datadog.&lt;/li&gt;
&lt;li&gt;Stricter networking access rules for crater agents.&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/2026/07/15/infrastructure-team-q2-recap-and-q3-plan/#q3-2026-plans&quot;&gt;Q3 2026 plan&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;secure-deployments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#secure-deployments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Secure deployments&lt;/h3&gt;
&lt;p&gt;Today, we deploy infrastructure from our personal laptops. Instead, we want to deploy from a secure
environment with strong access controls, where access is limited to the people who maintain the
deployment processes. Deploying from a centralized environment also makes it easier to automate
deployments and to monitor for unauthorized access or suspicious activity.&lt;/p&gt;
&lt;p&gt;As a first step, we want to simplify our Infrastructure as Code setup, which currently uses both
Terraform and Terragrunt. We want to investigate whether it is still worth using both tools
(see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/issues/962&quot;&gt;GitHub issue&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;After simplifying the setup, we will decide how to automate deployments and start automating them.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;decommission-the-monitoring-instance&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#decommission-the-monitoring-instance&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Decommission the monitoring instance&lt;/h3&gt;
&lt;p&gt;As part of our move to Datadog, we want to decommission our self-hosted monitoring
instance, which runs Prometheus, Alertmanager and Grafana.&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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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>Infrastructure Team 2026 Q2 Recap and Q3 Plan</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/07/15/infrastructure-team-q2-recap-and-q3-plan/" type="text/html" title="Infrastructure Team 2026 Q2 Recap and Q3 Plan" />
        <published>2026-07-15T00:00:00+00:00</published>
        <updated>2026-07-15T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/07/15/infrastructure-team-q2-recap-and-q3-plan/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/07/15/infrastructure-team-q2-recap-and-q3-plan/">&lt;p&gt;Here&#x27;s what the Infrastructure Team delivered in Q2 2026 and what we&#x27;re focusing
on in Q3.&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/2026/04/14/infrastructure-team-q1-recap-and-q2-plan/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q2-2026-accomplishments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q2-2026-accomplishments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q2 2026 Accomplishments&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;github-rulesets-are-now-the-default-protections&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-rulesets-are-now-the-default-protections&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub Rulesets are now the default protections&lt;/h3&gt;
&lt;p&gt;We migrated the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;&lt;code&gt;rust-lang/rust&lt;/code&gt;&lt;/a&gt; repository to
&lt;a rel&#x3D;&quot;external&quot; 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;
and finished moving off the legacy GitHub branch protections. Rulesets are
now the default way to configure protections for &lt;code&gt;rust-lang&lt;/code&gt; repositories through
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;github-apps-are-now-enabled-through-team&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-apps-are-now-enabled-through-team&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub apps are now enabled through team&lt;/h3&gt;
&lt;p&gt;We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2255&quot;&gt;re-enabled&lt;/a&gt;
the ability to install GitHub apps in &lt;code&gt;rust-lang&lt;/code&gt; repositories through &lt;code&gt;team&lt;/code&gt;.
This improves the developer experience
for contributors and reduces the operational overload for Infrastructure Team members.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;shared-renovate-presets&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#shared-renovate-presets&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Shared Renovate Presets&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/renovatebot/renovate&quot;&gt;Renovate&lt;/a&gt; is the tool the Infrastructure Team
recommends to the Project for keeping dependencies and GitHub Actions up to date.&lt;/p&gt;
&lt;p&gt;We created shared Renovate &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/renovate&quot;&gt;presets&lt;/a&gt;
to simplify the Renovate configurations of the &lt;code&gt;rust-lang&lt;/code&gt; repositories.
These presets aim to get
the benefits of dependency updates while minimizing the number of PRs to review.
We also &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/renovate.html&quot;&gt;documented&lt;/a&gt;
how to adopt Renovate in repositories.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;code-security-for-rust-lang-repositories&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#code-security-for-rust-lang-repositories&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Code security for rust-lang repositories&lt;/h3&gt;
&lt;p&gt;As part of our security work, we enabled &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.github.com/en/code-security/concepts/secret-security/secret-scanning&quot;&gt;GitHub Secret Scanning&lt;/a&gt;
for all &lt;code&gt;rust-lang&lt;/code&gt; repositories. We triaged all alerts tagged as &lt;em&gt;leaked secrets&lt;/em&gt;
and confirmed that they were false positives.&lt;/p&gt;
&lt;p&gt;In addition, in collaboration with the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://crates.io&quot;&gt;crates.io&lt;/a&gt;
team, we started experimenting with Datadog Code Security to get additional
visibility into security issues inferred directly from source files. We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/blob/main/service-catalog/datadog/code-security.md&quot;&gt;documented&lt;/a&gt;
how to opt into this feature, and we want to try it with more repositories in
the future. This work is a follow-up of the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/media/rust-foundation-joins-datadogs-open-source-program/&quot;&gt;Rust Foundation partnership with Datadog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;new-github-actions-runners-powered-by-external-hardware&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-github-actions-runners-powered-by-external-hardware&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New GitHub Actions runners powered by external hardware&lt;/h3&gt;
&lt;p&gt;We enabled new &lt;strong&gt;powerpc64&lt;/strong&gt; and &lt;strong&gt;RISC-V&lt;/strong&gt; GitHub Actions runners for
&lt;code&gt;rust-lang&lt;/code&gt; repositories. We also documented which external runners are powered
by external hardware and where they are used in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/external-ci-runners.html&quot;&gt;rust-forge&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition, we created a new infrastructure
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/blob/main/service-catalog/rust-ci/external-runners/README.md&quot;&gt;guideline&lt;/a&gt;
to help onboard external hardware into the Rust CI infrastructure.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;experiments-with-macos-26-on-ci&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#experiments-with-macos-26-on-ci&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Experiments with macos-26 on CI&lt;/h3&gt;
&lt;p&gt;We started experimenting with &lt;code&gt;macos-26&lt;/code&gt; in &lt;code&gt;rust-lang/rust&lt;/code&gt; CI.
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/533458-t-infra.2Fannouncements/topic/Experimental.20test.20job.20.60aarch64-apple-macos-26.60/with/601619992&quot;&gt;We created an additional CI job&lt;/a&gt;
and have been tracking how it performs. It&#x27;s worth mentioning that GitHub will &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.blog/changelog/2026-05-14-github-actions-upcoming-image-migrations/#macos-latest-migration-begins-june-15&quot;&gt;migrate&lt;/a&gt;
all &lt;code&gt;macos-latest&lt;/code&gt; images to &lt;code&gt;macos-26&lt;/code&gt; in June and July.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;ci-dashboard-available-again&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#ci-dashboard-available-again&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
CI dashboard available again&lt;/h3&gt;
&lt;p&gt;In December 2024, we &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-dev-guide/pull/2167&quot;&gt;created&lt;/a&gt;
a Datadog dashboard to track CI visibility for the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;&lt;code&gt;rust-lang/rust&lt;/code&gt;&lt;/a&gt; repository. It proved very
valuable, but we had to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/pull/242&quot;&gt;remove&lt;/a&gt;
it because its cost was not sustainable.&lt;/p&gt;
&lt;p&gt;Now that the Rust Foundation is part of
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/media/rust-foundation-joins-datadogs-open-source-program/&quot;&gt;Datadog&#x27;s Open Source Program&lt;/a&gt;,
we enabled it again.&lt;/p&gt;
&lt;p&gt;In the past, the dashboard helped us track the top failing jobs, slowest jobs, and overall
pipeline duration over time. We expect it to be just as useful going forward.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;hardware-security-keys-for-critical-infrastructure-access&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hardware-security-keys-for-critical-infrastructure-access&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hardware Security Keys for critical infrastructure access&lt;/h3&gt;
&lt;p&gt;We introduced &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/245&quot;&gt;official support for hardware keys&lt;/a&gt;
as part of the Rust infrastructure security processes. We created a
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/policies/mfa-critical-systems.html&quot;&gt;policy mandating multi-factor authentication with hardware keys&lt;/a&gt;
for people and teams with access to systems considered critical, and in
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.yubico.com/why-yubico/secure-it-forward/&quot;&gt;partnership with Yubico&lt;/a&gt;
we empowered Rust Project members with YubiKeys.&lt;/p&gt;
&lt;p&gt;We also &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/hardware-security-keys.html&quot;&gt;documented how Project members can configure these devices&lt;/a&gt;
for existing use cases. We want to expand this support further, enabling new
ways to use the keys.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;partnership-with-canonical-and-ubuntu-pro-for-ec2-instances&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#partnership-with-canonical-and-ubuntu-pro-for-ec2-instances&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Partnership with Canonical and Ubuntu Pro for EC2 instances&lt;/h3&gt;
&lt;p&gt;As a follow-up to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://canonical.com/blog/canonical-joins-the-rust-foundation-as-a-gold-member&quot;&gt;Canonical joining the Rust Foundation&lt;/a&gt; in March,
we got access to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://ubuntu.com/pro&quot;&gt;Ubuntu Pro&lt;/a&gt; licenses and
applied them to our EC2 instances,
including the instance running &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We improved our Infrastructure as Code setup to apply these changes, so that Ubuntu
Pro will be enabled by default even in future instances.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;faster-mergeability-checks-in-bors&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#faster-mergeability-checks-in-bors&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Faster mergeability checks in Bors&lt;/h3&gt;
&lt;p&gt;We switched from GitHub&#x27;s REST API to the GraphQL API and cut Bors
pull request mergeability check times from an average of 30 minutes to just 1 minute.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;add-the-concept-of-community-reviews-before-pr-assignment&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#add-the-concept-of-community-reviews-before-pr-assignment&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Add the concept of community reviews before PR assignment&lt;/h3&gt;
&lt;p&gt;As part of multiple discussions that happened during the 2026 All-hands, the Clippy team asked the Triagebot team to be able to delay the assignment of a reviewer until one or multiple community reviews were done.&lt;/p&gt;
&lt;p&gt;That work was carried out in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2426&quot;&gt;triagebot#2426&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/pr-assignment.html#community-reviews&quot;&gt;docs&lt;/a&gt;) and has just been enabled in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/issues?q&#x3D;state%3Aopen%20label%3AS-waiting-on-community-reviews&quot;&gt;Clippy repository&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;reintroduce-delegation-approval-for-merge-queue-repositories&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#reintroduce-delegation-approval-for-merge-queue-repositories&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Reintroduce delegation approval for merge queue repositories&lt;/h3&gt;
&lt;p&gt;When we switched our repositories to GitHub merge queues instead of bors (our custom merging bot), we lost the ability to delegate approval on behalf of the reviewer.&lt;/p&gt;
&lt;p&gt;That functionality is quite useful when there are only some nits left and the reviewer feels confident about the author&#x27;s ability to resolve them without having to re-review and approve the changes.&lt;/p&gt;
&lt;p&gt;Work was carried out in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2412&quot;&gt;triagebot#2412&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2436&quot;&gt;triagebot#2436&lt;/a&gt; to add such functionality back. It&#x27;s currently only enabled in the Clippy repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@rustbot delegate[&#x3D;@handle]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@rustbot merge&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;continue-supporting-the-moderation-team-with-locking-unlocking-of-issues&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#continue-supporting-the-moderation-team-with-locking-unlocking-of-issues&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Continue supporting the moderation team with locking/unlocking of issues&lt;/h3&gt;
&lt;p&gt;As part of the effort to help the moderation team better moderate issues and pull requests in our different repositories and organizations, triagebot gained support for locking and unlocking an issue/PR from a GitHub command and Zulip DM.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;quality-of-life-improvements-in-our-range-diff-viewer-for-github-prs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#quality-of-life-improvements-in-our-range-diff-viewer-for-github-prs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Quality of life improvements in our range-diff viewer for GitHub PRs&lt;/h3&gt;
&lt;p&gt;We landed multiple quality of life improvements in our range-diff viewer for GitHub PRs.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;filtering-of-context-only-hunks&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#filtering-of-context-only-hunks&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Filtering of context-only hunks&lt;/h4&gt;
&lt;p&gt;As part of our range-diff, we try as much as possible to only show the relevant parts of a diff. Context changes (lines that changed on main only) are not relevant, and we made a significant effort to filter them out from the shown diff.&lt;/p&gt;
&lt;p&gt;More details are available in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2398&quot;&gt;triagebot#2398&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;commit-messages-diff&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#commit-messages-diff&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Commit messages diff&lt;/h4&gt;
&lt;p&gt;Our range-diff now shows the list of commits and diffs them with the previous ones.&lt;/p&gt;
&lt;p&gt;New commits:&lt;/p&gt;
&lt;img alt&#x3D;&quot;Range-diff showing new added commits and their commit messages&quot; src&#x3D;&quot;commit-messages-diff.png&quot; /&gt;
&lt;h4 id&#x3D;&quot;warning-against-unicode-bidi-characters&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#warning-against-unicode-bidi-characters&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Warning against Unicode Bidi characters&lt;/h4&gt;
&lt;p&gt;Following what GitHub does when it detects Unicode Bidi characters in a PR diff, we now also warn since &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2440&quot;&gt;triagebot#2440&lt;/a&gt;.&lt;/p&gt;
&lt;img alt&#x3D;&quot;Range-diff warning that a file contains bidirectional or hidden Unicode text&quot; src&#x3D;&quot;unicode-bidi-warning.png&quot; /&gt;
&lt;h2 id&#x3D;&quot;small-tweaks-to-the-triagebot&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#small-tweaks-to-the-triagebot&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Small tweaks to the triagebot&lt;/h2&gt;
&lt;p&gt;A new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/zulip-commands.html#stream-commands&quot;&gt;triagebot command&lt;/a&gt; to assign a priority value to regressions directly from Zulip, useful when doing triage. Example:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** assign-priority 123456 high&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Minor tweaks (in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/commit/b1e783a2&quot;&gt;b1e783a2&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/commit/6611570e&quot;&gt;6611570e&lt;/a&gt;) to the triagebot &lt;code&gt;backport&lt;/code&gt; and &lt;code&gt;user-info&lt;/code&gt; commands, which now support shorter variants:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;# Supported syntaxes for the &#x60;backport&#x60; command&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** backport accept beta 123456&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** backport accept beta&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** backport accept&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;# Supported syntaxes for the &#x60;user-info&#x60; command&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** user-info https://www.github.com/apiraino&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@**triagebot** user-info apiraino&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id&#x3D;&quot;q3-2026-plans&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q3-2026-plans&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q3 2026 Plans&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;finish-leftover-work-from-q2&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-leftover-work-from-q2&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Finish leftover work from Q2&lt;/h3&gt;
&lt;p&gt;In Q3, we will continue working on some of the things we could not finish in Q2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve access controls for Rust infrastructure with SAML SSO.&lt;/li&gt;
&lt;li&gt;Modernize the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt; infrastructure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;improve-github-actions-security&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-github-actions-security&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve GitHub Actions security&lt;/h3&gt;
&lt;p&gt;We&#x27;ve been actively working on GitHub Actions security through our
&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/05/04/outreachy-2026-may/&quot;&gt;Outreachy mentorship program&lt;/a&gt;.
This effort started in April when we adopted zizmor as a
Static Application Security Testing solution for GitHub Actions in some of our repositories.&lt;/p&gt;
&lt;p&gt;As a follow-up of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/all-hands-2026/issues/51&quot;&gt;one of our Rust All-Hands sessions&lt;/a&gt;, we started working on a
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crabwatch&quot;&gt;system to foster zizmor&lt;/a&gt; auditing and progressive adoption across the &lt;code&gt;rust-lang&lt;/code&gt;
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/&quot;&gt;organization&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;move-mailing-lists-from-mailgun-to-google-groups-to-reduce-spam&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#move-mailing-lists-from-mailgun-to-google-groups-to-reduce-spam&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Move mailing lists from Mailgun to Google Groups to reduce spam&lt;/h3&gt;
&lt;p&gt;As a follow-up to setting up the Google Workspace for the Rust Project,
we want to evaluate whether Google Groups can reduce spam for existing mailing
lists, which are currently managed through Mailgun. We want to keep the same
developer experience by provisioning these new mailing lists through &lt;code&gt;team&lt;/code&gt;.
If the results are satisfactory, we will also migrate existing lists.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;consolidate-logs-on-datadog&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#consolidate-logs-on-datadog&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Consolidate logs on Datadog&lt;/h3&gt;
&lt;p&gt;As part of our efforts to improve observability, we want to consolidate all log
management in Datadog. Next, we want to push logs from all services into
it, including those from our bots (&lt;code&gt;triagebot&lt;/code&gt;, &lt;code&gt;bors&lt;/code&gt;, etc).&lt;/p&gt;
&lt;h3 id&#x3D;&quot;reduce-reliance-on-external-resources-in-ci&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#reduce-reliance-on-external-resources-in-ci&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Reduce reliance on external resources in CI&lt;/h3&gt;
&lt;p&gt;We want &lt;code&gt;rust-lang/rust&lt;/code&gt; CI to depend less on third-party services during builds
and tests. When CI downloads required artifacts from external sources,
an outage in those services can cause failures unrelated to Rust itself.&lt;/p&gt;
&lt;p&gt;To make CI more reliable, we plan to mirror more of those artifacts in the
Rust project&#x27;s &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/ci-mirrors&quot;&gt;CI mirrors&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;stricter-networking-access-rules-for-crater-agents&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#stricter-networking-access-rules-for-crater-agents&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Stricter networking access rules for crater agents&lt;/h3&gt;
&lt;p&gt;As discussed during the Rust All-Hands, we want to improve the security of
crater agents by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crater/issues/838&quot;&gt;isolating their network access&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;start-planning-for-github-rest-api-upgrade&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#start-planning-for-github-rest-api-upgrade&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Start planning for GitHub REST API upgrade&lt;/h3&gt;
&lt;p&gt;The current GitHub REST API version (&quot;2022-11-28&quot;) will be deprecated in about 2 years (see the
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.github.com/rest/about-the-rest-api/api-versions?apiVersion&#x3D;2026-03-10&quot;&gt;GitHub announcement&lt;/a&gt;). We &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/commit/efb2e090&quot;&gt;pinpointed&lt;/a&gt; it in our GitHub client and plan
to start testing the new version (&quot;2026-03-10&quot;) and see what it breaks.&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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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>Ubiratan Soares</name>
        </author>
    </entry>
    <entry>
        <title>Infrastructure Team 2026 Q1 Recap and Q2 Plan</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2026/04/14/infrastructure-team-q1-recap-and-q2-plan/" type="text/html" title="Infrastructure Team 2026 Q1 Recap and Q2 Plan" />
        <published>2026-04-14T00:00:00+00:00</published>
        <updated>2026-04-14T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2026/04/14/infrastructure-team-q1-recap-and-q2-plan/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2026/04/14/infrastructure-team-q1-recap-and-q2-plan/">&lt;p&gt;Here&#x27;s what the Infrastructure Team delivered in Q1 2026 and what we&#x27;re focusing on in Q2.&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/2026/01/13/infrastructure-team-q4-2025-recap-and-q1-2026-plan/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q1-accomplishments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q1-accomplishments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q1 Accomplishments&lt;/h2&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;We started migrating from branch protection rules to
&lt;a rel&#x3D;&quot;external&quot; 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;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rulesets are the new way in which GitHub suggests protecting branches and tags.
They allow more configurability with respect to classic branch protections, and
they are the only way in which you can setup new functionalities such as merge queues
via API.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We converted all repositories, except for
the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;&lt;code&gt;rust&lt;/code&gt;&lt;/a&gt; repository. We are &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/pull/2327&quot;&gt;working on it&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;As part of this effort, we also made all the branch protection and ruleset options we use
configurable via the &lt;code&gt;team&lt;/code&gt; repository, so that they can be managed as Infrastructure as Code (IaC).&lt;/p&gt;
&lt;p&gt;Here are the newly available configuration options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L460&quot;&gt;&lt;code&gt;allowed-merge-apps&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L462&quot;&gt;&lt;code&gt;merge-queue&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L487&quot;&gt;&lt;code&gt;prevent-deletion&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L490&quot;&gt;&lt;code&gt;prevent-force-push&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L433&quot;&gt;&lt;code&gt;require-conversation-resolution&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain&#x3D;1#L438&quot;&gt;&lt;code&gt;require-linear-history&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team/issues/2356&quot;&gt;GitHub issue&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improved-ci-security&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improved-ci-security&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improved CI security&lt;/h3&gt;
&lt;p&gt;We always try to improve our security posture. Here are the most relevant examples for this quarter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/a&gt; repository, we enabled &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.renovatebot.com/&quot;&gt;Renovate&lt;/a&gt;, a bot
that automatically creates pull requests to keep GitHub Actions and Rust
dependencies up to date.
This makes it easier for us to keep our dependencies up to date and fix security issues in a timely manner.&lt;/li&gt;
&lt;li&gt;In the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins&quot;&gt;&lt;code&gt;compiler-builtins&lt;/code&gt;&lt;/a&gt; CI, we
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins/pull/1114&quot;&gt;enabled Renovate&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-builtins/pull/1113&quot;&gt;resolved&lt;/a&gt; the security issues reported by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://zizmor.sh&quot;&gt;&lt;code&gt;zizmor&lt;/code&gt;&lt;/a&gt; in preparation for running the RISC-V self-hosted runner in CI in a more secure way.&lt;/li&gt;
&lt;li&gt;We released &lt;code&gt;crates-io-auth-action&lt;/code&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crates-io-auth-action/releases/tag/v1.0.4&quot;&gt;v1.0.4&lt;/a&gt;, updating its dependencies and moving it from Node 20 to Node 24 after GitHub announced the deprecation of Node 20 on Actions runners.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;two-new-dev-desktops&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#two-new-dev-desktops&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Two new dev desktops&lt;/h3&gt;
&lt;p&gt;We provisioned two new dev desktops: &lt;code&gt;dev-desktop-us-2.infra.rust-lang.org&lt;/code&gt; and &lt;code&gt;dev-desktop-eu-2.infra.rust-lang.org&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We also enabled IPv6 access for dev desktops, making them easier to reach from more network environments.
See the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/simpleinfra/issues/186&quot;&gt;GitHub issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Learn more in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Forge docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;bigger-docs-rs-instance&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#bigger-docs-rs-instance&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Bigger docs.rs instance&lt;/h3&gt;
&lt;p&gt;We are experiencing an unprecedented increase in crates published on &lt;code&gt;crates.io&lt;/code&gt;,
which is putting a lot of pressure on the &lt;code&gt;docs.rs&lt;/code&gt; infrastructure, which has to build
the documentation for more crates than before.&lt;/p&gt;
&lt;p&gt;To keep up with this growth, we upgraded the &lt;code&gt;docs.rs&lt;/code&gt; instance to a more powerful one, doubling
the available RAM and CPU cores.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improved-access-controls-for-rust-infrastructure-with-saml-sso&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improved-access-controls-for-rust-infrastructure-with-saml-sso&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improved access controls for Rust infrastructure with SAML SSO&lt;/h3&gt;
&lt;p&gt;We introduced Google SSO as part of Rust infrastructure offerings.
We enabled Google Workspace accounts for the infrastructure team and validated the SAML setup for some of the key infrastructure providers, like Datadog and Fastly.&lt;/p&gt;
&lt;p&gt;More on that in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/64&quot;&gt;GitHub issue&lt;/a&gt;.&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 Q1 2026.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;github-issue-comments-viewer&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-issue-comments-viewer&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub issue comments viewer&lt;/h4&gt;
&lt;p&gt;We&#x27;ve added to Triagebot a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2251&quot;&gt;GitHub issues and PRs viewer&lt;/a&gt;. It&#x27;s primarily designed for long issues and PRs where GitHub is unhelpful with its &quot;Load More&quot; button.&lt;/p&gt;
&lt;p&gt;It can be accessed via the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2278&quot;&gt;&lt;code&gt;View all comments&lt;/code&gt; link&lt;/a&gt; at the top of long issues and PRs.&lt;/p&gt;
&lt;p&gt;Example for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://triage.rust-lang.org/gh-comments/rust-lang/triagebot/issues/2251&quot;&gt;triagebot#2251&lt;/a&gt;:&lt;/p&gt;
&lt;img alt&#x3D;&quot;TriageBot example&quot; src&#x3D;&quot;triagebot-example.png&quot; /&gt;
&lt;p&gt;And while it started rather small in its ambitions, it evolved quite a bit over the last quarter with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a self-contained &quot;Export&quot; button (implemented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2274&quot;&gt;#2274&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;a table of contents for review threads (implemented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2360&quot;&gt;#2360&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;expand/collapse thread buttons (implemented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2355&quot;&gt;#2355&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;and other small improvements&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id&#x3D;&quot;organization-wide-default-configuration&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#organization-wide-default-configuration&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Organization-wide default configuration&lt;/h4&gt;
&lt;p&gt;Triagebot has many features and configurations, and while it&#x27;s not difficult to enable a feature in a repo (the cost of a PR), it doesn&#x27;t scale to the size of the rust-lang organization and its &amp;gt;200 repositories.&lt;/p&gt;
&lt;p&gt;In order to address the uneven availability of features across all the repositories, we&#x27;ve &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2292&quot;&gt;added support for organization-wide default configuration&lt;/a&gt; in the Triagebot codebase and started enabling some features org-wide.&lt;/p&gt;
&lt;p&gt;Announcements of soon-to-be-enabled org-wide features are done in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/533458-t-infra.2Fannouncements/topic/Triagebot.20Organization-Wide.20Defaults/with/579425485&quot;&gt;#&lt;strong&gt;t-infra/announcements&amp;gt;Triagebot Organization-Wide Defaults&lt;/strong&gt;&lt;/a&gt; on Zulip.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;user-info-command&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#user-info-command&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;user-info&lt;/code&gt; command&lt;/h4&gt;
&lt;p&gt;This new Zulip command first appeared as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2271&quot;&gt;the &lt;code&gt;comments&lt;/code&gt; command&lt;/a&gt; for viewing recent user comments, but &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2317&quot;&gt;was extended&lt;/a&gt; into a more general &lt;code&gt;user-info&lt;/code&gt; command, which shows recent activity (PRs, repositories) and account creation date for the given GitHub user account.&lt;/p&gt;
&lt;p&gt;This is part of our efforts to help reviewers and maintainers with sloppy AI-generated PRs.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;per-team-rotation-mode&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#per-team-rotation-mode&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Per-team rotation mode&lt;/h4&gt;
&lt;p&gt;Triagebot handles the automatic assignment of reviewers in multiple repositories. Until February, it was not possible to set per-team rotation mode.&lt;/p&gt;
&lt;p&gt;This is now possible via the Zulip command &lt;code&gt;work set-team-rotation-mode &amp;lt;team&amp;gt; off/on&lt;/code&gt;, implemented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2273&quot;&gt;#2273&lt;/a&gt; by &lt;code&gt;@Kobzol&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;per-repository-review-preferences&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#per-repository-review-preferences&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Per-repository review preferences&lt;/h4&gt;
&lt;p&gt;Continuing with the theme of reviewer assignments, it was previously only possible to set a review preference for &lt;code&gt;rust-lang/rust&lt;/code&gt;, despite the multiple repositories handled by Triagebot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@Kobzol&lt;/code&gt; fixed that in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2286&quot;&gt;#2286&lt;/a&gt;. It is now possible to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/review-queue-tracking.html#usage&quot;&gt;set per-repository review preferences&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;report-banned-users-to-moderator-stream-on-zulip&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#report-banned-users-to-moderator-stream-on-zulip&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Report banned users to moderator stream on Zulip&lt;/h4&gt;
&lt;p&gt;As part of supporting different team needs, we&#x27;ve implemented an automatic reporting system on Zulip for banned users in our GitHub organization (implemented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2269&quot;&gt;#2269&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The goal of this feature is to relieve moderators from taking screenshots and manually archiving offending comments and user actions by automatically retrieving that information and posting it in the moderators’ Zulip channel.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;clippy-s-zulip-lint-nomination-topic&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#clippy-s-zulip-lint-nomination-topic&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Clippy&#x27;s Zulip lint nomination topic&lt;/h4&gt;
&lt;p&gt;Similar to the previous topic, we&#x27;ve also helped &lt;strong&gt;T-clippy&lt;/strong&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust-clippy/pull/16614&quot;&gt;set up an automatic FCP topic on Zulip&lt;/a&gt; when they want to nominate a lint for discussion.&lt;/p&gt;
&lt;p&gt;As part of this work, we have also &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2334&quot;&gt;added the ability to add back a comment on GitHub&lt;/a&gt; with the link to the created Zulip topic.&lt;/p&gt;
&lt;h4 id&#x3D;&quot;new-zulip-commands-to-handle-backports-and-assign-priority-to-issues&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#new-zulip-commands-to-handle-backports-and-assign-priority-to-issues&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
New Zulip commands to handle backports and assign priority to issues&lt;/h4&gt;
&lt;p&gt;Project members can now use two new Zulip commands to apply labels on rust-lang/rust issues and pull requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;backport [stable | beta ] [approve | decline ] &amp;lt;pr #&amp;gt;&lt;/code&gt;: to accept or decline for backport a patch fixing a regression&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assign-prio &amp;lt;issue #&amp;gt; [ critical | high | medium | low | &amp;lt;empty&amp;gt;]&lt;/code&gt;: to assign a priority label to an issue (admittedly mostly used by the Compiler Team but it&#x27;s available to everyone)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/zulip-commands.html#stream-commands&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q2-plans&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q2-plans&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q2 Plans&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;finish-q1-goals&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#finish-q1-goals&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Finish Q1 goals&lt;/h3&gt;
&lt;p&gt;In Q1, we didn&#x27;t manage to finish all our goals, so we will continue working on them in Q2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;docs.rs infrastructure modernization:&lt;/strong&gt; Although we made some improvements to docs.rs in Q1,
such as using GitHub OIDC for publishing container images to AWS ECR,
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;Move to GitHub Rulesets:&lt;/strong&gt; Migrate the &lt;code&gt;rust&lt;/code&gt; repository to GitHub Rulesets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SAML SSO:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Enable provisioning Google Workspace accounts from the &lt;code&gt;team&lt;/code&gt; repository.&lt;/li&gt;
&lt;li&gt;Onboard all users that require infrastructure access and add the SAML setup for other service providers, like AWS.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;improve-ci-security-and-developer-experience&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-ci-security-and-developer-experience&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve CI security and developer experience&lt;/h3&gt;
&lt;p&gt;We want to keep making the CI of the Rust Project both safer and easier to work with.&lt;/p&gt;
&lt;p&gt;We have many ideas and we&#x27;re not sure which ones we will prioritize yet, but here are some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make it easier for Rust Project members to adopt tools like Renovate to keep their dependencies up to date and secure.&lt;/li&gt;
&lt;li&gt;Check CVEs of our dependencies.&lt;/li&gt;
&lt;li&gt;Add more static analysis tools such as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://zizmor.sh&quot;&gt;&lt;code&gt;zizmor&lt;/code&gt;&lt;/a&gt; to secure more CI workflows.&lt;/li&gt;
&lt;li&gt;Improve our CI observability by creating dashboards around metrics such as CI jobs duration and failure rate.
Since the Rust Foundation &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/media/rust-foundation-joins-datadogs-open-source-program/&quot;&gt;joined&lt;/a&gt;
Datadog’s Open Source Program, we plan to use Datadog for this task.&lt;/li&gt;
&lt;li&gt;Improve visibility of the test coverage of the CI jobs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;hardware-security-keys-for-critical-infrastructure-access&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hardware-security-keys-for-critical-infrastructure-access&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hardware security keys for critical infrastructure access&lt;/h3&gt;
&lt;p&gt;We want to secure access to critical Rust infrastructure even further by using hardware security keys. The Rust Foundation partnered with &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.yubico.com/why-yubico/secure-it-forward/&quot;&gt;Yubico&lt;/a&gt;, and we want to provide YubiKeys
to the Rust teams with access to critical infrastructure.&lt;/p&gt;
&lt;p&gt;Our plan is to distribute hardware keys in May, during the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://2026.rustweek.org/#week-schedule&quot;&gt;Rust All Hands&lt;/a&gt;.
See the related &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/245&quot;&gt;GitHub issue&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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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>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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;environments&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;production&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;branches&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;main&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;environments&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;staging&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;branches&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;main&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/amustaque97&quot;&gt;amustaque97&lt;/a&gt; for his great work on the
&lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[[&lt;/span&gt;&lt;span&gt;crates-io&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;crates&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;analyzeme&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;decodeme&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;measureme&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;publish-workflow&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;publish.yml&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;publish-environment&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;publish&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/homu&quot;&gt;Homu&lt;/a&gt;) to the new &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/l0ngvh&quot;&gt;Võ Hoàng Long&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@rustbot label +regression-untriaged +I-prioritize +needs-repro&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;could become an alias:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;plain&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;@rustbot label regression-needs-triaging&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/apiraino&quot;&gt;@apiraino&lt;/a&gt; for implementing the feature in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2216&quot;&gt;#2216&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports&quot;&gt;compiler&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/apiraino&quot;&gt;@apiraino&lt;/a&gt; for implementing the feature in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/triagebot/pull/2191&quot;&gt;#2191&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Urgau&quot;&gt;@Urgau&lt;/a&gt; in &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Urgau&quot;&gt;@Urgau&lt;/a&gt; in &lt;a rel&#x3D;&quot;external&quot; 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 class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;mentions&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;&amp;quot;library/{dec2flt,flt2dec}&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;cc&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;@ghost&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/&quot;&gt;Forge&lt;/a&gt; and the &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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>Interview with Jan David Nose</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2025/11/25/interview-with-jan-david-nose/" type="text/html" title="Interview with Jan David Nose" />
        <published>2025-11-25T00:00:00+00:00</published>
        <updated>2025-11-25T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2025/11/25/interview-with-jan-david-nose/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2025/11/25/interview-with-jan-david-nose/">&lt;p&gt;On the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.org/governance/teams/launching-pad/#team-content&quot;&gt;Content Team&lt;/a&gt;, we had our first whirlwind outing at RustConf 2025 in Seattle, Washington, USA. There we had a chance to speak with folks about interesting things happening in the Project and the wider community.&lt;/p&gt;
&lt;h1 id&#x3D;&quot;jan-david-nose-infrastructure-team&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#jan-david-nose-infrastructure-team&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Jan David Nose, Infrastructure Team&lt;/h1&gt;
&lt;p&gt;In this interview, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/MerrimanInd&quot;&gt;Xander Cesari&lt;/a&gt; sits down with &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jdno&quot;&gt;Jan David Nose&lt;/a&gt;, then one of the full-time engineers on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.org/governance/teams/infra/&quot;&gt;Infrastructure Team&lt;/a&gt;, which maintains and develops the infrastructure upon which Rust is developed and deployed -- including CI/CD tooling and crates.io.&lt;/p&gt;
&lt;p&gt;We released this video on an accelerated timeline, some weeks ago, in light of the recent software supply chain attacks, but the interview was conducted prior to the news of compromised packages in other languages and ecosystems.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.youtube.com/watch?v&#x3D;r7i-2wHtNjw&quot;&gt;interview here&lt;/a&gt; or click below.&lt;/p&gt;
&lt;iframe width&#x3D;&quot;560&quot; height&#x3D;&quot;315&quot; src&#x3D;&quot;https://www.youtube.com/embed/r7i-2wHtNjw?si&#x3D;Nc2N2Gqqpry1FKfs&quot; title&#x3D;&quot;YouTube video player&quot; frameborder&#x3D;&quot;0&quot; allow&#x3D;&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy&#x3D;&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;hr /&gt;
&lt;h2 id&#x3D;&quot;transcript&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#transcript&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Hey, this is Xander Cesari with the Rust Project
Content Team, recording on the last hour of the last day of RustConf
2025 here in Seattle. So it&#x27;s been a long and amazing two days. And I&#x27;m
sitting down here with a team member from the Rust Project Infra Team,
the unsung heroes of the Rust language. Want to introduce yourself and
kind of how you got involved?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, sure. I&#x27;m JD. Jan David is the full name, but
especially in international contexts, I just go with JD. I&#x27;ve been
working for the Rust Foundation for the past three years as a full-time
employee and I essentially hit the jackpot to work full-time on open
source and I&#x27;ve been in the Infra Team of the Rust Project for the
whole time. For the past two years I&#x27;ve led the team together with
Jake. So the Infra Team is kind of a thing that lets Rust happen and
there&#x27;s a lot of different pieces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Could you give me an overview of the responsibility
of the Infra Team?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Sure. I think on a high level, we think about this
in terms of, we serve two different groups of people. On one side, we
have users of the language, and on the other side, we really try to
provide good tooling for the maintainers of the language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Starting with the maintainer side, this is really
everything about how Rust is built. From the moment someone makes a
contribution or opens a PR, we maintain the continuous integration that
makes sure that the PR actually works. There&#x27;s a lot of bots and
tooling helping out behind the scenes to kind of maintain a good status
quo, a sane state. Lots of small things like triage tools on GitHub to
set labels and ping people and these kinds of things. And that&#x27;s kind
of managed by the Infra Team at large.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: And then on the user side, we have a lot of, or the
two most important things are making sure users can actually download
Rust. We don&#x27;t develop crates.io, but we support the infrastructure to
actually ship crates to users. All the downloads go through content
delivery networks that we provide. The same for Rust releases. So if I
don&#x27;t do my job well, which has happened, there might be a global
outage of crates.io and no one can download stuff. But those are kind
of the two different buckets of services that we run and operate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Gotcha. So on the maintainer side, the Rust
organization on GitHub is a large organization with a lot of activity,
a lot of code. There&#x27;s obviously a lot of large code bases being
developed on GitHub, but there are not that many languages the size of
Rust being developed on GitHub. Are there unique challenges to
developing a language and the tooling that&#x27;s required versus developing
other software projects?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I can think of a few things that have less to do
with the language specifically, but with some of the architecture
decisions that were made very early on in the life cycle of Rust. So
one of the things that actually caused a lot of headache for mostly
GitHub, and then when they complained to us, for us as well, is that
for a long, long time, the index for crates.io was a Git repo on
GitHub. As Rust started to grow, the activity on the repo became so big
that it actually caused some issues, I would say, in a friendly way on
GitHub, just in terms of how much resources that single repository was
consuming. That then kind of started this work on a web-based,
HTTP-based index to shift that away. That&#x27;s certainly one area where
we&#x27;ve seen how Rust has struggled a little bit with the platform, but
also the platform provider struggled with us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I think for Rust itself, especially when we look at
CI, we really want to make sure that Rust works well on all of the
targets and all the platforms we support. That means we have an
extremely wide CI pipeline where, for every Tier 1 target, we want to
run all the tests, we want to build the release artifacts, we want to
upload all of that to S3. We want to do as much as we reasonably can
for Tier 2 targets and, to a lesser extent, maybe even test some stuff
on Tier 3. That has turned into a gigantic build pipeline. Marco gave a
talk today on what we&#x27;ve done with CI over the last year. One of the
numbers that came out of doing the research for this talk is that we
accumulate over three million build minutes per month, which is about
six years of CPU time every month.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Especially when it comes to open source projects, I
think we&#x27;re one of the biggest consumers of GitHub Actions in that
sense. Not the biggest in total; there are definitely bigger commercial
projects. But that&#x27;s a unique challenge for us to manage because we
want to provide as good a service as we can to the community and make
sure that what we ship is high quality. That comes at a huge cost in
terms of scaling. As Rust gets more popular and we want to target more
and more platforms, this is like a problem that just continues to
grow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We&#x27;ll probably never remove a lot of targets, so
there&#x27;s an interesting challenge to think about. If it&#x27;s already big
now, how does this look in 5 years, 10 years, 15 years, and how can we
make sure we can maintain the level of quality we want to ship? When
you build and run for a target in the CI pipeline, some of those Tier 1
targets you can just ask a cloud service provider to give you a VM
running on that piece of hardware, but some of them are probably not
things that you can just run in the cloud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Is there some HIL (Hardware-In-the-Loop) lab
somewhere?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: So you&#x27;re touching on a conversation that&#x27;s
happening pretty much as we speak. So far, as part of our target tier
policy, there is a clause that says it needs to be able to run in CI.
That has meant being very selective about only promoting things to Tier
1 that we can actually run and test. For all of this, we had a
prerequisite that it runs on GitHub Actions. So far we&#x27;ve used very
little hardware that is not natively supported or provided by GitHub.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: But this is exactly the point with Rust increasing
in popularity. We just got requests to support IBM platforms and
RISC-V, and those are not natively supported on GitHub. That has kicked
off an internal conversation about how we even support this. How can we
as a project enable companies that can provide us hardware to test on?
What are the implications of that?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: On one side, there are interesting constraints and
considerations. For example, you don&#x27;t want your PRs to randomly fail
because someone else&#x27;s hardware is not available. We&#x27;re already so
resource-constrained on how many PRs we can merge each day that adding
noise to that process would really slow down contributions to Rust. On
the other side, there are security implications. Especially if we talk
about promoting something to Tier 1 and we want to build release
artifacts on that hardware, we need to make sure that those are
actually secure and no one sneaks a back door into the Rust compiler
target for RISC-V.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: So there are interesting challenges for us,
especially in the world we live in where supply chain security is a
massive concern. We need to figure out how we can both support the
growth of Rust and the growth of the language, the community, and the
ecosystem at large while also making sure that the things we ship are
reliable, secure, and performant. That is becoming an increasingly
relevant and interesting piece to work on. So far we&#x27;ve gotten away
with the platforms that GitHub supports, but it&#x27;s really cool to see
that this is starting to change and people approach us and are willing
to provide hardware, provide sponsorship, and help us test on their
platforms. But essentially we don&#x27;t have a good answer for this yet.
We&#x27;re still trying to figure out what this means, what we need to take
into consideration, and what our requirements are to use external
hardware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Yeah, everyone is so excited about Rust will run
everywhere, but there&#x27;s a maintenance cost there that is almost
exponential in scope.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: It&#x27;s really interesting as well because there&#x27;s a
tension there. I think with IBM, for example, approaching us, it&#x27;s an
interesting example. Who has IBM platforms at home? The number of users
for that platform is really small globally, but IBM also invests
heavily in Rust, tries to make this happen, and is willing to provide
the hardware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: For us, that leads to a set of questions. Is there
a line? Is there a certain requirement? Is there a certain amount of
usage that a platform would need for us to promote it? Or do we say we
want to promote as much as we can to Tier 1? This is a conversation we
haven&#x27;t really had to have yet. It&#x27;s only now starting to creep in as
Rust is adopted more widely and companies pour serious money and
resources into it. That&#x27;s exciting to see.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: In this specific case, companies approach the Infra
Team to figure out how we can add their platforms to CI as a first step
towards Tier 1 support. But it&#x27;s also a broader discussion we need to
have with larger parts of the Rust Project. For Tier 1 promotions, for
example, the Compiler Team needs to sign off, Infra needs to sign off.
Many more people need to be involved in this discussion of how we can
support the growing needs of the ecosystem at large.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: I get the feeling that&#x27;s going to be a theme
throughout this interview.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: 100%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: So one other tool that&#x27;s part of this pipeline that
I totally didn&#x27;t know about for a long time, and I think a talk at a
different conference clued me into it, is Crater. It&#x27;s a tool that
attempts to run all of the Rust code it can find on the internet. Can
you talk about what that tool does and how it integrates into the
release process?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Whenever someone creates a pull request on GitHub
to add a new feature or bug fix to the Rust compiler, they can start
what&#x27;s called a Crater run, or an experiment. Crater is effectively a
large fleet of machines that tries to pull in as many crates as it can.
Ideally, we would love to test all crates, but for a variety of reasons
that&#x27;s not possible. Some crates simply don&#x27;t build reliably, so we
maintain lists to exclude those. From the top of my head, I think we
currently test against roughly 60% of crates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: The experiment takes the code from your pull
request, builds the Rust compiler with it, and then uses that compiler
to build all of these crates. It reports back whether there are any
regressions related to the change you proposed. That is a very
important tool for us to maintain backwards compatibility with new
versions and new features in Rust. It lets us ask: does the ecosystem
still compile if we add this feature to the compiler, and where do we
run into issues? Then, and this is more on the Compiler Team side,
there&#x27;s a decision about how to proceed. Is the breakage acceptable? Do
we need to adjust the feature? Having Crater is what makes that
conversation possible because it gives us real data on the impact on
the wider ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: I think that&#x27;s so interesting because as more and
more companies adopt Rust, they&#x27;re asking whether the language is going
to be stable and backward compatible. You hear about other programming
languages that had a big version change that caused a lot of drama and
code changes. The fact that if you have code on crates.io, the Compiler
Team is probably already testing against it for backwards compatibility
is pretty reassuring.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, the chances are high, I would say. Especially
looking at the whole Python 2 to Python 3 migration, I think as an
industry we&#x27;ve learned a lot from those big version jumps. I can&#x27;t
really speak for the Compiler Team because I&#x27;m not a member and I
wasn&#x27;t involved in the decision-making, but I feel this is one of the
reasons why backwards compatibility is such a big deal in Rust&#x27;s
design. We want to make it as painless as possible to stay current,
stay up to date, and make sure we don&#x27;t accidentally break the language
or create painful migration points where the entire ecosystem has to
move at once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Do you know if there are other organizations pulling
in something like Crater and running it on their own internal crate
repositories, maybe some of the big tech companies or other compiler
developers or even other languages? Or is this really bespoke for the
Rust compiler team?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I don&#x27;t know of anyone who runs Crater itself as a
tool. Crater is built on a sandboxing framework that we also use in
other places. For example, docs.rs uses some of the same underlying
infrastructure to build all of the documentation. We try to share as
much as we can of the functionality that exists in Crater, but I&#x27;m not
aware of anyone using Crater in the same way we do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Gotcha. The other big part of your job is that the
Infra Team works on supporting maintainers, but it also supports users
and consumers of Rust who are pulling from crates.io. It sounds like
crates.io is not directly within your team, but you support a lot of
the backend there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, exactly. crates.io has its own team, and that
team maintains the web application and the APIs. The crates themselves,
all the individual files that people download, are hosted within our
infrastructure. The Infra Team maintains the content delivery network
that sits in front of that. Every download of a crate goes through
infrastructure that we maintain. We collaborate very closely with the
crates.io team on this shared interface. They own the app and the API,
and we make sure that the files get delivered to the end user.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: So it sounds like there&#x27;s a lot of verification of
the files that get uploaded and checks every time someone pushes a new
version to crates.io. That part all happens within crates.io as an
application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Cargo uses the crates.io API to upload the crate
file. crates.io has a lot of internal logic to verify that it is valid
and that everything looks correct. For us, as the Infra Team, we treat
that as a black box. crates.io does its work, and if it is happy with
the upload, it stores the file in S3. From that point onward,
infrastructure makes sure that the file is accessible and can be
downloaded so people can start using your crate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: In this theme of Rust being a bit of a victim of its
own success, I assume all of the traffic graphs and download graphs are
very much up and to the right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: On the Foundation side, one of our colleagues likes
to check how long it takes for one billion downloads to happen on
crates.io, and that number has been falling quickly. I don&#x27;t remember
what it was three years ago, but it has come down by orders of
magnitude. In our download traffic we definitely see exponential
growth. Our traffic tends to double year over year, and that trend has
been pretty stable. It really seems like Rust is getting a lot of
adoption in the ecosystem and people are using it for more and more
things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: How has the Infra Team scaled with that? Are you
staying ahead of it, or are there a lot of late nights?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: There have definitely been late nights. In the
three years I&#x27;ve been working in the Infra Team, every year has had a
different theme that was essentially a fire to put out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: It changes because we fix one thing and then the
next thing breaks. So far, luckily, those fires have been mostly
sequential, not parallel. When I joined, bandwidth was the big topic.
Over the last year, it has been more about CI. About three years ago,
we hit this inflection point where traffic was doubling and the
sponsorship capacity we had at the time was reaching its limits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Two or three years ago, Fastly welcomed us into
their Fast Forward program and has been sponsoring all of our bandwidth
since then. That has mostly helped me sleep at night. It has been a
very good relationship. They have been an amazing partner and have
helped us at every step to remove the fear that we might hit limits.
They are very active in the open source community at large; most
famously they also sponsor PyPI and the Python ecosystem, compared to
which we&#x27;re a tiny fish in a very big pond. That gives us a lot of
confidence that we can sustain this growth and keep providing crates
and releases at the level of quality people expect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: In some ways, Rust did such a good job of making all
of that infrastructure feel invisible. You just type Cargo commands
into your terminal and it feels magical.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I&#x27;m really happy about that. It&#x27;s an interesting
aspect of running an infrastructure team in open source. If you look at
the ten-year history since the first stable release, or even the
fifteen years since Rust really started, infrastructure was
volunteer-run for most of that time. I&#x27;ve been here for three years,
and I was the first full-time infrastructure engineer. So for ten to
twelve years, volunteers ran the infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: For them, it was crucial that things just worked,
because you can&#x27;t page volunteers in the middle of the night because a
server caught fire or downloads stopped working. From the beginning,
our infrastructure has been designed to be as simple and as reliable as
possible. The same is true for our CDNs. I always feel a bit bad
because Fastly is an amazing sponsor. Every time we meet them at
conferences or they announce new features, they ask whether we want to
use them or talk about how we use Fastly in production. And every time
I have to say: we have the simplest configuration possible. We set some
HTTP headers. That&#x27;s pretty much it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: It&#x27;s a very cool platform, but we use the smallest
set of features because we need to maintain all of this with a
very small team that is mostly volunteer-based. Our priority has always
been to keep things simple and reliable and not chase every fancy new
technology, so that the project stays sustainable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Volunteer-based organizations seem to have to care
about work-life balance, which is probably terrific, and there are
lessons to be learned there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, it&#x27;s definitely a very interesting
environment to work in. It has different rules than corporations or
commercial teams. We have to think about how much work we can do in a
given timeframe in a very different way, because it&#x27;s unpredictable
when volunteers have time, when they&#x27;re around, and what is happening
in their lives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Over the last few years, we&#x27;ve tried to reduce the
number of fires that can break out. And when they do happen, we try to
shield volunteers from them and take that work on as full-time
employees. That started with me three years ago. Last year Marco
joined, which increased the capacity we have, because there is so much
to do on the Infra side that even with me working full-time, we simply
did not have enough people.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: So you&#x27;re two full-time and everything else is
volunteer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Exactly. The team is around eight people. Marco and
I work full-time and are paid by the Rust Foundation to focus
exclusively on infrastructure. Then we have a handful of volunteers who
work on different things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Because our field of responsibility is so wide, the
Infra Team works more in silos than other teams might. We have people
who care deeply about very specific parts of the infrastructure.
Otherwise there is simply too much to know for any one person. It has
been a really nice mix, and it&#x27;s amazing to work with the people on the
team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: As someone who is privileged enough to work
full-time on this and has the time and resources, we try to bear the
bigger burden and create a space that is fun for volunteers to join. We
want them to work on exciting things where there is less risk of
something catching fire, where it&#x27;s easier to come in, do a piece of
work, and then step away. If your personal life takes over for two
weeks, that&#x27;s okay, because someone is there to make sure the servers
and the lights stay on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: A lot of that work lives more on the maintainer
side: the GitHub apps, the bots that help with triage. It&#x27;s less risky
if something goes wrong there. On the user side, if you push the wrong
DNS setting, as someone might have done, you can end up in a situation
where for 30 minutes no one can download crates. And in this case,
&quot;no one&quot; literally means no user worldwide. That&#x27;s not
an experience I want volunteers to have. It&#x27;s extremely stressful and
was ultimately one of the reasons I joined in the first place—there was
a real feeling of burnout from carrying that responsibility.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: It&#x27;s easier to carry that as a full-timer. We have
more time and more ways to manage the stress. I&#x27;m honestly extremely
amazed by what the Infra Team was able to do as volunteers. It&#x27;s
unbelievable what they built and how far they pushed Rust to get to
where we are now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: I think anyone who&#x27;s managing web traffic in 2025 is
talking about traffic skyrocketing due to bots and scrapers for AI or
other purposes. Has that hit the Rust network as well?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, we&#x27;ve definitely seen that. It&#x27;s handled by a
slightly different team, but on the docs.rs side in particular we&#x27;ve
seen crawlers hit us hard from time to time, and that has caused
noticeable service degradation. We&#x27;re painfully aware of the increase
in traffic that comes in short but very intense bursts when crawlers go
wild.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: That introduces a new challenge for our
infrastructure. We need to figure out how to react to that traffic and
protect our services from becoming unavailable to real users who want
to use docs.rs to look up something for their work. On the CDN side,
our providers can usually handle the traffic. It is more often the
application side where things hurt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: On the CDN side we also see people crawling
crates.io, presumably to vacuum up the entire crates ecosystem into an
LLM. Fortunately, over the last two years we&#x27;ve done a lot of work to
make sure crates.io as an application is less affected by these traffic
spikes. Downloads now bypass crates.io entirely and go straight to the
CDN, so the API is not hit by these bursts. In the past, this would
have looked like a DDoS attack, with so many requests from so many
sources that we couldn&#x27;t handle it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We&#x27;ve done a lot of backend work to keep our stack
reliable, but it&#x27;s definitely something that has changed the game over
the last year. We can clearly see that crawlers are much more active
than before.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: That makes sense. I&#x27;m sure Fastly is working on this
as well. Their business has to adapt to be robust to this new internet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Exactly. For example, one of the conversations
we&#x27;re having right now is about docs.rs. It&#x27;s still hosted on AWS
behind CloudFront, but we&#x27;re talking about putting it behind Fastly
because through Fastly we get features like bot protection that can
help keep crawlers out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: This is a good example of how our conversations
have changed in the last six months. At the start of the year I did not
think this would be a topic we would be discussing. We were focused on
other things. For docs.rs we have long-term plans to rebuild the
infrastructure that powers it, and I expected us to spend our energy
there. But with the changes in the industry and everyone trying to
accumulate as much data as possible, our priorities have shifted. The
problems we face and the order in which we tackle them have changed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: And I assume as one of the few paid members of a
mostly volunteer team, you often end up working on the fires, not the
interesting next feature that might be more fun.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: That is true, although it sounds a bit negative to
say I only get to work on fires. Sometimes it feels like that because,
as with any technology stack, there is a lot of maintenance overhead.
We definitely pay that price on the infrastructure side.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Marco, for example, spent time this year going
through all the servers we run, cataloging them, and making sure
they&#x27;re patched and on the latest operating system version. We updated
our Ubuntu machines to the latest LTS. It feels a bit like busy
work—you just have to do it because it&#x27;s important and necessary, but
it&#x27;s not the most exciting project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: On the other hand, when it comes to things like CDN
configuration and figuring out how bot protection features work and
whether they are relevant to us, that is also genuinely interesting
work. It lets us play with new tools vendors provide, and we&#x27;re working
on challenges that the wider industry is facing. How do you deal with
this new kind of traffic? What are the implications of banning bots?
How high is the risk of blocking real users? Sometimes someone just
misconfigures a curl script, and from the outside it looks like they&#x27;re
crawling our site.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: So it&#x27;s an interesting field to work in, figuring
out how we can use new features and address new challenges. That keeps
it exciting even for us full-timers who do more of the
&quot;boring&quot; work. We get to adapt alongside how the world
around us is changing. If there&#x27;s one constant, it&#x27;s change.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Another ripped-from-the-headlines change around this
topic is software supply chain security, and specifically xz-utils and
the conversation around open source security. How much has that changed
the landscape you work in?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: The xz-utils compromise was scary. I don&#x27;t want to
call it a wake-up call, because we&#x27;ve been aware that supply chain
security is a big issue and this was not the first compromise. But the
way it happened felt very unsettling. You saw an actor spend a year and
a half building social trust in an open source project and then using
that to introduce a backdoor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Thinking about that in the context of Rust: every
team in the project talks about how we need more maintainers, how
there&#x27;s too much workload on the people who are currently contributing,
and how Rust&#x27;s growth puts strain on the organization as a whole. We
want to be an open and welcoming project, and right now we also need to
bring new people in. If someone shows up and says, &quot;I&#x27;m
willing to help, please onboard me,&quot; and they stick around for
a year and then do something malicious, we would be susceptible to
that. I don&#x27;t think this is unique to Rust. This is an inherent problem
in open source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Yeah, it&#x27;s antithetical to the culture.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Exactly. So we&#x27;re trying to think through how we,
as a project and as an ecosystem, deal with persistent threat actors
who have the time and resources to play a long game. Paying someone to
work full-time on open source for a year is a very different threat
model than what we used to worry about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I used to joke that the biggest threat to crates.io
was me accidentally pulling the plug on a CDN. I think that has
changed. Today the bigger threat is someone managing to insert
malicious code into our releases, our supply chain, or crates.io
itself. They could find ways to interfere with our systems in ways
we&#x27;re simply not prepared for, where, as a largely volunteer
organization, we might be too slow to react to a new kind of attack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Looking back over the last three years, this shift
became very noticeable, especially after the first year. Traffic was
doubling, Rust usage was going up a lot, and there were news stories
about Rust being used in the Windows kernel, in Android, and in parts
of iOS. Suddenly Rust is everywhere. If you want to attack
&quot;everywhere,&quot; going after Rust becomes attractive.
That definitely puts a target on our back and has changed the game.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I&#x27;m very glad the Rust Foundation has a dedicated
security engineer who has done a lot of threat modeling and worked with
us on infrastructure security. There&#x27;s also a lot of work happening
specifically around the crates ecosystem and preventing supply chain
attacks through crates. Luckily, it&#x27;s not something the Infra side has
to solve alone. But it is getting a lot more attention, and I think it
will be one of the big challenges for the future: how a mostly
volunteer-run project keeps up with this looming threat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: And it is the industry at large. This is not a
unique problem to the Rust package manager. All package registries,
from Python to JavaScript to Nix, deal with this. Is there an
industry-wide conversation about how to help each other out and share
learnings?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, there&#x27;s definitely a lot happening. I have to
smile a bit because, with a lot of empathy but also a bit of relief, we
sometimes share news when another package ecosystem gets compromised.
It is a reminder that it&#x27;s not just us, sometimes it&#x27;s npm this time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We really try to stay aware of what&#x27;s happening in
the industry and in other ecosystems: what new threats or attack
vectors are emerging, what others are struggling with. Sometimes that
is security; sometimes it&#x27;s usability. A year and a half ago, for
example, npm had the &quot;everything&quot; package where
someone declared every package on npm as a dependency, which blew up
the index. We look at incidents like that and ask whether crates.io
would struggle with something similar and whether we need to make
changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: On the security side we also follow closely what
others are doing. In the packaging community, the different package
managers are starting to come together more often to figure out which
problems everyone shares. There is a bit of a joke that we&#x27;re all just
shipping files over the internet. Whether it&#x27;s an npm package or a
crate, ultimately it&#x27;s a bunch of text files in a zip. So from an
infrastructure perspective the problems are very similar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: These communities are now talking more about what
problems PyPI has, what problems crates.io has, what is happening in
the npm space. One thing every ecosystem has seen—even the very
established ones—is a big increase in bandwidth needs, largely
connected to the emergence of AI. PyPI, for example, publishes download
charts, and it&#x27;s striking. Python had steady growth—slightly
exponential, but manageable—for many years. Then a year or two ago you
see a massive hockey stick. People discovered that PyPI was a great
distribution system for their models. There were no file size limits at
the time, so you could publish precompiled GPU models there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: That pattern shows up everywhere. It has kicked off
a new era for packaging ecosystems to come together and ask: in a time
where open source is underfunded and traffic needs keep growing, how
can we act together to find solutions to these shared problems?
crates.io is part of those conversations. It&#x27;s interesting to see how
we, as an industry, share very similar problems across
ecosystems—Python, npm, Rust, and others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: With a smaller, more hobbyist-focused community, you
can have relaxed rules about what goes into your package manager.
Everyone knows the spirit of what you&#x27;re trying to do and you can get
away without a lot of hard rules and consequences. Is the Rust world
going to have to think about much harder rules around package sizes,
allowed files, and how you&#x27;re allowed to distribute things?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Funnily enough, we&#x27;re coming at this from the
opposite direction. Compared to other ecosystems, we&#x27;ve always had
fairly strict limits. A crate can be at most around ten megabytes in
size. There are limits on what kinds of files you can put in there.
Ironically, those limits have helped us keep traffic manageable in this
period.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: At the same time, there is a valid argument that
these limits may not serve all Rust use cases. There are situations
where you might want to include something precompiled in your crate
because it is hard to compile locally, takes a very long time, or
depends on obscure headers no one has. I don&#x27;t think we&#x27;ve reached the
final state of what the crates.io package format should look like.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: That has interesting security implications. When we
talk about precompiled binaries or payloads, we all have that little
voice in our head every time we see a curl | sh command: can I trust
this? The same is true if you download a crate that contains a
precompiled blob you cannot easily inspect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: The Rust Foundation is doing a lot of work and
research here. My colleague Adam, who works on the crates.io team, is
working behind the scenes to answer some of these questions. For
example: what kind of security testing can we do before we publish
crates to make sure they are secure and don&#x27;t contain malicious
payloads? How do we surface this information? How do we tell a
publisher that they included files that are not allowed? And from the
user&#x27;s perspective, when you visit crates.io, how can you judge how
well maintained and how secure a crate is?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Those conversations are happening quite broadly in
the ecosystem. On the Infra side we&#x27;re far down the chain. Ultimately
we integrate with whatever security scanning infrastructure crates.io
builds. We don&#x27;t have to do the security research ourselves, but we do
have to support it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: There&#x27;s still a lot that needs to happen. As
awesome as Rust already is, and as much as I love using it, it&#x27;s
important to remember that we&#x27;re still a very young ecosystem. Python
is now very mature and stable, but it&#x27;s more than 25 years old. Rust is
about ten years old as a stable language. We still have a lot to learn
and figure out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Is the Rust ecosystem running into problems earlier
than other languages because we&#x27;re succeeding at being foundational
software and Rust is used in places that are even more
security-critical than other languages, so you have to hit these hard
problems earlier than the Python world did?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I think that&#x27;s true. Other ecosystems probably had
more time to mature and answer these questions. We&#x27;re operating on a
more condensed timeline. There is also simply more happening now. Open
source has been very successful; it&#x27;s everywhere. That means there are
more places where security is critical.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: So this comes with the success of open source, with
what is happening in the ecosystem at large, and with the industry
we&#x27;re in. It does mean we have less time to figure some things out. On
the flip side, we also have less baggage. We have less technical debt
and fifteen fewer years of accumulated history. That lets us be on the
forefront in some areas, like how a package ecosystem can stay secure
and what infrastructure a 21st century open source project needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Here I really want to call out the Rust Foundation.
They actively support this work: hiring people like Marco and me to
work full-time on infrastructure, having Walter and Adam focus heavily
on security, and as an organization taking supply chain considerations
very seriously. The Foundation also works with other ecosystems so we
can learn and grow together and build a better industry.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Behind the scenes, colleagues constantly work to
open doors for us as a relatively young language, so we can be part of
those conversations and sit at the table with other ecosystems. That
lets us learn from what others have already gone through and also help
shape where things are going. Sustainability is a big part of that: how
do we fund the project long term? How do we make sure we have the human
resources and financial resources to run the infrastructure and support
maintainers? I definitely underestimated how much of my job would be
relationship management and budget planning, making sure credits last
until new ones arrive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Most open core business models give away the thing
that doesn&#x27;t cost much—the software—and charge for the thing that
scales with use—the service. In Rust&#x27;s case, it&#x27;s all free, which is
excellent for adoption, but it must require a very creative perspective
on the business side.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, and that&#x27;s where different forces pull in
opposite directions. As an open source project, we want everyone to be
able to use Rust for free. We want great user experience. When we talk
about downloads, there are ways for us to make them much cheaper, but
that might mean hosting everything in a single geographic location.
Then everyone, including people in Australia, would have to download
from, say, Europe, and their experience would get much worse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Instead, we want to use services that are more
expensive but provide a better experience for Rust users. There&#x27;s a
real tension there. On one side we want to do the best we can; on the
other side we need to be realistic that this costs money.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: I had been thinking of infrastructure as a binary:
it either works or it doesn&#x27;t. But you&#x27;re right, it&#x27;s a slider. You can
pick how much money you want to spend and what quality of service you
get. Are there new technologies coming, either for the Rust Infra Team
or the packaging world in general, to help with these security
problems? New sandboxing technologies or higher-level support?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: A lot of people are working on this problem from
different angles. Internally we&#x27;ve talked a lot about it, especially in
the context of Crater. Crater pulls in all of those crates to build
them and get feedback from the Rust compiler. That means if someone
publishes malicious code, we will download it and build it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: In Rust this is a particular challenge because
build scripts can essentially do anything on your machine. For us that
means we need strong sandboxing. We&#x27;ve built our own sandboxing
framework so every crate build runs in an isolated container, which
prevents malicious code from escaping and messing with the host systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We feel that pain in Crater, but if we can solve it
in a way that isn&#x27;t exclusive to Crater—if it also protects user
machines from the same vulnerabilities—that would be ideal. People like
Walter on the Foundation side are actively working on that. I&#x27;m sure
there are conversations in the Cargo and crates teams as well, because
every team that deals with packages sees a different angle of the
problem. We all have to come together to solve it, and there is a lot
of interesting work happening in that area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: I hope help is coming.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I&#x27;m optimistic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: We have this exponential curve with traffic and
everything else. It seems like at some point it has to taper off.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We&#x27;ll see. Rust is a young language. I don&#x27;t know
when that growth will slow down. I think there&#x27;s a good argument that
it will continue for quite a while as adoption grows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Being at a conference like RustConf, it&#x27;s exciting
to see how the mix of companies has changed over time. We had a talk
from Rivian on how they use Rust in their cars. We&#x27;ve heard from other
car manufacturers exploring it. Rust is getting into more and more
applications that a few years ago would have been hard to imagine or
where the language simply wasn&#x27;t mature enough yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: As that continues, I think we&#x27;ll see new waves of
growth that sustain the exponential curve we currently have, because
we&#x27;re moving into domains that are new for us. It&#x27;s amazing to see who
is talking about Rust and how they&#x27;re using it, sometimes in areas like
space that you wouldn&#x27;t expect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I&#x27;m very optimistic about Rust&#x27;s future. With this
increase in adoption, we&#x27;ll see a lot of interesting lessons about how
to use Rust and a lot of creative ideas from people building with it.
With more corporate adoption, I also expect a new wave of investment
into the ecosystem: companies paying people to work full-time on
different parts of Rust, both in the ecosystem and in the core project.
I&#x27;m very curious what the next ten years will look like, because I
genuinely don&#x27;t know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: The state of Rust right now does feel a bit like the
dog that caught the car and now doesn&#x27;t know what to do with it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Yeah, I think that&#x27;s a good analogy. Suddenly we&#x27;re
in a situation where we realize we haven&#x27;t fully thought through every
consequence of success. It&#x27;s fascinating to see how the challenges
change every year. We keep running into new growing pains where
something that wasn&#x27;t an issue a year ago suddenly becomes one because
growth keeps going up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We&#x27;re constantly rebuilding parts of our
infrastructure to keep up with that growth, and I don&#x27;t see that
stopping soon. As a user, that makes me very excited. With the language
and the ecosystem growing at this pace, there are going to be very
interesting things coming that I can&#x27;t predict today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: For the project, it also means there are real
challenges: financing the infrastructure we need, finding maintainers
and contributors, and creating a healthy environment where people can
work without burning out. There is a lot of work to be done, but it&#x27;s
an exciting place to be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Well, thank you for all your work keeping those
magic Cargo commands I can type into my terminal just working in the
background. If there&#x27;s any call to action from this interview, it&#x27;s
that if you&#x27;re a company using Rust, maybe think about donating to keep
the Infra Team working.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: We always love new Rust Foundation members.
Especially if you&#x27;re a company, that&#x27;s one of the best ways to support
the work we do. Membership gives us a budget we can use either to fund
people who work full-time on the project or to fill gaps in our
infrastructure sponsorship where we don&#x27;t get services for free and
have to pay real money.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: And if you&#x27;re not a company, we&#x27;re always looking
for people to help out. The Infra Team has a lot of Rust-based bots and
other areas where people can contribute relatively easily.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Small scoped bots that you can wrap your head around
and help out with.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Exactly. It is a bit harder on the Infra side
because we can&#x27;t give people access to our cloud infrastructure. There
are areas where it&#x27;s simply not possible to contribute as a volunteer
because you can&#x27;t have access to the production systems. But there is
still plenty of other work that can be done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: Like every other team in the project, we&#x27;re a bit
short-staffed. So when you&#x27;re at conferences, come talk to me or Marco.
We have work to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Well, thank you for doing the work that keeps Rust
running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jan David Nose&lt;/strong&gt;: I&#x27;m happy to.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xander Cesari&lt;/strong&gt;: Awesome. Thank you so much.&lt;/p&gt;
</content>

        <author>
            <name>Pete LeVasseur</name>
        </author>
    </entry>
    <entry>
        <title>Infrastructure announcement Zulip channel</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2025/11/16/infra-announcement-zulip-channel/" type="text/html" title="Infrastructure announcement Zulip channel" />
        <published>2025-11-16T00:00:00+00:00</published>
        <updated>2025-11-16T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2025/11/16/infra-announcement-zulip-channel/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2025/11/16/infra-announcement-zulip-channel/">&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.org/governance/teams/infra/#team-infra&quot;&gt;Infrastructure Team&lt;/a&gt; is working on improving communication for
project infrastructure changes that may impact project team members and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Dev
Desktop&lt;/a&gt; users.&lt;/p&gt;
&lt;p&gt;We are creating a new &lt;strong&gt;low traffic&lt;/strong&gt; Zulip channel, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/533458-t-infra.2Fannouncements&quot;&gt;&lt;code&gt;#infra/announcements&lt;/code&gt;&lt;/a&gt;,
dedicated to infrastructure change announcements. Examples of announcement
topics may include, but are not limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Commissioning/decommissioning of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Dev Desktops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Significant CI changes&lt;/li&gt;
&lt;li&gt;Significant permission changes&lt;/li&gt;
&lt;li&gt;Significant prolonged outages of infrastructure services&lt;/li&gt;
&lt;li&gt;... and other significant events which the Infrastructure Team anticipates may
impact project members.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transient outages will &lt;em&gt;not&lt;/em&gt; be posted to in this announcement channel to
maintain a &lt;strong&gt;high signal-to-noise ratio&lt;/strong&gt; of this announcement channel.&lt;/p&gt;
&lt;p&gt;We will subscribe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All project team members&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gsoc-contributors&lt;/code&gt;, &lt;code&gt;ospp-contributors&lt;/code&gt; and &lt;code&gt;cloud-compute&lt;/code&gt; marker team
members&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;with registered Zulip IDs to the dedicated &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/533458-t-infra.2Fannouncements&quot;&gt;&lt;code&gt;#infra/announcements&lt;/code&gt; zulip
channel&lt;/a&gt;.&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-mute-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/16/infra-announcement-zulip-channel/#fn-mute&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For project team members without registered Zulip IDs, you are encouraged to do
so by updating your &lt;code&gt;people/&amp;lt;handle&amp;gt;.toml&lt;/code&gt; entry in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;rust-lang/team&lt;/a&gt;
repository so that the Infrastructure Team can consistently announce project
infrastructure changes that may impact you.&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-mute&quot;&gt;
&lt;p&gt;Note that you can mute specific topics that do not concern you
specifically. We adopted this &quot;blanket&quot; announce approach because in our
experience, not reaching impacted project team members and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Dev
Desktop&lt;/a&gt; users is significantly more problematic. &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/11/16/infra-announcement-zulip-channel/#fr-mute-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Jieyou Xu</name>
        </author>
    </entry>
    <entry>
        <title>Renaming the default branch of rust-lang/rust</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2025/10/16/renaming-the-default-branch-of-rust-lang-rust/" type="text/html" title="Renaming the default branch of rust-lang/rust" />
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2025/10/16/renaming-the-default-branch-of-rust-lang-rust/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2025/10/16/renaming-the-default-branch-of-rust-lang-rust/">&lt;blockquote&gt;
&lt;p&gt;The rename happened on November 10, 2025. The default branch of &lt;code&gt;rust-lang/rust&lt;/code&gt; is now named &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We will be renaming the default branch of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;rust-lang/rust repository&lt;/a&gt; from &lt;code&gt;master&lt;/code&gt; to &lt;code&gt;main&lt;/code&gt; on 2025-11-10. We&#x27;ve chosen &lt;code&gt;main&lt;/code&gt; specifically as it&#x27;s the default for newly-created repositories &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/&quot;&gt;in GitHub&lt;/a&gt; and the renaming will leverage the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/github/renaming&quot;&gt;GitHub tooling&lt;/a&gt; built to make this easier.&lt;/p&gt;
&lt;p&gt;If you maintain a tool that currently assumes the default branch of &lt;code&gt;rust-lang/rust&lt;/code&gt; is named &lt;code&gt;master&lt;/code&gt;, using &lt;code&gt;HEAD&lt;/code&gt; instead will work both before and after the rename.&lt;/p&gt;
&lt;p&gt;After the rename, contributors will need to run a few git commands in their local checkout of the repository to update. Note that the specific commands that should be executed might differ based on the way you use git and how your local checkout is configured. We provide a guide below that we think should work for most use-cases, but your mileage may vary.&lt;/p&gt;
&lt;p&gt;Please try to follow the guide step-by-step, and if you run into any problems, feel free to ask in this &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Help.20with.20updating.20rust-lang.2Frust.20default.20branch/with/554127642&quot;&gt;Zulip channel&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;renaming-your-fork-s-default-branch&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#renaming-your-fork-s-default-branch&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Renaming your fork&#x27;s default branch&lt;/h2&gt;
&lt;p&gt;If you have a fork of the &lt;code&gt;rust-lang/rust&lt;/code&gt; repository on GitHub, you should first update its default branch name before continuing. If you do not rename it and later run &lt;code&gt;git checkout master&lt;/code&gt;, git will create a &lt;code&gt;master&lt;/code&gt; branch based on your fork&#x27;s outdated &lt;code&gt;master&lt;/code&gt; branch, which can be confusing. Some of the following git commands in this post might also not work as expected.&lt;/p&gt;
&lt;p&gt;Here is how you can update your fork&#x27;s default branch:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;https://github.com/&amp;lt;your-username&amp;gt;/rust/settings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Find the default branch section, click on the &quot;Rename branch&quot; button (pencil icon) and rename the branch to &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id&#x3D;&quot;updating-your-local-git-checkout&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#updating-your-local-git-checkout&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Updating your local git checkout&lt;/h2&gt;
&lt;p&gt;Execute the following git commands in your local checkout of the &lt;code&gt;rust&lt;/code&gt; repository.&lt;/p&gt;
&lt;p&gt;Note that the instructions below make two assumptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have a git remote called &lt;code&gt;upstream&lt;/code&gt; that points to the &lt;code&gt;rust-lang/rust&lt;/code&gt; repository and a remote called &lt;code&gt;origin&lt;/code&gt; that points to your &lt;code&gt;&amp;lt;username&amp;gt;/rust&lt;/code&gt; fork. Please update the commands accordingly if you use a different setup.
&lt;ul&gt;
&lt;li&gt;You can find out which remotes you have configured using the &lt;code&gt;git remote -v&lt;/code&gt; command.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Your local &lt;code&gt;master&lt;/code&gt; branch tracks the default branch of your &lt;em&gt;fork&lt;/em&gt;, not the default branch of the &lt;em&gt;upstream&lt;/em&gt; &lt;code&gt;rust-lang/rust&lt;/code&gt; repository. If that is not the case, execute the commented &lt;code&gt;git branch&lt;/code&gt; command instead.
&lt;ul&gt;
&lt;li&gt;You can find which remote your local &lt;code&gt;master&lt;/code&gt; branch tracks by using &lt;code&gt;git branch -vv --contains master&lt;/code&gt; (the tracked branch should be shown in square brackets).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;shellscript&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; Update the local branch name&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; branch&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt; -&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt;-move&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; master&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; main&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; Update local references to your &amp;lt;username&amp;gt;/rust fork&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; fetch&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; origin&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; branch&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt; -&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt;-set-upstream-to&#x3D;origin/main&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; main&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; #&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; If your main branch tracks your fork&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; remote&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; set-head&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; origin&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt; -&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt;-auto&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; Update local references relevant to the upstream rust-lang/rust repository&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; fetch&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; upstream&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;git branch --set-upstream-to&#x3D;upstream/main main # If your main branch tracks the upstream repo&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; remote&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; set-head&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; upstream&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt; -&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-4&quot;&gt;-auto&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt; Remove old branch names (optional, but recommended)&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; remote&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; prune&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; origin&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;git&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; remote&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; prune&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-13&quot;&gt; upstream&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>

        <author>
            <name>Jake Goulding</name>
        </author>
    </entry>
    <entry>
        <title>Infrastructure Team 2025 Q3 Recap and Q4 Plan</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/" type="text/html" title="Infrastructure Team 2025 Q3 Recap and Q4 Plan" />
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/">&lt;p&gt;As we wrap up the third quarter of 2025, the Infrastructure Team is excited to share what we&#x27;ve accomplished and what&#x27;s coming next.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;q3-2025-accomplishments&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q3-2025-accomplishments&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q3 2025 Accomplishments&lt;/h2&gt;
&lt;h3 id&#x3D;&quot;crates-io-auth-action&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#crates-io-auth-action&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
crates-io-auth-action&lt;/h3&gt;
&lt;p&gt;We created the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/crates-io-auth-action&quot;&gt;&lt;code&gt;crates-io-auth-action&lt;/code&gt;&lt;/a&gt;, which can be used to obtain publish tokens for &lt;code&gt;crates.io&lt;/code&gt;
using &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/docs/trusted-publishing&quot;&gt;trusted publishing&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;critical-data-asset-backup&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#critical-data-asset-backup&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Critical data asset backup&lt;/h3&gt;
&lt;p&gt;One of our most important security improvements this quarter was establishing an out-of-band backup system for Rust&#x27;s critical data assets.
Previously, all of Rust&#x27;s releases and crates were stored exclusively on AWS.
We&#x27;ve now created a backup in Google Cloud Platform that includes all Rust
releases and crates, with daily incremental updates.&lt;/p&gt;
&lt;p&gt;The GCP account is owned by two Rust Foundation staff members who are not AWS administrators
(i.e., they aren&#x27;t admins on the Infrastructure Team).
This makes it significantly more difficult for an attacker to compromise or delete both the primary and backup data, as they would need to breach at least two separate accounts.&lt;/p&gt;
&lt;p&gt;Learn more about this initiative in our
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/blob/3292c4614889ac7427dc4729bd0ad3ee97ab5be7/service-catalog/rust-assets-backup/README.md&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;cdn-alerts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cdn-alerts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
CDN alerts&lt;/h3&gt;
&lt;p&gt;The CDNs for Rust releases and crates are critically important for users of Rust. If either suffers a service disruption, it directly impacts users&#x27; ability to install Rust and build their projects.&lt;/p&gt;
&lt;p&gt;In the past, we had set up integrations for AWS CloudFront and Fastly, our Content Delivery Networks, with Datadog, our monitoring platform. While we had metrics coming into Datadog in real time, we had not set up alerts on top of them.&lt;/p&gt;
&lt;p&gt;In Q3, we created multiple alerts that monitor our CDNs and report when traffic falls below predefined thresholds. These alerts ping the engineering team at the Rust Foundation, which has a runbook for incidents, including notifying the community.&lt;/p&gt;
&lt;p&gt;GitHub issue: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/179&quot;&gt;rust-lang/infra-team#179&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;rust-lang-org-is-now-a-static-website&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-lang-org-is-now-a-static-website&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
&lt;code&gt;rust-lang.org&lt;/code&gt; is now a static website&lt;/h3&gt;
&lt;p&gt;We converted &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://rust-lang.org&quot;&gt;&lt;code&gt;rust-lang.org&lt;/code&gt;&lt;/a&gt; from a Rust web server deployed on Heroku to a static website hosted on GitHub Pages.
This change eliminates several security and operational concerns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhanced security&lt;/strong&gt;: Static sites are inherently more secure and less vulnerable to DDoS attacks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified infrastructure&lt;/strong&gt;: Removes the complexity of managing a web server, which is unnecessary
to serve static content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost reduction&lt;/strong&gt;: GitHub Pages hosting is free, while the Foundation was paying for the previous
Heroku deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved robustness&lt;/strong&gt;: Static hosting is generally more reliable and performant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Manishearth&quot;&gt;Manishearth&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/senekor&quot;&gt;senekor&lt;/a&gt; from the website team for their reviews and support.&lt;/p&gt;
&lt;p&gt;GitHub PR: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/www.rust-lang.org/issues/2174&quot;&gt;rust-lang/www.rust-lang.org#2174&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;github-organization-members-cleanup&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#github-organization-members-cleanup&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GitHub organization members cleanup&lt;/h3&gt;
&lt;p&gt;The Infra Team created an automated process to clean up all GitHub organizations managed by the Rust Project by removing members who are not part of any team within those organizations.
You can learn more in the Inside Rust Blog &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/08/26/removing-inactive-members-from-github-organizations/&quot;&gt;post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/me-diru&quot;&gt;me-diru&lt;/a&gt; for starting the implementation.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;the-new-bors-runs-rust-ci-try-builds&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#the-new-bors-runs-rust-ci-try-builds&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
The new Bors runs Rust CI try builds&lt;/h3&gt;
&lt;p&gt;The Infra and &lt;a rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/homu&quot;&gt;Homu&lt;/a&gt;)
to the new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/bors&quot;&gt;Bors&lt;/a&gt;, written in Rust.&lt;/p&gt;
&lt;p&gt;Starting in July, all try builds (&lt;code&gt;@bors try&lt;/code&gt;) have run exclusively through the new bors.
This is a significant step forward in improving the reliability of our continuous integration infrastructure.&lt;/p&gt;
&lt;p&gt;GitHub PR: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/bors/pull/352&quot;&gt;rust-lang/bors#352&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The GSoC project for implementing merge functionality in Bors has concluded (we will post a blog post in the upcoming weeks that will describe the results of all our GSoC projects). We plan to deploy bors to production and fully replace homu by it in the upcoming months.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improving-rebase-force-push-review-experience-with-a-range-diff-for-github-prs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improving-rebase-force-push-review-experience-with-a-range-diff-for-github-prs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improving rebase force-push review experience with a range-diff for GitHub PRs&lt;/h3&gt;
&lt;p&gt;The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.org/governance/teams/infra/#team-triagebot&quot;&gt;triagebot&lt;/a&gt;
team has worked on implementing an emulated &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://git-scm.com/docs/git-range-diff&quot;&gt;&lt;code&gt;git range-diff&lt;/code&gt;&lt;/a&gt; for GitHub PRs.&lt;/p&gt;
&lt;p&gt;The feature is enabled on &lt;code&gt;rust-lang/rust&lt;/code&gt;&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-range-diff-enable-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/#fn-range-diff-enable&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; and automatically posts a comment when a force-push with a rebase is detected, containing a link to the comparison.&lt;/p&gt;
&lt;p&gt;An example of the same push shown by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/compare/0c8f814fa3d35c1aa7f8ce933e88c82d94a6cd39..304c51d7eae3&quot;&gt;GitHub&lt;/a&gt; and shown by our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://triage.rust-lang.org/gh-range-diff/rust-lang/rust/0c8f814fa3d35c1aa7f8ce933e88c82d94a6cd39..304c51d7eae38698ae90e3b40afc6300aea76f25&quot;&gt;&lt;code&gt;range-diff&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Experimental.20range-diff.20for.20force-push/near/534646361&quot;&gt;#t-compiler &amp;gt; Experimental range-diff for force-push&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improving-reviewing-experience-on-github-prs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improving-reviewing-experience-on-github-prs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improving reviewing experience on GitHub PRs&lt;/h3&gt;
&lt;p&gt;Following the &lt;code&gt;range-diff&lt;/code&gt; feature the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.org/governance/teams/infra/#team-triagebot&quot;&gt;triagebot&lt;/a&gt;
team has worked on improving the experience of reviewing GitHub PRs in particular focusing on changes since the last review.&lt;/p&gt;
&lt;p&gt;This new feature is enabled on &lt;code&gt;rust-lang/rust&lt;/code&gt;&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-changes-since-enable-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/#fn-changes-since-enable&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; and automatically adds a comparison link to every top-level review comment.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;support-optional-ci-jobs&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#support-optional-ci-jobs&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Support optional CI jobs&lt;/h3&gt;
&lt;p&gt;Until now, CI only had jobs that ran on PRs or when a merge to the default branch was attempted (i.e., the auto build).
We added support for CI jobs that run only on demand, allowing contributors to run these tests on PRs whenever they are concerned about breaking certain parts of the codebase. This is useful for testing tier 2 and tier 3 targets in CI, whose tests don’t always run on CI by default.&lt;/p&gt;
&lt;p&gt;This feature was requested in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Testing.20for.20T2.2FT3.20targets/with/526715751&quot;&gt;#t-infra &amp;gt; Testing for T2/T3 targets&lt;/a&gt; and documented in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/143283&quot;&gt;rust-lang/rust#143283&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;automating-subtree-synchronization&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#automating-subtree-synchronization&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Automating subtree synchronization&lt;/h3&gt;
&lt;p&gt;We have implemented a new tool called &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/josh-sync&quot;&gt;&lt;code&gt;rustc-josh-sync&lt;/code&gt;&lt;/a&gt;, which makes it easier to synchronize changes between &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://josh-project.github.io/josh/intro.html&quot;&gt;Josh&lt;/a&gt; subtrees and the main &lt;code&gt;rust-lang/rust&lt;/code&gt; repository. We have migrated the existing Josh subtrees (such as &lt;code&gt;miri&lt;/code&gt; or &lt;code&gt;rust-analyzer&lt;/code&gt;) to this tool, which enables us to perform subtree synchronizations in a more unified way.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;implementing-support-for-multiple-machines-for-rustc-perf&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implementing-support-for-multiple-machines-for-rustc-perf&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Implementing support for multiple machines for rustc-perf&lt;/h3&gt;
&lt;p&gt;We made a lot of progress with the Rust project goal for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h1/perf-improvements.html&quot;&gt;improving&lt;/a&gt; our compiler benchmark suite. The benchmark suite is now able to run benchmarks on multiple machines (called collectors) in parallel. This will enable us to reduce the latency of waiting for benchmark results, and also allow us to benchmark the compiler on different architectures than just x64 (e.g. ARM) and in theory even on different OSes than just Linux (e.g. Windows). The project goal has been carried over to the next goal period. We plan to deploy the new system into production in the upcoming months.&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;We&#x27;re updating our repositories to use more inclusive naming conventions. This quarter, we renamed the default branches from &lt;code&gt;master&lt;/code&gt; to &lt;code&gt;main&lt;/code&gt; in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-dev-guide&quot;&gt;&lt;code&gt;rustc-dev-guide&lt;/code&gt;&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-dev-guide/pull/2570&quot;&gt;PR&lt;/a&gt;), &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/www.rust-lang.org&quot;&gt;&lt;code&gt;www.rust-lang.org&lt;/code&gt;&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/www.rust-lang.org/pull/2205&quot;&gt;PR&lt;/a&gt;) and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/blog.rust-lang.org&quot;&gt;&lt;code&gt;blog.rust-lang.org&lt;/code&gt;&lt;/a&gt; (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/blog.rust-lang.org/pull/1689/&quot;&gt;PR&lt;/a&gt;) repositories.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/senekor&quot;&gt;senekor&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tshepang&quot;&gt;tshepang&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/carols10cents&quot;&gt;carols10cents&lt;/a&gt;, and everyone else involved.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;talks-and-interviews&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#talks-and-interviews&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Talks and interviews&lt;/h3&gt;
&lt;p&gt;At RustConf 2025:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jdno&quot;&gt;JD&lt;/a&gt; was interviewed about the Rust Infrastructure team. You can find the video &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.youtube.com/watch?v&#x3D;r7i-2wHtNjw&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcoieni&quot;&gt;Marco&lt;/a&gt; presented the talk &lt;em&gt;&quot;How We Made the Rust CI 75% Cheaper&quot;&lt;/em&gt;. You can find the video &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.youtube.com/watch?v&#x3D;Gzk4uG-YzJI&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;q4-2025-plans&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#q4-2025-plans&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Q4 2025 Plans&lt;/h2&gt;
&lt;p&gt;Looking ahead to Q4, we have planned the following initiatives:&lt;/p&gt;
&lt;h3 id&#x3D;&quot;hire-a-new-rust-foundation-infrastructure-engineer&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hire-a-new-rust-foundation-infrastructure-engineer&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hire a new Rust Foundation infrastructure engineer&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jdno&quot;&gt;JD&lt;/a&gt;, one of the two Infrastructure Engineers employed full-time by the Rust Foundation, resigned to start his own company.
JD is staying on the team as a volunteer, but he will be able to dedicate less time than before.
This quarter, we want to hire a new Infrastructure Engineer to restore the previous capacity of the team.
If you are interested, check the Rust Foundation &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustfoundation.org/careers/&quot;&gt;careers page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We would like to take this opportunity to thank JD for his three years of
invaluable contributions and support to the Rust Infrastructure Team and the Rust community.
To learn more about his transition, you can read his &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.jdno.dev/leaving-the-rust-foundation/&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;docs-rs-infrastructure-modernization&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#docs-rs-infrastructure-modernization&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
docs.rs infrastructure modernization&lt;/h3&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://docs.rs&quot;&gt;docs.rs&lt;/a&gt; is still deployed to a single, manually provisioned and managed EC2 instance.
We want to collaborate with the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt; team to understand what kind of infrastructure would best fit &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt; and to provision it, making &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt; more robust and scalable.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;external-hardware-ci-policy&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#external-hardware-ci-policy&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
External hardware CI policy&lt;/h3&gt;
&lt;p&gt;Today, we run CI only on AWS and GitHub-hosted runners, which are operated by us.
Unfortunately, these cloud providers don&#x27;t support all Rust &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/rustc/platform-support.html&quot;&gt;targets&lt;/a&gt;, and emulation has limitations.
To raise the tier of some of these targets,
some organizations have offered to run the Rust CI on their own hardware.&lt;/p&gt;
&lt;p&gt;We want to write a policy to define the requirements that the external hardware and the entity operating it must satisfy.
For example, if the hardware has an uptime of 50%, we can&#x27;t run CI jobs on it, because it would block the development of Rust.&lt;/p&gt;
&lt;p&gt;GitHub issue: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/infra-team/issues/201&quot;&gt;rust-lang/infra-team#201&lt;/a&gt;&lt;/p&gt;
&lt;h3 id&#x3D;&quot;gcp-dev-desktops&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#gcp-dev-desktops&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
GCP Dev Desktops&lt;/h3&gt;
&lt;p&gt;Google donated some GCP credits to the Rust Foundation for next year.
We plan to use part of the credits to spin up one or two dev desktops in GCP to provide more VMs to contributors working on Rust.&lt;/p&gt;
&lt;p&gt;Note that these machines can be discontinued in the future based on funding.&lt;/p&gt;
&lt;p&gt;Learn more about Dev Desktops in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/infra/docs/dev-desktop.html&quot;&gt;Rust Forge&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;conferences&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#conferences&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Conferences&lt;/h3&gt;
&lt;p&gt;Some members of the Infrastructure team will attend &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.eurorust.eu/&quot;&gt;EuroRust&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustlab.it/&quot;&gt;RustLab&lt;/a&gt;.
Feel free to reach out to us if you want to meet in person!&lt;/p&gt;
&lt;p&gt;In particular, on November 4th, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcoieni&quot;&gt;Marco&lt;/a&gt; is giving a talk at RustLab titled &lt;em&gt;“1.5 years in the infra team: what we cooked and what’s next”&lt;/em&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 rel&#x3D;&quot;external&quot; 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 rel&#x3D;&quot;external&quot; 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;
&lt;section class&#x3D;&quot;footnotes&quot;&gt;
&lt;ol class&#x3D;&quot;footnotes-list&quot;&gt;
&lt;li id&#x3D;&quot;fn-range-diff-enable&quot;&gt;
&lt;p&gt;See the docs on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/range-diff.html&quot;&gt;Forge&lt;/a&gt;. &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/#fr-range-diff-enable-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id&#x3D;&quot;fn-changes-since-enable&quot;&gt;
&lt;p&gt;See the docs on the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/triagebot/review-changes-since.html&quot;&gt;Forge&lt;/a&gt;. &lt;a href&#x3D;&quot;https://blog.rust-lang.org/inside-rust/2025/10/16/infrastructure-team-q3-recap-and-q4-plan/#fr-changes-since-enable-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Marco Ieni</name>
        </author>
    </entry>
    <entry>
        <title>Removing inactive members from our GitHub organizations</title>
        <link rel="alternate" href="https://blog.rust-lang.org/inside-rust/2025/08/26/removing-inactive-members-from-github-organizations/" type="text/html" title="Removing inactive members from our GitHub organizations" />
        <published>2025-08-26T00:00:00+00:00</published>
        <updated>2025-08-26T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/inside-rust/2025/08/26/removing-inactive-members-from-github-organizations/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/inside-rust/2025/08/26/removing-inactive-members-from-github-organizations/">&lt;p&gt;The Infrastructure Team is cleaning up GitHub organizations managed by the Rust Project
(&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang&quot;&gt;rust-lang&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-dev-tools&quot;&gt;rust-dev-tools&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang-deprecated&quot;&gt;rust-lang-deprecated&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang-nursery&quot;&gt;rust-lang-nursery&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-analyzer&quot;&gt;rust-analyzer&lt;/a&gt;)
by removing members who are not part of any team within those organizations.&lt;/p&gt;
&lt;p&gt;If you are currently a member of one of these GitHub organizations, you might receive a removal email from GitHub that notifies you that you have been removed from some of them.
If you are currently an active Rust team member, then do not worry! Your access to the &lt;code&gt;rust-lang&lt;/code&gt; organization won&#x27;t be affected by this, and at most we will remove you from some of the legacy organizations that are no longer in active use.&lt;/p&gt;
&lt;p&gt;If you contributed to Rust in the past and you are no longer an active contributor, then we will likely remove you from all of the mentioned GitHub organizations.
We understand that some people publicly displayed their membership in the &lt;code&gt;rust-lang&lt;/code&gt; organization as a recognition of past contributions.
As an alternative, your contributor status is shown on the official &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://www.rust-lang.org/governance#teams&quot;&gt;teams page&lt;/a&gt; of the Rust website, which includes an alumni section for each team.
Please reach out if your past team memberships are not reflected on this page. Also, we want to take this opportunity to thank you for the time you spent in the past making Rust what it is today!&lt;/p&gt;
&lt;p&gt;If you have been removed from an organization you think you should be part of, or you have any other questions, please reach out on our chat platform, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/removing.20inactive.20members.20from.20the.20org&quot;&gt;Zulip&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;archived-teams&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#archived-teams&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Archived teams&lt;/h2&gt;
&lt;p&gt;Unfortunately, archived teams are not shown on the website&#x27;s governance page, so previous Rust Project
members who were part of archived teams only won&#x27;t be listed in any alumni section.&lt;/p&gt;
&lt;p&gt;We created a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/www.rust-lang.org/issues/2181&quot;&gt;GitHub issue&lt;/a&gt; to track this,
but in the meantime we would like to thank these contributors in this post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/alexheretic&quot;&gt;alexheretic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/am-1t&quot;&gt;am-1t&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/arora-aman&quot;&gt;arora-aman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/autozimu&quot;&gt;autozimu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/avadacatavra&quot;&gt;avadacatavra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/azhng&quot;&gt;azhng&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/azuremarker&quot;&gt;azuremarker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/basil-cow&quot;&gt;basil-cow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/bawerd&quot;&gt;bawerd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/benlewis-seequent&quot;&gt;benlewis-seequent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/chrispardy&quot;&gt;chrispardy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/comex&quot;&gt;comex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/detrumi&quot;&gt;detrumi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/djcarpe&quot;&gt;djcarpe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gnunicorn&quot;&gt;gnunicorn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/hameerabbasi&quot;&gt;hameerabbasi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/hdhoang&quot;&gt;hdhoang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/hkmatsumoto&quot;&gt;hkmatsumoto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/inquisitivecrystal&quot;&gt;inquisitivecrystal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jamespatrickgill&quot;&gt;jamespatrickgill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jasonwilliams&quot;&gt;jasonwilliams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jduchniewicz&quot;&gt;jduchniewicz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jechasteen&quot;&gt;jechasteen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jenniferwills&quot;&gt;jenniferwills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/logmosier&quot;&gt;logmosier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lucasbullen&quot;&gt;lucasbullen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/markmccaskey&quot;&gt;markmccaskey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mstallmo&quot;&gt;mstallmo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mystor&quot;&gt;mystor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nagashi&quot;&gt;nagashi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nathanwhit&quot;&gt;nathanwhit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/null-sleep&quot;&gt;null-sleep&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/o0ignition0o&quot;&gt;o0ignition0o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/pcwalton&quot;&gt;pcwalton&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/peschkaj&quot;&gt;peschkaj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/qmx&quot;&gt;qmx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/roxelo&quot;&gt;roxelo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/seanchen1991&quot;&gt;seanchen1991&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/stupremee&quot;&gt;stupremee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tamuhey&quot;&gt;tamuhey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/valgrimm&quot;&gt;valgrimm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/vlad20012&quot;&gt;vlad20012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/whitequark&quot;&gt;whitequark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zaharidichev&quot;&gt;zaharidichev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;hidden-teams&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#hidden-teams&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Hidden teams&lt;/h2&gt;
&lt;p&gt;Some Rust teams, such as marker teams and some working groups are not shown in
the website&#x27;s governance page.&lt;/p&gt;
&lt;p&gt;We would like to thank the contributors who only belong to these teams in this
post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adamgreig&quot;&gt;adamgreig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/AlexEne&quot;&gt;AlexEne&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/andre-richter&quot;&gt;andre-richter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/AngelOnFira&quot;&gt;AngelOnFira&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Dajamante&quot;&gt;Dajamante&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/eldruin&quot;&gt;eldruin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/hargoniX&quot;&gt;hargoniX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/korken89&quot;&gt;korken89&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kvark&quot;&gt;kvark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/levex&quot;&gt;levex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/luqmana&quot;&gt;luqmana&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Nashenas88&quot;&gt;Nashenas88&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/retep998&quot;&gt;retep998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ryankurte&quot;&gt;ryankurte&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/thejpster&quot;&gt;thejpster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/therealprof&quot;&gt;therealprof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tromey&quot;&gt;tromey&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id&#x3D;&quot;members-without-contact&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#members-without-contact&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Members without contact&lt;/h2&gt;
&lt;p&gt;Some past members are not listed in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;rust-lang/team&lt;/a&gt; repo, so we
are unable to add them to the alumni sections and list them in the website.&lt;/p&gt;
&lt;p&gt;If you are one of these members and want to be listed in the alumni sections of your previous teams,
please open a PR in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/team&quot;&gt;rust-lang/team&lt;/a&gt; repo.&lt;/p&gt;
&lt;p&gt;We would like to thank these contributors in this post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/aajtodd&quot;&gt;aajtodd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/aatxe&quot;&gt;aatxe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/adrq&quot;&gt;adrq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ALCC01&quot;&gt;ALCC01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/alecmocatta&quot;&gt;alecmocatta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/andrewtj&quot;&gt;andrewtj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/anp&quot;&gt;anp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/anxiousmodernman&quot;&gt;anxiousmodernman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/aravind-pg&quot;&gt;aravind-pg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/arazabishov&quot;&gt;arazabishov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ashfordneil&quot;&gt;ashfordneil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/autodidaddict&quot;&gt;autodidaddict&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/azdle&quot;&gt;azdle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/blitzerr&quot;&gt;blitzerr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/bluss&quot;&gt;bluss&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/brendanzab&quot;&gt;brendanzab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cassiersg&quot;&gt;cassiersg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/championshuttler&quot;&gt;championshuttler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/chrisvittal&quot;&gt;chrisvittal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CryZe&quot;&gt;CryZe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dhuseby&quot;&gt;dhuseby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dibsonmuad&quot;&gt;dibsonmuad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Diggsey&quot;&gt;Diggsey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dirtybit&quot;&gt;dirtybit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dustypomerleau&quot;&gt;dustypomerleau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dyxushuai&quot;&gt;dyxushuai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ehsanmok&quot;&gt;ehsanmok&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ELD&quot;&gt;ELD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/emberian&quot;&gt;emberian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ereichert&quot;&gt;ereichert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/fairingrey&quot;&gt;fairingrey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/flaper87&quot;&gt;flaper87&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/fmckeogh&quot;&gt;fmckeogh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gaurikholkar-zz&quot;&gt;gaurikholkar-zz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gavento&quot;&gt;gavento&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GeertVL-zz&quot;&gt;GeertVL-zz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gereeter&quot;&gt;gereeter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/giannicic&quot;&gt;giannicic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/glandium&quot;&gt;glandium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gruberb&quot;&gt;gruberb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/gsollazzo&quot;&gt;gsollazzo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/h1467792822&quot;&gt;h1467792822&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Haggus&quot;&gt;Haggus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/hrvolapeter&quot;&gt;hrvolapeter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ibabushkin&quot;&gt;ibabushkin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/inejge&quot;&gt;inejge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jbcden&quot;&gt;jbcden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jdm&quot;&gt;jdm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jethrogb&quot;&gt;jethrogb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jkelleyrtp&quot;&gt;jkelleyrtp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jkordish&quot;&gt;jkordish&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jkozlowski&quot;&gt;jkozlowski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoeyEremondi&quot;&gt;JoeyEremondi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JoshMcguigan&quot;&gt;JoshMcguigan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jroesch&quot;&gt;jroesch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jrozner&quot;&gt;jrozner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/JuanPotato&quot;&gt;JuanPotato&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/justahero&quot;&gt;justahero&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/khaledkbadr&quot;&gt;khaledkbadr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/KiChjang&quot;&gt;KiChjang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kiljacken&quot;&gt;kiljacken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kjeremy&quot;&gt;kjeremy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kleimkuhler&quot;&gt;kleimkuhler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/koute&quot;&gt;koute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kulshrax&quot;&gt;kulshrax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kupiakos&quot;&gt;kupiakos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/leoyvens&quot;&gt;leoyvens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lf&quot;&gt;lf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lilyball&quot;&gt;lilyball&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/listochkin&quot;&gt;listochkin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lloydmeta&quot;&gt;lloydmeta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Lubits&quot;&gt;Lubits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/marcusklaas&quot;&gt;marcusklaas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/memoryruins&quot;&gt;memoryruins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Michael-F-Bryan&quot;&gt;Michael-F-Bryan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mikhail-m1&quot;&gt;mikhail-m1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mitsuhiko&quot;&gt;mitsuhiko&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nbp&quot;&gt;nbp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/NikVolf&quot;&gt;NikVolf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/nox&quot;&gt;nox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/orenwf&quot;&gt;orenwf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/orium&quot;&gt;orium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/pambihira&quot;&gt;pambihira&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/pepyakin&quot;&gt;pepyakin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/PramodBisht&quot;&gt;PramodBisht&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rholderfield&quot;&gt;rholderfield&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ritiek&quot;&gt;ritiek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rolftimmermans&quot;&gt;rolftimmermans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sanxiyn&quot;&gt;sanxiyn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sapphire-arches&quot;&gt;sapphire-arches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/soniasingla&quot;&gt;soniasingla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/stokhos&quot;&gt;stokhos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/strega-nil&quot;&gt;strega-nil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sunjay&quot;&gt;sunjay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tinaun&quot;&gt;tinaun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tomaka&quot;&gt;tomaka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/totsteps&quot;&gt;totsteps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/treiff&quot;&gt;treiff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tynril&quot;&gt;tynril&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/uberjay&quot;&gt;uberjay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/vadimcn&quot;&gt;vadimcn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Veetaha&quot;&gt;Veetaha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/wain303009&quot;&gt;wain303009&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/wirelessringo&quot;&gt;wirelessringo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/xmonader&quot;&gt;xmonader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Xylakant&quot;&gt;Xylakant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Yarn&quot;&gt;Yarn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>

        <author>
            <name>Marco Ieni</name>
        </author>
    </entry>
    <entry>
        <title>Demoting x86_64-apple-darwin to Tier 2 with host tools</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2025/08/19/demoting-x86-64-apple-darwin-to-tier-2-with-host-tools/" type="text/html" title="Demoting x86_64-apple-darwin to Tier 2 with host tools" />
        <published>2025-08-19T00:00:00+00:00</published>
        <updated>2025-08-19T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2025/08/19/demoting-x86-64-apple-darwin-to-tier-2-with-host-tools/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2025/08/19/demoting-x86-64-apple-darwin-to-tier-2-with-host-tools/">&lt;p&gt;In Rust 1.90.0, the target &lt;code&gt;x86_64-apple-darwin&lt;/code&gt; will be demoted to Tier 2 with host tools.
The standard library and the compiler will continue to be built and distributed,
but automated tests of these components are no longer guaranteed to be run.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;background&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#background&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Background&lt;/h2&gt;
&lt;p&gt;Rust has supported macOS for a long time,
with some amount of support dating back to Rust 0.1 and likely before that.
During that time period,
Apple has changed CPU architectures from x86 to x86_64 and now to Apple silicon,
ultimately announcing the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://en.wikipedia.org/wiki/Mac_transition_to_Apple_silicon#Timeline&quot;&gt;end of support&lt;/a&gt; for the x86_64 architecture.&lt;/p&gt;
&lt;p&gt;Similarly,
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down&quot;&gt;GitHub has announced&lt;/a&gt; that they will no longer provide free macOS x86_64 runners for public repositories.
The Rust Project uses these runners to execute automated tests for the &lt;code&gt;x86_64-apple-darwin&lt;/code&gt; target.
Since the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/stable/rustc/target-tier-policy.html&quot;&gt;target tier policy&lt;/a&gt; requires that Tier 1 platforms must run tests in CI,
the &lt;code&gt;x86_64-apple-darwin&lt;/code&gt; target must be demoted to Tier 2.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;what-changes&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#what-changes&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
What changes?&lt;/h2&gt;
&lt;p&gt;Starting with Rust 1.90.0, &lt;code&gt;x86_64-apple-darwin&lt;/code&gt; will be Tier 2 with host tools.
For users,
nothing will change immediately;
builds of both the standard library and the compiler will still be distributed by the Rust Project for use via &lt;code&gt;rustup&lt;/code&gt; or alternative installation methods.&lt;/p&gt;
&lt;p&gt;Over time,
this target will likely accumulate bugs faster due to reduced testing.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;future&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#future&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Future&lt;/h2&gt;
&lt;p&gt;If the &lt;code&gt;x86_64-apple-darwin&lt;/code&gt; target causes concrete problems,
it may be demoted further.
No plans for further demotion have been made yet.&lt;/p&gt;
&lt;p&gt;For more details on the motivation of the demotion, see &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rfcs/3841-demote-x86_64-apple-darwin.html&quot;&gt;RFC 3841&lt;/a&gt;.&lt;/p&gt;
</content>

        <author>
            <name>Jake Goulding</name>
        </author>
    </entry>
</feed>
