]> git.proxmox.com Git - rustc.git/blame - src/doc/rustc/src/platform-support.md
New upstream version 1.48.0~beta.8+dfsg1
[rustc.git] / src / doc / rustc / src / platform-support.md
CommitLineData
3dfed10e
XL
1# Platform Support
2
3<style type="text/css">
4 td code {
5 white-space: nowrap;
6 }
7</style>
8
9Support for different platforms are organized into three tiers, each with a
10different set of guarantees.
11
12Platforms are identified by their "target triple" which is the string to
13inform the compiler what kind of output should be produced. The columns in the
14tables 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
26Tier 1 platforms can be thought of as "guaranteed to work".
27Specifically 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
35target | 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
47Tier 2 platforms can be thought of as "guaranteed to build". Automated tests
48are not run so it's not guaranteed to produce a working build, but platforms
49often work to quite a good degree and patches are always welcome!
50Specifically, 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
58target | 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
142Tier 3 platforms are those which the Rust codebase has support for, but which
143are not built or tested automatically, and may not work. Official builds are
144not available.
145
146target | 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