特征名称: promote-aarch64-pc-windows-msvc-to-tier-1
开始日期: 2025-05-22
RFC PR: rust-lang/rfcs#3817
Rust Issue: rust-lang/rust#145671
摘要
将 aarch64-pc-windows-msvc 提升为 Tier 1(带主机工具)。
动机
大约有 30% 的 Rust 用户使用 Windows,虽然这些开发者及其客户多数使用 x64 硬件,但自 Windows 10 首次支持以来,Arm64 Windows 的使用量一直在增长,尤其是在 SnapDragon X 处理器发布后增长加快。
用户级说明
无需任何变动:Arm64 Windows 的 Rust 工具链已经提供,此变更不会影响终端用户体验。
参考级说明
Tier 1 目标必须遵守 Tier 1 目标政策。逐条说明如下:
Tier 1 目标必须在开发者社区中有广泛兴趣,并服务于多个组织或项目的多名 Rust 生产用户。这些要求带有主观性,由审批团队共识决定。
如上所述,Windows 用户在 Rust 社区占比很高,Arm64 硬件的使用量也在开发者和客户中不断提升。
过去两年,Arm64 PC 占 Windows 销量的 10-14%:
https://www.prnewswire.com/news-releases/2025-will-see-ai-pcs-become-the-new-normal-but-arm-based-pcs-will-not-grow-out-of-its-minority-segment-302340341.htmlhttps://www.counterpointresearch.com/insights/arm-based-pcs-to-nearly-double-market-share-by-2027/https://www.tomshardware.com/pc-components/cpus/arm-pc-market-share-shrinks-mercury-research
总体来看,Arm64 预计占 Windows 总体 1-1.5%:
https://www.canalys.com/insights/arming-your-pc-for-the-upcoming-ai-erahttps://www.techpowerup.com/329255/snapdragon-x-failed-qualcomm-sold-720-000-pcs-in-q3-around-0-8-market-share
虽然比例不高,但实际数量约为 1.4-2.1 亿台设备。
对 Rust 本身来说,根据 Rust 下载仪表盘, 是第三大下载量的非 tier 1 rustc 版本(仅次于 x64 和 Arm64 Linux musl),下载量约为
aarch64-pc-windows-msvc 的 3%。
x86_64-pc-windows-msvc
目标维护团队需有至少 3 名开发者。
由 5 名
aarch64-pc-windows-msvc 维护者支持。
*-pc-windows-msvc
目标必须能在 CI 中稳定构建并通过所有 Rust CI 认为强制的测试。
目标不得为通过测试而禁用过多测试(主观要求)。
CI 任务已稳定运行超 4 年,
dist-aarch64-msvc
且我已配置了 Arm64 Windows 物理 runner 的新 CI 任务。
下列测试被禁用:
std::fs 下需 symlink 的测试:runner 镜像限制,已提 issue 请求修复。部分 debug info 测试
:函数跳出行为不同。
tests/debuginfo/step-into-match.rs:Arm64 Windows 的 cdb 不支持 JS 扩展,已给调试器团队反馈。
tests/debuginfo/type-names.rs:回溯输出被截断,已提 issue 跟进。
tests/ui/runtime/backtrace-debuginfo.rs
目标必须尽可能多地提供完整的 Rust 标准库。
标准库可完整使用。
构建和测试该目标所需时间不得显著高于其他目标, CI 维护负担不应明显上升。
新 CI 任务一次 try 测试不到 2 小时。
若测试需额外基础设施(如物理设备),维护者需为 Rust 项目提供,且须得到基础设施团队认可。
可用云服务、模拟或物理硬件。
新 CI 任务用的是 GitHub 免费的 runner。
windows-11-arm
Tier 1 目标不得强制要求签名、验证或“批准”二进制。开发者须能在自己控制的系统上构建、运行、测试目标二进制,或可为他人提供,无需额外付费或签署苛刻协议(可要求开启开发者模式)。
Arm64 与 x64 Windows 在此方面无异。
还需满足 Tier 2 所有要求。
逐条说明 Tier 2 政策:
目标不得给与该目标无关的 Rust 开发者带来额外负担。开发者不应无故破坏 tier 2 目标,但无需精通所有 tier 2 目标,也无需为每个目标提供特定实现。
理解。
目标需提供文档说明如何交叉编译、运行测试,若可模拟应给出操作说明;若不可模拟,需说明如何获得硬件、云资源等。需说明基础 CPU/OS/库/运行时等预期。
理解。本次提案将补充平台支持文档。
代码生成后端不得有破坏 Rust 安全性的缺陷,需经编译器团队评估。
LLVM 对 Arm64 Windows 的支持暂无已知缺陷。
若目标支持 C 代码,且有互操作 C ABI,Rust 目标需支持该平台 C 调用约定的
。C ABI 可不是默认 Rust ABI。
extern "C"
能正确调用 C 代码。
extern "C"
Tier 2 目标应尽量支持交叉编译,不应要求目标自己作为主机构建,即便目标支持主机工具。
可由 x86/x64 Windows 或其它可运行这些工具的平台交叉编译。
aarch64-pc-windows-msvc
除所有目标的法律要求(见 tier 3)外,因 tier 2 需 Rust 项目分发二进制(如库/主机工具),分发不得对项目成员(含基础设施团队和 CI 运维)施加苛刻许可要求。
Arm64 Windows 代码无此类许可要求。
Tier 2 目标不得要求 PR 作者或社区开发者必须保证测试通过。
理解。
目标维护者应定期运行测试,及时修复失败。
理解,升级 Tier 1 后将自动化此流程。
缺点
GitHub 提供的 runner 较新,其可用性和稳定性尚不确定。
windows-11-arm
原理及替代方案
可以继续作为 Tier 2 目标,但鉴于该平台对微软的重要性和 Windows 用户 Arm64 增长,未来该目标上的问题很可能需视为关键问题,及早发现可避免 beta/stable 回退。
aarch64-pc-windows-msvc
先例
RFC 2959 提升 为 Tier 1。RFC 3671 提升
aarch64-unknown-linux-gnu 为 Tier 1。
aarch64-apple-darwin 5月初起已使用
stdarch runner。LLVM 有专用 Arm64 Windows 构建机。
windows-11-arm
未决问题
无。
未来可能性
在更多 Rust 仓库(如 )加 Arm64 Windows 任务。升级
cargo 为 Tier 1。增加
arm64ec-pc-windows-msvc 目标。升级
aarch64-pc-windows-gnu 为 Tier 1。
aarch64-pc-windows-gnullvm
原文地址:https://rust-lang.github.io/rfcs/3817-promote-aarch64-pc-windows-msvc-to-tier-1.html


