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.
You can find the previous blog post of this series here.
Q4 2025 Accomplishments
More settings configured in the team repo
The Infrastructure Team always tries to move manually configured settings into Infrastructure as Code (IaC). IaC has various benefits:
- It helps teams self-serve, since they can inspect their configuration even without admin privileges and request changes via pull requests.
- 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.
GitHub environments
All GitHub environments for Rust Project repositories are now defined in the team repo.
Here's an example from the bors repository file:
[]
= ["main"]
[]
= ["main"]
Thanks to amustaque97 for his great work on the GitHub environments issue!
Trusted publishing
All crates owned by the Rust Project that use crates.io trusted publishing
now configure it as IaC via the team repo.
Here's an example from the measureme repository file:
[[]]
= ["analyzeme", "decodeme", "measureme"]
= "publish.yml"
= "publish"
The work to configure trusted publishing for all the Rust Project crates will be easier now.
Crates.io index and docs.rs served via Fastly
The crates.io index and the docs.rs website are now served by the Fastly CDN.
We made this change because Fastly donates its CDN to us, and we want to use our AWS credits for other resources.
For docs.rs, we also enabled Fastly shielding, which adds an additional caching layer to reduce the load on our origin server. Here'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:

Note that the crates.io index is still partially served by CloudFront, and we can configure how much traffic goes to each CDN.
Thanks to the crates.io and docs.rs teams for helping with this!
The new Bors is used to merge Rust compiler pull requests
The Infra and Bors teams continued working on migrating the Rust CI from the legacy Bors (Homu) to the new Bors, written in Rust.
We have now enabled the new bot to merge rust-lang/rust PRs, completing the migration off Homu and improving the reliability of our continuous integration infrastructure 🎉.
We would like to thank all contributors who contributed to the development of bors, in particular Võ Hoà ng Long and Sakibul Islam.
rustc-perf benchmarks are now executed in parallel
We made progress with the Project Goal 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.
In 2026, we plan to make further improvements to the benchmarking suite, such as enabling benchmarking on other hardware architectures.
Repository default branch renames
The following repositories have renamed their default branch from master to main:
annotate-snippets-rsar_archive_writercmake-rscompiler-builtinsdocs.rsinfra-teammoderation-teamrustrustfmtrustuprustwidestdarchteamthis-week-in-rust
Hired a new teammate
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.
Thanks to Kobzol for helping with the hiring process!
Triagebot enhancements
Triagebot is our trusty bot incessantly processing workflows on GitHub and on our Zulip chat.
We implemented several notable changes in Q4 2025.
Triagebot label command now supports aliases
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.
Example:
@rustbot label +regression-untriaged +I-prioritize +needs-repro
could become an alias:
@rustbot label regression-needs-triaging
Thanks to @apiraino for implementing the feature in #2216 (documentation).
Turn automatic backport nominations into suggestions
We now offer project teams a streamlined workflow for backports to the stable/beta release channels. Patches fixing regressions can be manually "nominated" 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).
Now teams can configure the triagebot to:
- Automatically nominate patches fixing
P-high/P-criticalregressions occurred in the beta/stable release channels. - Automatically open topics in our Zulip chat to evaluate backports asynchronously (see the compiler and rustdoc channels). During the triage meeting, the topic is quickly skimmed and a decision can be taken faster.
Thanks to @apiraino for implementing the feature in #2191 (documentation).
New Triagebot commands: r? me and @rustbot reroll
Two new triagebot features have been added to improve reviewer assignment.
First, @Urgau implemented support for using r? me as a shorthand for self-assignment in #2218. This provides a convenient alternative to manually typing r? @username when assigning a pull request to yourself.
Second, @Kobzol added the new @rustbot reroll command in #2219. This new command re-runs the automatic reviewer assignment logic normally triggered when a PR is first opened, using the latest diff and owner map.
[no-mentions] handler removed from Triagebot
We have removed the [no-mentions] handler from triagebot, as it is no longer needed. This handler was originally used to ask users to avoid @-mentions in commit messages to avoid triggering user notifications.
Thanks to GitHub’s recent change, which disables notifications for mentions in commits, this workaround is no longer necessary. We appreciate GitHub for making this improvement and simplifying the workflow for everyone involved.
Highlighting of log lines in Triagebot’s GHA log viewer
Triagebot’s GitHub Actions log viewer now supports highlighting selected log lines, similar to GitHub’s own code highlighting feature.
This improvement was implemented by @Urgau in #2234. 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.
Here’s an example of the new functionality in action:

Triagebot [mentions] now supports glob patterns
The [mentions] configuration in triagebot now supports glob pattern matching.
This improvement was implemented by @Urgau in #2244. With this change, it’s now possible to group related paths under a single rule.
For example, it is now possible to write:
[]
= ["@ghost"]
instead of maintaining two separate entries for each directory.
Internal Sites team takes its first action
The new t-internal-sites team, responsible for maintaining and supporting the Rust project’s internal websites such as the Forge and the RFCs site, has taken its first action.
The team began by addressing stale non-RFC pull requests which had been stale due to the lack of ownership before t-internal-sites introduction.
Q1 2026 Plans
Finish Q4 2025 goals
In Q4 2025, we didn't manage to finish all our goals, so we will continue working on them in Q1 2026:
- docs.rs infrastructure modernization: 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.
- External hardware CI policy: publish requirements for running Rust CI on external hardware.
- GCP Dev Desktops: spin up one or two dev desktops in GCP.
You can read more about these goals in our Q4 2025 plan.
Account and Access Management
Finish the work started in rust-lang/infra-team#64 by setting up a Google Workspace for the Rust Project for automated account and access management using SAML.
Move to GitHub Rulesets
To have more flexibility and configurability, we want to migrate from branch protection rules to GitHub Rulesets across all Rust Project repositories.
The branch protection rules are already defined as code in the team repo, so we will
need to update the IaC automation to create rulesets instead of branch protection rules.
This would also allow us to configure merge queues as IaC, which is currently not possible (see rust-lang/team#1735).
Join us!
If you're interested in contributing to Rust's infrastructure, have a look at the infra-team repository to learn more about us and reach out on Zulip.
We are always looking for new contributors!