|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Updating Rust's Linux musl targets" |
| 4 | +author: Wesley Wiser |
| 5 | +description: "musl targets will soon ship with musl 1.2" |
| 6 | +team: The Compiler Team <https://www.rust-lang.org/governance/teams/compiler> |
| 7 | +--- |
| 8 | + |
| 9 | +Beginning with Rust 1.71 (slated for stable release on 2023-07-13), the various `*-linux-musl` targets will [ship][PR] with musl 1.2.3. |
| 10 | +These targets currently use musl 1.1.24. |
| 11 | +While musl 1.2.3 introduces some [new features][musl features], most notably [64-bit time][time64] on all platforms, it is ABI compatible with earlier musl versions. |
| 12 | + |
| 13 | +As such, this change is unlikely to affect you. |
| 14 | + |
| 15 | +# Updated targets |
| 16 | + |
| 17 | +The following targets will be updated: |
| 18 | + |
| 19 | +| Target | [Support Tier][tiers] | |
| 20 | +| - | - | |
| 21 | +| `aarch64-unknown-linux-musl` | Tier 2 with Host Tools | |
| 22 | +| `x86_64-unknown-linux-musl` | Tier 2 with Host Tools | |
| 23 | +| `arm-unknown-linux-musleabi` | Tier 2 | |
| 24 | +| `arm-unknown-linux-musleabihf` | Tier 2 | |
| 25 | +| `armv5te-unknown-linux-musleabi` | Tier 2 | |
| 26 | +| `armv7-unknown-linux-musleabi` | Tier 2 | |
| 27 | +| `armv7-unknown-linux-musleabihf` | Tier 2 | |
| 28 | +| `i586-unknown-linux-musl` | Tier 2 | |
| 29 | +| `i686-unknown-linux-musl` | Tier 2 | |
| 30 | +| `mips-unknown-linux-musl` | Tier 2 | |
| 31 | +| `mips64-unknown-linux-muslabi64` | Tier 2 | |
| 32 | +| `mips64el-unknown-linux-muslabi64` | Tier 2 | |
| 33 | +| `mipsel-unknown-linux-musl` | Tier 2 | |
| 34 | +| `hexagon-unknown-linux-musl` | Tier 3 | |
| 35 | +| `mips64-openwrt-linux-musl` | Tier 3 | |
| 36 | +| `powerpc-unknown-linux-musl` | Tier 3 | |
| 37 | +| `powerpc64-unknown-linux-musl` | Tier 3 | |
| 38 | +| `powerpc64le-unknown-linux-musl` | Tier 3 | |
| 39 | +| `riscv32gc-unknown-linux-musl` | Tier 3 | |
| 40 | +| `riscv64gc-unknown-linux-musl` | Tier 3 | |
| 41 | +| `s390x-unknown-linux-musl` | Tier 3 | |
| 42 | +| `thumbv7neon-unknown-linux-musleabihf` | Tier 3 | |
| 43 | + |
| 44 | +Note: musl 1.2.3 does not raise the minimum required Linux kernel version for any target. |
| 45 | + |
| 46 | +# Will 64-bit time break the `libc` crate on 32-bit targets? |
| 47 | + |
| 48 | +No, the musl project made this change carefully preserving ABI compatibility. |
| 49 | +The `libc` crate will continue to function correctly without modification. |
| 50 | + |
| 51 | +A future version of the `libc` crate will [update][libc PR] the definitions of time-related structures and functions to be 64-bit on all musl targets however this is blocked on the musl targets themselves first being updated. |
| 52 | +At present, there is no anticipated date when this change will take place and care will be taken to help the Rust ecosystem transition successfully to the updated time-related definitions. |
| 53 | + |
| 54 | +[libc PR]: https://github.com/rust-lang/libc/pull/3068 |
| 55 | +[musl features]: https://musl.libc.org/releases.html |
| 56 | +[PR]: https://github.com/rust-lang/rust/pull/107129 |
| 57 | +[tiers]: https://doc.rust-lang.org/nightly/rustc/platform-support.html |
| 58 | +[time64]: https://musl.libc.org/time64.html |
0 commit comments