将 i686 Windows 目标降级为仅标准库

将 i686 Windows 目标降级为仅标准库

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

Rust 1.100起,32位Windows目标(i686-pc-windows-msvc和i686-pc-windows-gnu)不再提供编译器主机工具,仅继续分发标准库,用户需从64位Windows等受支持平台交叉编译。原因是32位x86 CPU已停售超15年且构建工具链问题频发。其他32位平台不受影响。

🔎

延伸解读

对开发者的实际影响

从 Rust 1.100 开始,开发者将无法在 32 位 Windows 主机上安装工具链。若需构建 32 位 Windows 二进制文件,必须从受支持的主机(如 64 位 Windows)进行交叉编译。标准库仍会分发,因此现有项目在 64 位主机上交叉编译后仍可运行于 32 位 Windows。

降级背后的原因

32 位 x86 CPU 已停售超过 15 年,且 32 位 Windows 的通用支持已于 2025 年 10 月结束。这些目标所面向的开发平台如今几乎不存在,即使存在也通常不足以进行开发。此外,在现代 x86_64 硬件上构建 i686 Windows 工具链问题频发,例如编译器二进制崩溃和 LLVM 构建时内存不足。

其他平台不受影响

此次调整仅针对 i686-pc-windows-msvc 和 i686-pc-windows-gnu 两个目标,其他 32 位平台不受影响。i686-pc-windows-msvc 作为 Tier 1 目标仍会进行 CI 测试,但不再提供主机工具。开发者应转向交叉编译方案,以继续支持 32 位 Windows 环境。

❓

Q&A

Rust 1.100 对 32 位 Windows 目标做了哪些具体改动?

从 Rust 1.100.0 开始,i686-pc-windows-msvc 和 i686-pc-windows-gnu 这两个 32 位 Windows 目标不再提供编译器主机工具,但标准库的构建仍会继续分发。i686-pc-windows-msvc 作为 Tier 1 目标仍会进行 CI 测试。

为什么 Rust 要将 i686 Windows 目标降级为仅标准库?

原因包括:仅支持 32 位的 x86 CPU 已停售超过 15 年,且 32 位 Windows 的通用支持已于 2025 年 10 月结束,这些目标所针对的开发平台几乎不存在;即使存在,性能也不足以进行开发。此外,在现代 x86_64 硬件上构建 i686 Windows 工具链问题频发,例如使用 i686 MSVC 目标时编译器二进制崩溃,以及 GNU C++ 工具链在 LLVM 构建期间因内存不足失败。

Rust 1.100 之后,如何在 32 位 Windows 上构建程序?

从 Rust 1.100 之后,将无法在 32 位 Windows 主机上安装工具链。要构建 32 位 Windows 二进制文件,需要从仍受支持的主机工具链(例如 64 位 Windows 工具链)进行交叉编译。

i686-pc-windows-msvc 目标在 Rust 1.100 后还会进行 CI 测试吗?

是的,i686-pc-windows-msvc 作为 Tier 1 目标,在 Rust 1.100 后仍会进行 CI 测试。

其他 32 位平台会受到 Rust 1.100 这一变更的影响吗?

不会,其他 32 位平台不受此变更影响。

关于 i686 Windows 目标的降级,有哪些相关的 RFC 或 MCP 文档?

关于 i686-pc-windows-msvc 的降级,可参考 RFC 3999;关于 i686-pc-windows-gnu 的降级,可参考 MCP 1020。

🏷️

标签

➡️

继续阅读