更新 Rust 的 Linux musl 目标

2023 年 5 月 9 日 · Wesley Wiser 代表 编译器团队

从 Rust 1.71 版本开始(计划于 2023-07-13 稳定发布),各种 *-linux-musl 目标将自带 musl 1.2.3。这些目标目前使用 musl 1.1.24。虽然 musl 1.2.3 引入了一些新特性,最显著的是在所有平台上引入了64 位时间,但它与早期 musl 版本是 ABI 兼容的。

因此,这项改动不太可能影响到您。

已更新的目标

以下目标将被更新

目标支持层级
aarch64-unknown-linux-muslTier 2(带主机工具)
x86_64-unknown-linux-muslTier 2(带主机工具)
arm-unknown-linux-musleabiTier 2
arm-unknown-linux-musleabihfTier 2
armv5te-unknown-linux-musleabiTier 2
armv7-unknown-linux-musleabiTier 2
armv7-unknown-linux-musleabihfTier 2
i586-unknown-linux-muslTier 2
i686-unknown-linux-muslTier 2
mips-unknown-linux-muslTier 2
mips64-unknown-linux-muslabi64Tier 2
mips64el-unknown-linux-muslabi64Tier 2
mipsel-unknown-linux-muslTier 2
hexagon-unknown-linux-muslTier 3
mips64-openwrt-linux-muslTier 3
powerpc-unknown-linux-muslTier 3
powerpc64-unknown-linux-muslTier 3
powerpc64le-unknown-linux-muslTier 3
riscv32gc-unknown-linux-muslTier 3
riscv64gc-unknown-linux-muslTier 3
s390x-unknown-linux-muslTier 3
thumbv7neon-unknown-linux-musleabihfTier 3

注意:musl 1.2.3 不会提高任何目标所需的最低 Linux 内核版本。

64 位时间会破坏 32 位目标上的 libc crate 吗?

不会,musl 项目在做出这项改动时非常谨慎,保留了 ABI 兼容性。libc crate 无需修改即可继续正常运行。

未来的 libc crate 版本将更新与时间相关的结构体和函数定义,使其在所有 musl 目标上都是 64 位,但此更新取决于 musl 目标本身首先得到更新。目前,这项改动没有具体的预期日期,并且我们将谨慎处理,以帮助 Rust 生态系统顺利过渡到更新后的时间相关定义。