|
| 1 | +# Platform Support |
| 2 | + |
| 3 | +<style type="text/css"> |
| 4 | + td code { |
| 5 | + white-space: nowrap; |
| 6 | + } |
| 7 | +</style> |
| 8 | + |
| 9 | +Support for different platforms are organized into three tiers, each with a |
| 10 | +different set of guarantees. |
| 11 | + |
| 12 | +Platforms are identified by their "target triple" which is the string to |
| 13 | +inform the compiler what kind of output should be produced. The columns in the |
| 14 | +tables below have the following meanings: |
| 15 | + |
| 16 | +* std: |
| 17 | + * ✓ indicates the full standard library is available. |
| 18 | + * \* indicates the target only supports [`no_std`] development. |
| 19 | + * ? indicates the standard library support is unknown or a work-in-progress. |
| 20 | +* host: A ✓ indicates that `rustc` and `cargo` can run on the host platform. |
| 21 | + |
| 22 | +[`no_std`]: https://rust-embedded.github.io/book/intro/no-std.html |
| 23 | + |
| 24 | +## Tier 1 |
| 25 | + |
| 26 | +Tier 1 platforms can be thought of as "guaranteed to work". |
| 27 | +Specifically they will each satisfy the following requirements: |
| 28 | + |
| 29 | +* Official binary releases are provided for the platform. |
| 30 | +* Automated testing is set up to run tests for the platform. |
| 31 | +* Landing changes to the `rust-lang/rust` repository's master branch is gated |
| 32 | + on tests passing. |
| 33 | +* Documentation for how to use and how to build the platform is available. |
| 34 | + |
| 35 | +target | std | host | notes |
| 36 | +-------|-----|------|------- |
| 37 | +`i686-pc-windows-gnu` | ✓ | ✓ | 32-bit MinGW (Windows 7+) |
| 38 | +`i686-pc-windows-msvc` | ✓ | ✓ | 32-bit MSVC (Windows 7+) |
| 39 | +`i686-unknown-linux-gnu` | ✓ | ✓ | 32-bit Linux (kernel 2.6.32+, glibc 2.11+) |
| 40 | +`x86_64-apple-darwin` | ✓ | ✓ | 64-bit OSX (10.7+, Lion+) |
| 41 | +`x86_64-pc-windows-gnu` | ✓ | ✓ | 64-bit MinGW (Windows 7+) |
| 42 | +`x86_64-pc-windows-msvc` | ✓ | ✓ | 64-bit MSVC (Windows 7+) |
| 43 | +`x86_64-unknown-linux-gnu` | ✓ | ✓ | 64-bit Linux (kernel 2.6.32+, glibc 2.11+) |
| 44 | + |
| 45 | +## Tier 2 |
| 46 | + |
| 47 | +Tier 2 platforms can be thought of as "guaranteed to build". Automated tests |
| 48 | +are not run so it's not guaranteed to produce a working build, but platforms |
| 49 | +often work to quite a good degree and patches are always welcome! |
| 50 | +Specifically, these platforms are required to have each of the following: |
| 51 | + |
| 52 | +* Official binary releases are provided for the platform. |
| 53 | +* Automated building is set up, but may not be running tests. |
| 54 | +* Landing changes to the `rust-lang/rust` repository's master branch is gated on |
| 55 | + platforms **building**. For some platforms only the standard library is |
| 56 | + compiled, but for others `rustc` and `cargo` are too. |
| 57 | + |
| 58 | +target | std | host | notes |
| 59 | +-------|-----|------|------- |
| 60 | +`aarch64-apple-ios` | ✓[^apple] | | ARM64 iOS |
| 61 | +`aarch64-fuchsia` | ✓ | | ARM64 Fuchsia |
| 62 | +`aarch64-linux-android` | ✓ | | ARM64 Android |
| 63 | +`aarch64-pc-windows-msvc` | ✓ | | ARM64 Windows MSVC |
| 64 | +`aarch64-unknown-linux-gnu` | ✓ | ✓ | ARM64 Linux (kernel 4.2, glibc 2.17) |
| 65 | +`aarch64-unknown-linux-musl` | ✓ | | ARM64 Linux with MUSL |
| 66 | +`aarch64-unknown-none` | * | | Bare ARM64, hardfloat |
| 67 | +`aarch64-unknown-none-softfloat` | * | | Bare ARM64, softfloat |
| 68 | +`arm-linux-androideabi` | ✓ | | ARMv7 Android |
| 69 | +`arm-unknown-linux-gnueabi` | ✓ | ✓ | ARMv6 Linux (kernel 3.2, glibc 2.17) |
| 70 | +`arm-unknown-linux-gnueabihf` | ✓ | ✓ | ARMv6 Linux, hardfloat (kernel 3.2, glibc 2.17) |
| 71 | +`arm-unknown-linux-musleabi` | ✓ | | ARMv6 Linux with MUSL |
| 72 | +`arm-unknown-linux-musleabihf` | ✓ | | ARMv6 Linux with MUSL, hardfloat |
| 73 | +`armebv7r-none-eabi` | * | | Bare ARMv7-R, Big Endian |
| 74 | +`armebv7r-none-eabihf` | * | | Bare ARMv7-R, Big Endian, hardfloat |
| 75 | +`armv5te-unknown-linux-gnueabi` | ✓ | | ARMv5TE Linux (kernel 4.4, glibc 2.23) |
| 76 | +`armv5te-unknown-linux-musleabi` | ✓ | | ARMv5TE Linux with MUSL |
| 77 | +`armv7-linux-androideabi` | ✓ | | ARMv7a Android |
| 78 | +`armv7a-none-eabi` | * | | Bare ARMv7-A |
| 79 | +`armv7r-none-eabi` | * | | Bare ARMv7-R |
| 80 | +`armv7r-none-eabihf` | * | | Bare ARMv7-R, hardfloat |
| 81 | +`armv7-unknown-linux-gnueabi` | ✓ | | ARMv7 Linux (kernel 4.15, glibc 2.27) |
| 82 | +`armv7-unknown-linux-gnueabihf` | ✓ | ✓ | ARMv7 Linux, hardfloat (kernel 3.2, glibc 2.17) |
| 83 | +`armv7-unknown-linux-musleabi` | ✓ | | ARMv7 Linux, MUSL |
| 84 | +`armv7-unknown-linux-musleabihf` | ✓ | | ARMv7 Linux with MUSL |
| 85 | +`asmjs-unknown-emscripten` | ✓ | | asm.js via Emscripten |
| 86 | +`i586-pc-windows-msvc` | ✓ | | 32-bit Windows w/o SSE |
| 87 | +`i586-unknown-linux-gnu` | ✓ | | 32-bit Linux w/o SSE (kernel 4.4, glibc 2.23) |
| 88 | +`i586-unknown-linux-musl` | ✓ | | 32-bit Linux w/o SSE, MUSL |
| 89 | +`i686-linux-android` | ✓ | | 32-bit x86 Android |
| 90 | +`i686-unknown-freebsd` | ✓ | ✓ | 32-bit FreeBSD |
| 91 | +`i686-unknown-linux-musl` | ✓ | | 32-bit Linux with MUSL |
| 92 | +`mips-unknown-linux-gnu` | ✓ | ✓ | MIPS Linux (kernel 4.4, glibc 2.23) |
| 93 | +`mips-unknown-linux-musl` | ✓ | | MIPS Linux with MUSL |
| 94 | +`mips64-unknown-linux-gnuabi64` | ✓ | ✓ | MIPS64 Linux, n64 ABI (kernel 4.4, glibc 2.23) |
| 95 | +`mips64-unknown-linux-muslabi64` | ✓ | | MIPS64 Linux, n64 ABI, MUSL |
| 96 | +`mips64el-unknown-linux-gnuabi64` | ✓ | ✓ | MIPS64 (LE) Linux, n64 ABI (kernel 4.4, glibc 2.23) |
| 97 | +`mips64el-unknown-linux-muslabi64` | ✓ | | MIPS64 (LE) Linux, n64 ABI, MUSL |
| 98 | +`mipsel-unknown-linux-gnu` | ✓ | ✓ | MIPS (LE) Linux (kernel 4.4, glibc 2.23) |
| 99 | +`mipsel-unknown-linux-musl` | ✓ | | MIPS (LE) Linux with MUSL |
| 100 | +`nvptx64-nvidia-cuda` | ✓ | | --emit=asm generates PTX code that [runs on NVIDIA GPUs] |
| 101 | +`powerpc-unknown-linux-gnu` | ✓ | ✓ | PowerPC Linux (kernel 2.6.32, glibc 2.11) |
| 102 | +`powerpc64-unknown-linux-gnu` | ✓ | ✓ | PPC64 Linux (kernel 2.6.32, glibc 2.11) |
| 103 | +`powerpc64le-unknown-linux-gnu` | ✓ | ✓ | PPC64LE Linux (kernel 3.10, glibc 2.17) |
| 104 | +`riscv32i-unknown-none-elf` | * | | Bare RISC-V (RV32I ISA) |
| 105 | +`riscv32imac-unknown-none-elf` | * | | Bare RISC-V (RV32IMAC ISA) |
| 106 | +`riscv32imc-unknown-none-elf` | * | | Bare RISC-V (RV32IMC ISA) |
| 107 | +`riscv64gc-unknown-linux-gnu` | ✓ | ✓ | RISC-V Linux (kernel 4.20, glibc 2.29) |
| 108 | +`riscv64gc-unknown-none-elf` | * | | Bare RISC-V (RV64IMAFDC ISA) |
| 109 | +`riscv64imac-unknown-none-elf` | * | | Bare RISC-V (RV64IMAC ISA) |
| 110 | +`s390x-unknown-linux-gnu` | ✓ | ✓ | S390x Linux (kernel 2.6.32, glibc 2.11) |
| 111 | +`sparc64-unknown-linux-gnu` | ✓ | | SPARC Linux (kernel 4.4, glibc 2.23) |
| 112 | +`sparcv9-sun-solaris` | ✓ | | SPARC Solaris 10/11, illumos |
| 113 | +`thumbv6m-none-eabi` | * | | Bare Cortex-M0, M0+, M1 |
| 114 | +`thumbv7em-none-eabi` | * | | Bare Cortex-M4, M7 |
| 115 | +`thumbv7em-none-eabihf` | * | | Bare Cortex-M4F, M7F, FPU, hardfloat |
| 116 | +`thumbv7m-none-eabi` | * | | Bare Cortex-M3 |
| 117 | +`thumbv7neon-linux-androideabi` | ✓ | | Thumb2-mode ARMv7a Android with NEON |
| 118 | +`thumbv7neon-unknown-linux-gnueabihf` | ✓ | | Thumb2-mode ARMv7a Linux with NEON (kernel 4.4, glibc 2.23) |
| 119 | +`thumbv8m.base-none-eabi` | * | | ARMv8-M Baseline |
| 120 | +`thumbv8m.main-none-eabi` | * | | ARMv8-M Mainline |
| 121 | +`thumbv8m.main-none-eabihf` | * | | ARMv8-M Baseline, hardfloat |
| 122 | +`wasm32-unknown-emscripten` | ✓ | | WebAssembly via Emscripten |
| 123 | +`wasm32-unknown-unknown` | ✓ | | WebAssembly |
| 124 | +`wasm32-wasi` | ✓ | | WebAssembly with WASI |
| 125 | +`x86_64-apple-ios` | ✓[^apple] | | 64-bit x86 iOS |
| 126 | +`x86_64-fortanix-unknown-sgx` | ✓ | | [Fortanix ABI] for 64-bit Intel SGX |
| 127 | +`x86_64-fuchsia` | ✓ | | 64-bit Fuchsia |
| 128 | +`x86_64-linux-android` | ✓ | | 64-bit x86 Android |
| 129 | +`x86_64-rumprun-netbsd` | ✓ | | 64-bit NetBSD Rump Kernel |
| 130 | +`x86_64-sun-solaris` | ✓ | | 64-bit Solaris 10/11, illumos |
| 131 | +`x86_64-unknown-cloudabi` | ✓ | | 64-bit CloudABI |
| 132 | +`x86_64-unknown-freebsd` | ✓ | ✓ | 64-bit FreeBSD |
| 133 | +`x86_64-unknown-illumos` | ✓ | ✓ | illumos |
| 134 | +`x86_64-unknown-linux-gnux32` | ✓ | | 64-bit Linux (x32 ABI) (kernel 4.15, glibc 2.27) |
| 135 | +`x86_64-unknown-linux-musl` | ✓ | ✓ | 64-bit Linux with MUSL |
| 136 | +`x86_64-unknown-netbsd` | ✓ | ✓ | NetBSD/amd64 |
| 137 | +`x86_64-unknown-redox` | ✓ | | Redox OS |
| 138 | + |
| 139 | +[Fortanix ABI]: https://edp.fortanix.com/ |
| 140 | + |
| 141 | +## Tier 3 |
| 142 | + |
| 143 | +Tier 3 platforms are those which the Rust codebase has support for, but which |
| 144 | +are not built or tested automatically, and may not work. Official builds are |
| 145 | +not available. |
| 146 | + |
| 147 | +target | std | host | notes |
| 148 | +-------|-----|------|------- |
| 149 | +`aarch64-apple-darwin` | ? | | ARM64 macOS |
| 150 | +`aarch64-apple-tvos` | *[^apple] | | ARM64 tvOS |
| 151 | +`aarch64-unknown-cloudabi` | ✓ | | ARM64 CloudABI |
| 152 | +`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD |
| 153 | +`aarch64-unknown-hermit` | ? | | |
| 154 | +`aarch64-unknown-netbsd` | ? | | |
| 155 | +`aarch64-unknown-openbsd` | ✓ | ✓ | ARM64 OpenBSD |
| 156 | +`aarch64-unknown-redox` | ? | | ARM64 Redox OS |
| 157 | +`aarch64-uwp-windows-msvc` | ? | | |
| 158 | +`aarch64-wrs-vxworks` | ? | | |
| 159 | +`armv4t-unknown-linux-gnueabi` | ? | | |
| 160 | +`armv6-unknown-freebsd` | ✓ | ✓ | ARMv6 FreeBSD |
| 161 | +`armv6-unknown-netbsd-eabihf` | ? | | |
| 162 | +`armv7-apple-ios` | ✓[^apple] | | ARMv7 iOS, Cortex-a8 |
| 163 | +`armv7-unknown-cloudabi-eabihf` | ✓ | | ARMv7 CloudABI, hardfloat |
| 164 | +`armv7-unknown-freebsd` | ✓ | ✓ | ARMv7 FreeBSD |
| 165 | +`armv7-unknown-netbsd-eabihf` | ? | | |
| 166 | +`armv7-wrs-vxworks-eabihf` | ? | | |
| 167 | +`armv7a-none-eabihf` | * | | ARM Cortex-A, hardfloat |
| 168 | +`armv7s-apple-ios` | ✓[^apple] | | |
| 169 | +`avr-unknown-unknown` | ? | | AVR |
| 170 | +`hexagon-unknown-linux-musl` | ? | | |
| 171 | +`i386-apple-ios` | ✓[^apple] | | 32-bit x86 iOS |
| 172 | +`i686-apple-darwin` | ✓ | ✓ | 32-bit OSX (10.7+, Lion+) |
| 173 | +`i686-pc-windows-msvc` | ✓ | | 32-bit Windows XP support |
| 174 | +`i686-unknown-cloudabi` | ✓ | | 32-bit CloudABI |
| 175 | +`i686-unknown-uefi` | ? | | 32-bit UEFI |
| 176 | +`i686-unknown-haiku` | ✓ | ✓ | 32-bit Haiku |
| 177 | +`i686-unknown-netbsd` | ✓ | | NetBSD/i386 with SSE2 |
| 178 | +`i686-unknown-openbsd` | ✓ | ✓ | 32-bit OpenBSD |
| 179 | +`i686-uwp-windows-gnu` | ? | | |
| 180 | +`i686-uwp-windows-msvc` | ? | | |
| 181 | +`i686-wrs-vxworks` | ? | | |
| 182 | +`mips-unknown-linux-uclibc` | ✓ | | MIPS Linux with uClibc |
| 183 | +`mipsel-unknown-linux-uclibc` | ✓ | | MIPS (LE) Linux with uClibc |
| 184 | +`mipsel-sony-psp` | * | | MIPS (LE) Sony PlayStation Portable (PSP) |
| 185 | +`mipsisa32r6-unknown-linux-gnu` | ? | | |
| 186 | +`mipsisa32r6el-unknown-linux-gnu` | ? | | |
| 187 | +`mipsisa64r6-unknown-linux-gnuabi64` | ? | | |
| 188 | +`mipsisa64r6el-unknown-linux-gnuabi64` | ? | | |
| 189 | +`msp430-none-elf` | * | | 16-bit MSP430 microcontrollers |
| 190 | +`powerpc-unknown-linux-gnuspe` | ✓ | | PowerPC SPE Linux |
| 191 | +`powerpc-unknown-linux-musl` | ? | | |
| 192 | +`powerpc-unknown-netbsd` | ? | | |
| 193 | +`powerpc-wrs-vxworks` | ? | | |
| 194 | +`powerpc-wrs-vxworks-spe` | ? | | |
| 195 | +`powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv1 and ELFv2) |
| 196 | +`powerpc64-unknown-linux-musl` | ? | | |
| 197 | +`powerpc64-wrs-vxworks` | ? | | |
| 198 | +`powerpc64le-unknown-linux-musl` | ? | | |
| 199 | +`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux |
| 200 | +`sparc64-unknown-netbsd` | ✓ | ✓ | NetBSD/sparc64 |
| 201 | +`sparc64-unknown-openbsd` | ? | | |
| 202 | +`thumbv7a-pc-windows-msvc` | ? | | |
| 203 | +`thumbv7a-uwp-windows-msvc` | ✓ | | |
| 204 | +`thumbv7neon-unknown-linux-musleabihf` | ? | | Thumb2-mode ARMv7a Linux with NEON, MUSL |
| 205 | +`thumbv4t-none-eabi` | * | | ARMv4T T32 |
| 206 | +`x86_64-apple-ios-macabi` | ✓[^apple] | | Apple Catalyst |
| 207 | +`x86_64-apple-tvos` | *[^apple] | | x86 64-bit tvOS |
| 208 | +`x86_64-linux-kernel` | ? | | Linux kernel modules |
| 209 | +`x86_64-pc-solaris` | ? | | |
| 210 | +`x86_64-pc-windows-msvc` | ✓ | | 64-bit Windows XP support |
| 211 | +`x86_64-unknown-dragonfly` | ✓ | ✓ | 64-bit DragonFlyBSD |
| 212 | +`x86_64-unknown-haiku` | ✓ | ✓ | 64-bit Haiku |
| 213 | +`x86_64-unknown-hermit` | ? | | |
| 214 | +`x86_64-unknown-hermit-kernel` | ? | | HermitCore kernel |
| 215 | +`x86_64-unknown-l4re-uclibc` | ? | | |
| 216 | +`x86_64-unknown-openbsd` | ✓ | ✓ | 64-bit OpenBSD |
| 217 | +`x86_64-unknown-uefi` | ? | | |
| 218 | +`x86_64-uwp-windows-gnu` | ✓ | | |
| 219 | +`x86_64-uwp-windows-msvc` | ✓ | | |
| 220 | +`x86_64-wrs-vxworks` | ? | | |
| 221 | + |
| 222 | +[runs on NVIDIA GPUs]: https://github.com/japaric-archived/nvptx#targets |
| 223 | +[^apple]: These targets are only available on macOS. |
0 commit comments