]>
Commit | Line | Data |
---|---|---|
3dfed10e XL |
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 | -------|-----|------|------- | |
1b1a35ee | 60 | `aarch64-apple-ios` | ✓ | | ARM64 iOS |
3dfed10e XL |
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) | |
1b1a35ee | 65 | `aarch64-unknown-linux-musl` | ✓ | ✓ | ARM64 Linux with MUSL |
3dfed10e XL |
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 | |
1b1a35ee | 121 | `thumbv8m.main-none-eabihf` | * | | ARMv8-M Mainline, hardfloat |
3dfed10e XL |
122 | `wasm32-unknown-emscripten` | ✓ | | WebAssembly via Emscripten |
123 | `wasm32-unknown-unknown` | ✓ | | WebAssembly | |
124 | `wasm32-wasi` | ✓ | | WebAssembly with WASI | |
1b1a35ee | 125 | `x86_64-apple-ios` | ✓ | | 64-bit x86 iOS |
3dfed10e XL |
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-freebsd` | ✓ | ✓ | 64-bit FreeBSD | |
132 | `x86_64-unknown-illumos` | ✓ | ✓ | illumos | |
133 | `x86_64-unknown-linux-gnux32` | ✓ | | 64-bit Linux (x32 ABI) (kernel 4.15, glibc 2.27) | |
134 | `x86_64-unknown-linux-musl` | ✓ | ✓ | 64-bit Linux with MUSL | |
135 | `x86_64-unknown-netbsd` | ✓ | ✓ | NetBSD/amd64 | |
136 | `x86_64-unknown-redox` | ✓ | | Redox OS | |
137 | ||
138 | [Fortanix ABI]: https://edp.fortanix.com/ | |
139 | ||
140 | ## Tier 3 | |
141 | ||
142 | Tier 3 platforms are those which the Rust codebase has support for, but which | |
143 | are not built or tested automatically, and may not work. Official builds are | |
144 | not available. | |
145 | ||
146 | target | std | host | notes | |
147 | -------|-----|------|------- | |
148 | `aarch64-apple-darwin` | ? | | ARM64 macOS | |
1b1a35ee | 149 | `aarch64-apple-tvos` | * | | ARM64 tvOS |
3dfed10e XL |
150 | `aarch64-unknown-cloudabi` | ✓ | | ARM64 CloudABI |
151 | `aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD | |
152 | `aarch64-unknown-hermit` | ? | | | |
153 | `aarch64-unknown-netbsd` | ? | | | |
154 | `aarch64-unknown-openbsd` | ✓ | ✓ | ARM64 OpenBSD | |
155 | `aarch64-unknown-redox` | ? | | ARM64 Redox OS | |
156 | `aarch64-uwp-windows-msvc` | ? | | | |
157 | `aarch64-wrs-vxworks` | ? | | | |
158 | `armv4t-unknown-linux-gnueabi` | ? | | | |
159 | `armv6-unknown-freebsd` | ✓ | ✓ | ARMv6 FreeBSD | |
160 | `armv6-unknown-netbsd-eabihf` | ? | | | |
1b1a35ee | 161 | `armv7-apple-ios` | ✓ | | ARMv7 iOS, Cortex-a8 |
3dfed10e XL |
162 | `armv7-unknown-cloudabi-eabihf` | ✓ | | ARMv7 CloudABI, hardfloat |
163 | `armv7-unknown-freebsd` | ✓ | ✓ | ARMv7 FreeBSD | |
164 | `armv7-unknown-netbsd-eabihf` | ? | | | |
165 | `armv7-wrs-vxworks-eabihf` | ? | | | |
166 | `armv7a-none-eabihf` | * | | ARM Cortex-A, hardfloat | |
1b1a35ee XL |
167 | `armv7s-apple-ios` | ✓ | | |
168 | `avr-unknown-gnu-atmega328` | ✗ | | AVR. Requires `-Z build-std=core` | |
3dfed10e | 169 | `hexagon-unknown-linux-musl` | ? | | |
1b1a35ee | 170 | `i386-apple-ios` | ✓ | | 32-bit x86 iOS |
3dfed10e XL |
171 | `i686-apple-darwin` | ✓ | ✓ | 32-bit OSX (10.7+, Lion+) |
172 | `i686-pc-windows-msvc` | ✓ | | 32-bit Windows XP support | |
173 | `i686-unknown-cloudabi` | ✓ | | 32-bit CloudABI | |
174 | `i686-unknown-uefi` | ? | | 32-bit UEFI | |
175 | `i686-unknown-haiku` | ✓ | ✓ | 32-bit Haiku | |
176 | `i686-unknown-netbsd` | ✓ | | NetBSD/i386 with SSE2 | |
177 | `i686-unknown-openbsd` | ✓ | ✓ | 32-bit OpenBSD | |
178 | `i686-uwp-windows-gnu` | ? | | | |
179 | `i686-uwp-windows-msvc` | ? | | | |
180 | `i686-wrs-vxworks` | ? | | | |
181 | `mips-unknown-linux-uclibc` | ✓ | | MIPS Linux with uClibc | |
182 | `mipsel-unknown-linux-uclibc` | ✓ | | MIPS (LE) Linux with uClibc | |
183 | `mipsel-sony-psp` | * | | MIPS (LE) Sony PlayStation Portable (PSP) | |
184 | `mipsisa32r6-unknown-linux-gnu` | ? | | | |
185 | `mipsisa32r6el-unknown-linux-gnu` | ? | | | |
186 | `mipsisa64r6-unknown-linux-gnuabi64` | ? | | | |
187 | `mipsisa64r6el-unknown-linux-gnuabi64` | ? | | | |
188 | `msp430-none-elf` | * | | 16-bit MSP430 microcontrollers | |
189 | `powerpc-unknown-linux-gnuspe` | ✓ | | PowerPC SPE Linux | |
190 | `powerpc-unknown-linux-musl` | ? | | | |
191 | `powerpc-unknown-netbsd` | ? | | | |
192 | `powerpc-wrs-vxworks` | ? | | | |
193 | `powerpc-wrs-vxworks-spe` | ? | | | |
194 | `powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv1 and ELFv2) | |
195 | `powerpc64-unknown-linux-musl` | ? | | | |
196 | `powerpc64-wrs-vxworks` | ? | | | |
197 | `powerpc64le-unknown-linux-musl` | ? | | | |
1b1a35ee | 198 | `riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33) |
3dfed10e XL |
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 | |
1b1a35ee XL |
206 | `x86_64-apple-ios-macabi` | ✓ | | Apple Catalyst |
207 | `x86_64-apple-tvos` | * | | x86 64-bit tvOS | |
3dfed10e XL |
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-cloudabi` | ✓ | | 64-bit CloudABI | |
212 | `x86_64-unknown-dragonfly` | ✓ | ✓ | 64-bit DragonFlyBSD | |
213 | `x86_64-unknown-haiku` | ✓ | ✓ | 64-bit Haiku | |
214 | `x86_64-unknown-hermit` | ? | | | |
215 | `x86_64-unknown-hermit-kernel` | ? | | HermitCore kernel | |
216 | `x86_64-unknown-l4re-uclibc` | ? | | | |
217 | `x86_64-unknown-openbsd` | ✓ | ✓ | 64-bit OpenBSD | |
218 | `x86_64-unknown-uefi` | ? | | | |
219 | `x86_64-uwp-windows-gnu` | ✓ | | | |
220 | `x86_64-uwp-windows-msvc` | ✓ | | | |
221 | `x86_64-wrs-vxworks` | ? | | | |
222 | ||
223 | [runs on NVIDIA GPUs]: https://github.com/japaric-archived/nvptx#targets |