Files
Mike Hommey c53dfb48f9 Bug 2058512 - Update toolchain update policy documents to account for the 2-week release cycles. r=firefox-build-system-reviewers,ahochheiden
We had a "freeze" policy for toolchains somehow only documented in the
Rust update policy. It used to be tied to the Soft-freezes, which were
discontinued in February, but extended through the use of the string
freeze dates.

The general rule was that toolchains ought to be frozen 7 days before
the soft-freeze, which itself was 4-5 days before the merge day. That
worked out fine when release cycles were 4 weeks, because it left a
window of more than 2 weeks to update toolchains.

But with 2-week release cycles, the same rule would leave us with only
a 2-3 day window, which is too short.

So we take a middle ground, whereby we make the new toolchain freeze
last 7 days until merge day, leaving us with a 7-day window to update
toolchains within the 2-week release cycle framework.

While here, remove the historic version data for rust releases, keeping
the relevant versions for the latest release and still maintained ESRs,
and update with the new release schedule.

Differential Revision: https://phabricator.services.mozilla.com/D314661
2026-07-29 10:00:48 +00:00

4.2 KiB

Rust Update Policy

We document here the decision making and planning around when we update the Rust toolchains used and required to build Firefox.

This allows contributors to know when new features will be usable, and downstream packagers to know what toolchain will be required for each Firefox release. Both benefit from the predictability of a schedule.

Policy

Official builds

We ship official stable Firefox with a stable Rust.

As a general rule, we update the Rust version used to build Firefox Nightly soon after its release, unless we're in a toolchain freeze period, which starts 7 days before a merge day. In that case, we wait for the next Nightly train.

We don't upgrade the Rust version in the beta or release branches of Firefox.

The following exceptions apply:

  • We may use a Rust version from the Rust beta or nightly channels for new platforms (e.g. we did so for Android, arm64 Windows and arm64 macOS), and later upgrade when that Rust version becomes stable (we may even do so on the Firefox beta branch).

  • We may skip the update (or backout the update) if major problems are encountered (typically, we've had to do so because of build problems, crash reporting bustage, or performance issues).

Developer builds

Local developer builds use whatever Rust toolchain is available on the system.

Someone building Firefox can maintain the latest stable Rust with the rustup or mach bootstrap tools, or try other variations.

Minimum Supported Rust Version

We will update the Minimum Supported Rust Version (MSRV) when required.

The MSRV will generally remain unchanged, until a newer version is required by some code.

When that happens, we'll prefer to update the MSRV to the strict minimum required at that moment (e.g. if we require version 1.47.0, the currently used Rust version is 1.51.0, and a crate needs 1.50.0, we'll prefer to update the MSRV to 1.50.0 rather than 1.51.0).

The MSRV won't be updated to a version of Rust that hasn't been used for Firefox Nightly for at least 14 days.

We expect ESR releases will keep their MSRV, so backporting security fixes may require Rust compatibility work.

Rationale

Historically, the Rust ecosystem quickly required new features provided by new Rust compilers, which made it necessary to update the minimum supported version quite often, and as such, a scheduled update was deemed a better trade-off.

Fast-forward several years, and new Rust compiler releases more rarely sport ground-breaking new features, which has reduced the necessity to update quite significantly.

On the flip side, in some instances, we have had to stick to specific versions of the Rust compiler for extended periods of time because of e.g. regressions, going against the schedule.

Schedule

Here are the Rust versions for each Firefox version.

  • The "Uses" column indicates the version of Rust used to build releases shipped to users.

  • The "MSRV" column indicates the minimum supported Rust version to build the sources.

Firefox Version Uses MSRV Rust "Uses" release date Toolchain Freeze Firefox release date
Firefox 115 Rust 1.69.0 1.66.0 2023 April 20 2023 July 4
Firefox 140 Rust 1.86.0 1.82.0 2025 April 3 2025 June 24
Firefox 153 Rust 1.94.0 1.90.0 2026 March 5 2026 July 21
Firefox 154 Rust 1.94.0 1.90.0 2026 March 5 2026 August 18
Estimated          
Firefox 155 Rust 1.95.0 ? 2026 April 16 2026 August 6 2026 September 1
Firefox 156 Rust 1.97.0 ? 2026 July 9 2026 August 20 2026 September 15
Firefox 157 Rust 1.98.0 ? 2026 August 20 2026 September 3 2026 September 29
Firefox 158 Rust 1.98.0 ? 2026 August 20 2026 September 17 2026 October 13
Firefox 159 Rust 1.98.0 ? 2026 August 20 2026 October 1 2026 October 27
Firefox 160 Rust 1.99.0 ? 2026 October 1 2026 October 15 2026 November 10
Firefox 161 Rust 1.99.0 ? 2026 October 1 2026 October 29 2026 November 24
Firefox 162 Rust 1.99.0 ? 2026 October 1 2026 November 12 2026 December 8