Rust – RFC 3817 promote-aarch64-pc-windows-msvc-to-tier-1

特征名称: 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 下载仪表盘,
aarch64-pc-windows-msvc
是第三大下载量的非 tier 1 rustc 版本(仅次于 x64 和 Arm64 Linux musl),下载量约为
x86_64-pc-windows-msvc
的 3%。

目标维护团队需有至少 3 名开发者。


aarch64-pc-windows-msvc
由 5 名
*-pc-windows-msvc
维护者支持。

目标必须能在 CI 中稳定构建并通过所有 Rust CI 认为强制的测试。
目标不得为通过测试而禁用过多测试(主观要求)。


dist-aarch64-msvc
CI 任务已稳定运行超 4 年,
且我已配置了 Arm64 Windows 物理 runner 的新 CI 任务。

下列测试被禁用:

std::fs 下需 symlink 的测试:runner 镜像限制,已提 issue 请求修复。部分 debug info 测试

tests/debuginfo/step-into-match.rs
:函数跳出行为不同。
tests/debuginfo/type-names.rs
:Arm64 Windows 的 cdb 不支持 JS 扩展,已给调试器团队反馈。
tests/ui/runtime/backtrace-debuginfo.rs
:回溯输出被截断,已提 issue 跟进。

目标必须尽可能多地提供完整的 Rust 标准库。

标准库可完整使用。

构建和测试该目标所需时间不得显著高于其他目标, CI 维护负担不应明显上升。

新 CI 任务一次 try 测试不到 2 小时。

若测试需额外基础设施(如物理设备),维护者需为 Rust 项目提供,且须得到基础设施团队认可。
可用云服务、模拟或物理硬件。

新 CI 任务用的是 GitHub 免费的
windows-11-arm
runner。

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 调用约定的
extern "C"
。C ABI 可不是默认 Rust ABI。


extern "C"
能正确调用 C 代码。

Tier 2 目标应尽量支持交叉编译,不应要求目标自己作为主机构建,即便目标支持主机工具。


aarch64-pc-windows-msvc
可由 x86/x64 Windows 或其它可运行这些工具的平台交叉编译。

除所有目标的法律要求(见 tier 3)外,因 tier 2 需 Rust 项目分发二进制(如库/主机工具),分发不得对项目成员(含基础设施团队和 CI 运维)施加苛刻许可要求。

Arm64 Windows 代码无此类许可要求。

Tier 2 目标不得要求 PR 作者或社区开发者必须保证测试通过。

理解。

目标维护者应定期运行测试,及时修复失败。

理解,升级 Tier 1 后将自动化此流程。

缺点

GitHub 提供的
windows-11-arm
runner 较新,其可用性和稳定性尚不确定。

原理及替代方案


aarch64-pc-windows-msvc
可以继续作为 Tier 2 目标,但鉴于该平台对微软的重要性和 Windows 用户 Arm64 增长,未来该目标上的问题很可能需视为关键问题,及早发现可避免 beta/stable 回退。

先例

RFC 2959 提升
aarch64-unknown-linux-gnu
为 Tier 1。RFC 3671 提升
aarch64-apple-darwin
为 Tier 1。
stdarch
5月初起已使用
windows-11-arm
runner。LLVM 有专用 Arm64 Windows 构建机。

未决问题

无。

未来可能性

在更多 Rust 仓库(如
cargo
)加 Arm64 Windows 任务。升级
arm64ec-pc-windows-msvc
为 Tier 1。增加
aarch64-pc-windows-gnu
目标。升级
aarch64-pc-windows-gnullvm
为 Tier 1。

原文地址:https://rust-lang.github.io/rfcs/3817-promote-aarch64-pc-windows-msvc-to-tier-1.html

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...