commit 8d77c22e036376868b7dfc507e7367d18b3e968c
parent 8254d9011bc725d65b428af7b72c77d6c0e3a679
Author: Mike Hommey <mh+mozilla@glandium.org>
Date: Fri, 2 Jan 2026 14:50:59 +0000
Bug 1986626 - Update minimum Rust version to 1.87. r=firefox-build-system-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D275580
Diffstat:
5 files changed, 42 insertions(+), 67 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -66,7 +66,7 @@ exclude = [
resolver = "2"
[workspace.package]
-rust-version = "1.82.0"
+rust-version = "1.87.0"
[workspace.dependencies]
# Shared across multiple UniFFI consumers.
diff --git a/docs/writing-rust-code/update-policy.md b/docs/writing-rust-code/update-policy.md
@@ -173,9 +173,10 @@ Here are the Rust versions for each Firefox version.
| Firefox 144 | Rust 1.86.0 | 1.82.0 | 2025 April 3 | 2025 September 11 | 2025 October 14
| Firefox 145 | Rust 1.86.0 | 1.82.0 | 2025 April 3 | 2025 October 9 | 2025 November 11
| Firefox 146 | Rust 1.86.0 | 1.82.0 | 2025 October 30 | 2025 November 6 | 2025 December 9
+| Firefox 147 | Rust 1.90.0 | 1.82.0 | 2025 September 18 | 2025 December 4 | 2026 January 13
| **Estimated** |
-| Firefox 147 | Rust 1.90.0 | ? | 2025 September 18 | 2025 December 4 | 2026 January 13
-| Firefox 148 | Rust 1.92.0 | ? | 2025 December 11 | 2026 January 8 | 2026 February 17
-| Firefox 149 | Rust 1.93.0 | ? | 2025 January 22 | 2026 February 19 | 2026 March 24
-| Firefox 150 | Rust 1.94.0 | ? | 2025 March 5 | 2026 March 19 | 2026 April 21
-| Firefox 151 | Rust 1.94.0 | ? | 2025 March 5 | 2026 April 16 | 2026 May 19
+| Firefox 148 | Rust 1.92.0 | 1.87.0 | 2025 December 11 | 2026 January 8 | 2026 February 17
+| Firefox 149 | Rust 1.93.0 | ? | 2026 January 22 | 2026 February 19 | 2026 March 24
+| Firefox 150 | Rust 1.94.0 | ? | 2026 March 5 | 2026 March 19 | 2026 April 21
+| Firefox 151 | Rust 1.94.0 | ? | 2026 March 5 | 2026 April 16 | 2026 May 19
+| Firefox 152 | Rust 1.94.0 | ? | 2026 April 16 | 2026 May 14 | 2026 June 16
diff --git a/python/mozboot/mozboot/util.py b/python/mozboot/mozboot/util.py
@@ -13,7 +13,7 @@ from mach.site import PythonVirtualenv
from mach.util import get_state_dir
# Keep in sync with rust-version in top-level Cargo.toml.
-MINIMUM_RUST_VERSION = "1.82.0"
+MINIMUM_RUST_VERSION = "1.87.0"
def get_tools_dir(srcdir=False):
diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
@@ -1641,7 +1641,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"",
)
if args == ("--print", "target-list"):
- # Raw list returned by rustc version 1.82
+ # Raw list returned by rustc version 1.87
rust_targets = [
"aarch64-apple-darwin",
"aarch64-apple-ios",
@@ -1653,7 +1653,6 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"aarch64-apple-visionos-sim",
"aarch64-apple-watchos",
"aarch64-apple-watchos-sim",
- "aarch64-fuchsia",
"aarch64-kmc-solid_asp3",
"aarch64-linux-android",
"aarch64-nintendo-switch-freestanding",
@@ -1670,7 +1669,11 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"aarch64-unknown-netbsd",
"aarch64-unknown-none",
"aarch64-unknown-none-softfloat",
+ "aarch64-unknown-nto-qnx700",
"aarch64-unknown-nto-qnx710",
+ "aarch64-unknown-nto-qnx710_iosock",
+ "aarch64-unknown-nto-qnx800",
+ "aarch64-unknown-nuttx",
"aarch64-unknown-openbsd",
"aarch64-unknown-redox",
"aarch64-unknown-teeos",
@@ -1681,6 +1684,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"aarch64_be-unknown-linux-gnu",
"aarch64_be-unknown-linux-gnu_ilp32",
"aarch64_be-unknown-netbsd",
+ "amdgcn-amd-amdhsa",
"arm-linux-androideabi",
"arm-unknown-linux-gnueabi",
"arm-unknown-linux-gnueabihf",
@@ -1689,6 +1693,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"arm64_32-apple-watchos",
"arm64e-apple-darwin",
"arm64e-apple-ios",
+ "arm64e-apple-tvos",
"arm64ec-pc-windows-msvc",
"armeb-unknown-linux-gnueabi",
"armebv7r-none-eabi",
@@ -1703,6 +1708,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"armv6-unknown-netbsd-eabihf",
"armv6k-nintendo-3ds",
"armv7-linux-androideabi",
+ "armv7-rtems-eabihf",
"armv7-sony-vita-newlibeabihf",
"armv7-unknown-freebsd",
"armv7-unknown-linux-gnueabi",
@@ -1719,12 +1725,14 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"armv7a-kmc-solid_asp3-eabihf",
"armv7a-none-eabi",
"armv7a-none-eabihf",
+ "armv7a-nuttx-eabi",
+ "armv7a-nuttx-eabihf",
"armv7k-apple-watchos",
"armv7r-none-eabi",
"armv7r-none-eabihf",
"armv7s-apple-ios",
"armv8r-none-eabihf",
- "avr-unknown-gnu-atmega328",
+ "avr-none",
"bpfeb-unknown-none",
"bpfel-unknown-none",
"csky-unknown-linux-gnuabiv2",
@@ -1732,13 +1740,13 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"hexagon-unknown-linux-musl",
"hexagon-unknown-none-elf",
"i386-apple-ios",
- "i586-pc-nto-qnx700",
- "i586-pc-windows-msvc",
"i586-unknown-linux-gnu",
"i586-unknown-linux-musl",
"i586-unknown-netbsd",
+ "i586-unknown-redox",
"i686-apple-darwin",
"i686-linux-android",
+ "i686-pc-nto-qnx700",
"i686-pc-windows-gnu",
"i686-pc-windows-gnullvm",
"i686-pc-windows-msvc",
@@ -1749,17 +1757,20 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"i686-unknown-linux-musl",
"i686-unknown-netbsd",
"i686-unknown-openbsd",
- "i686-unknown-redox",
"i686-unknown-uefi",
"i686-uwp-windows-gnu",
"i686-uwp-windows-msvc",
+ "i686-win7-windows-gnu",
"i686-win7-windows-msvc",
"i686-wrs-vxworks",
"loongarch64-unknown-linux-gnu",
"loongarch64-unknown-linux-musl",
+ "loongarch64-unknown-linux-ohos",
"loongarch64-unknown-none",
"loongarch64-unknown-none-softfloat",
"m68k-unknown-linux-gnu",
+ "m68k-unknown-none-elf",
+ "mips-mti-none-elf",
"mips-unknown-linux-gnu",
"mips-unknown-linux-musl",
"mips-unknown-linux-uclibc",
@@ -1768,6 +1779,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"mips64-unknown-linux-muslabi64",
"mips64el-unknown-linux-gnuabi64",
"mips64el-unknown-linux-muslabi64",
+ "mipsel-mti-none-elf",
"mipsel-sony-psp",
"mipsel-sony-psx",
"mipsel-unknown-linux-gnu",
@@ -1799,6 +1811,10 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"powerpc64le-unknown-freebsd",
"powerpc64le-unknown-linux-gnu",
"powerpc64le-unknown-linux-musl",
+ "riscv32-wrs-vxworks",
+ "riscv32e-unknown-none-elf",
+ "riscv32em-unknown-none-elf",
+ "riscv32emc-unknown-none-elf",
"riscv32gc-unknown-linux-gnu",
"riscv32gc-unknown-linux-musl",
"riscv32i-unknown-none-elf",
@@ -1816,6 +1832,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"riscv32imc-unknown-none-elf",
"riscv32imc-unknown-nuttx-elf",
"riscv64-linux-android",
+ "riscv64-wrs-vxworks",
"riscv64gc-unknown-freebsd",
"riscv64gc-unknown-fuchsia",
"riscv64gc-unknown-hermit",
@@ -1839,6 +1856,8 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"thumbv5te-none-eabi",
"thumbv6m-none-eabi",
"thumbv6m-nuttx-eabi",
+ "thumbv7a-nuttx-eabi",
+ "thumbv7a-nuttx-eabihf",
"thumbv7a-pc-windows-msvc",
"thumbv7a-uwp-windows-msvc",
"thumbv7em-none-eabi",
@@ -1858,10 +1877,11 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"thumbv8m.main-nuttx-eabihf",
"wasm32-unknown-emscripten",
"wasm32-unknown-unknown",
- "wasm32-wasi",
+ "wasm32-wali-linux-musl",
"wasm32-wasip1",
"wasm32-wasip1-threads",
"wasm32-wasip2",
+ "wasm32v1-none",
"wasm64-unknown-unknown",
"x86_64-apple-darwin",
"x86_64-apple-ios",
@@ -1869,9 +1889,11 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"x86_64-apple-tvos",
"x86_64-apple-watchos-sim",
"x86_64-fortanix-unknown-sgx",
- "x86_64-fuchsia",
"x86_64-linux-android",
+ "x86_64-pc-cygwin",
"x86_64-pc-nto-qnx710",
+ "x86_64-pc-nto-qnx710_iosock",
+ "x86_64-pc-nto-qnx800",
"x86_64-pc-solaris",
"x86_64-pc-windows-gnu",
"x86_64-pc-windows-gnullvm",
@@ -1882,6 +1904,7 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"x86_64-unknown-fuchsia",
"x86_64-unknown-haiku",
"x86_64-unknown-hermit",
+ "x86_64-unknown-hurd-gnu",
"x86_64-unknown-illumos",
"x86_64-unknown-l4re-uclibc",
"x86_64-unknown-linux-gnu",
@@ -1893,9 +1916,11 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"x86_64-unknown-none",
"x86_64-unknown-openbsd",
"x86_64-unknown-redox",
+ "x86_64-unknown-trusty",
"x86_64-unknown-uefi",
"x86_64-uwp-windows-gnu",
"x86_64-uwp-windows-msvc",
+ "x86_64-win7-windows-gnu",
"x86_64-win7-windows-msvc",
"x86_64-wrs-vxworks",
"x86_64h-apple-darwin",
@@ -1906,30 +1931,6 @@ def gen_invoke_rustc(version, rustup_wrapper=False):
"xtensa-esp32s3-espidf",
"xtensa-esp32s3-none-elf",
]
- # Additional targets from 1.83
- if Version(version) >= "1.83.0":
- rust_targets += [
- "aarch64-unknown-nto-qnx700",
- "arm64e-apple-tvos",
- "armv7-rtems-eabihf",
- "loongarch64-unknown-linux-ohos",
- "riscv32-wrs-vxworks",
- "riscv32e-unknown-none-elf",
- "riscv32em-unknown-none-elf",
- "riscv32emc-unknown-none-elf",
- "riscv64-wrs-vxworks",
- "x86_64-unknown-hurd-gnu",
- "x86_64-unknown-trusty",
- ]
- rust_targets.remove("aarch64-fuchsia")
- rust_targets.remove("x86_64-fuchsia")
- # Additional targets from 1.84
- if Version(version) >= "1.84.0":
- rust_targets += [
- "wasm32v1-none",
- ]
- rust_targets.remove("wasm32-wasi")
-
return 0, "\n".join(sorted(rust_targets)), ""
if (
len(args) == 6
@@ -2135,20 +2136,6 @@ class RustTest(BaseConfigureTest):
)
def test_rust_wasi_target(self):
- self.assertEqual(self.get_rust_target("wasm32-unknown-wasi"), "wasm32-wasi")
-
-
-# These tests are expensive, so we don't run them by default.
-if False:
-
- class Rust183Test(RustTest):
- VERSION = "1.83.0"
-
-
-class Rust184Test(RustTest):
- VERSION = "1.84.0"
-
- def test_rust_wasi_target(self):
self.assertEqual(self.get_rust_target("wasm32-unknown-wasi"), "wasm32-wasip1")
diff --git a/taskcluster/kinds/toolchain/rust.yml b/taskcluster/kinds/toolchain/rust.yml
@@ -11,20 +11,6 @@ task-defaults:
script: repack_rust.py
toolchain-artifact: public/build/rustc.tar.zst
-linux64-rust-1.82:
- treeherder:
- symbol: TL(rust-1.82)
- run:
- arguments: [
- '--channel', '1.82.0',
- '--host', 'x86_64-unknown-linux-gnu',
- '--target', 'x86_64-unknown-linux-gnu',
- '--target', 'i686-unknown-linux-gnu',
- '--target', 'wasm32-wasi',
- ]
- toolchain-alias:
- - linux64-rust-base
-
linux64-rust-1.87:
treeherder:
symbol: TL(rust-1.87)
@@ -38,6 +24,7 @@ linux64-rust-1.87:
'--target', 'wasm32-wasip1',
]
toolchain-alias:
+ - linux64-rust-base
- linux64-rust-toolchain
linux64-rust-macos-1.87: