Skip to main content
Rust supports a wide variety of platforms through a three-tier system, each with different guarantees and levels of support. Targets are identified by their “target triple” which tells the compiler what kind of output should be produced.
Component availability is tracked at rust-lang.github.io/rustup-components-history

Tier 1 with Host Tools

Tier 1 targets are guaranteed to work. The Rust project builds official binary releases for each tier 1 target, and automated testing ensures that each tier 1 target builds and passes tests after each change. Tier 1 targets with host tools additionally support running tools like rustc and cargo natively on the target. This allows the target to be used as a development platform, not just a compilation target.
All tier 1 targets with host tools support the full standard library.

Supported Platforms

TargetPlatform
aarch64-apple-darwinARM64 macOS (11.0+, Big Sur+)
aarch64-pc-windows-msvcARM64 Windows MSVC
aarch64-unknown-linux-gnuARM64 Linux (kernel 4.1+, glibc 2.17+)
i686-pc-windows-msvc32-bit MSVC (Windows 10+, Windows Server 2016+)
i686-unknown-linux-gnu32-bit Linux (kernel 3.2+, glibc 2.17+)
x86_64-pc-windows-gnu64-bit MinGW (Windows 10+, Windows Server 2016+)
x86_64-pc-windows-msvc64-bit MSVC (Windows 10+, Windows Server 2016+)
x86_64-unknown-linux-gnu64-bit Linux (kernel 3.2+, glibc 2.17+)
x86 32-bit Floating-Point ABIDue to limitations of the C ABI, floating-point support on i686 targets is non-compliant. Floating-point return values are passed via an x87 register, so NaN payload bits can be lost. Functions with the default Rust ABI are not affected.MSVC Alignment IssuesOn i686-pc-windows-msvc, native C code can cause types with alignment greater than 4 bytes to be incorrectly aligned to only 4 bytes (affecting u64, i64, etc.). Rust applies mitigations, but unsafe code that assumes proper alignment can still cause unsoundness.

Tier 2 with Host Tools

Tier 2 targets are guaranteed to build. The Rust project builds official binary releases of the standard library for each tier 2 target, and automated builds ensure they can be used as build targets after each change.
Automated tests are not always run for Tier 2 targets, so builds may not always be fully functional. However, these targets often work well and patches are welcome!
Tier 2 targets with host tools support running rustc and cargo natively, enabling use as a development platform.

Supported Platforms

TargetPlatform
aarch64-unknown-linux-muslARM64 Linux with musl 1.2.5
loongarch64-unknown-linux-gnuLoongArch64 Linux (kernel 5.19+, glibc 2.36)
loongarch64-unknown-linux-muslLoongArch64 Linux with musl 1.2.5
powerpc64le-unknown-linux-gnuPPC64LE Linux (kernel 3.10+, glibc 2.17)
powerpc64le-unknown-linux-muslPPC64LE Linux with musl 1.2.5
riscv64gc-unknown-linux-gnuRISC-V Linux (kernel 4.20+, glibc 2.29)
s390x-unknown-linux-gnuS390x Linux (kernel 3.2+, glibc 2.17)
x86_64-unknown-freebsd64-bit x86 FreeBSD
x86_64-unknown-illumosillumos
x86_64-unknown-linux-musl64-bit Linux with musl 1.2.5
x86_64-unknown-netbsdNetBSD/amd64
TargetPlatform
aarch64-pc-windows-gnullvmARM64 MinGW (Windows 10+), LLVM ABI
i686-pc-windows-gnu32-bit MinGW (Windows 10+, Windows Server 2016+)
x86_64-apple-darwin64-bit macOS (10.12+, Sierra+)
x86_64-pc-windows-gnullvm64-bit x86 MinGW (Windows 10+), LLVM ABI
TargetPlatform
arm-unknown-linux-gnueabiArmv6 Linux (kernel 3.2+, glibc 2.17)
arm-unknown-linux-gnueabihfArmv6 Linux, hardfloat
armv7-unknown-linux-gnueabihfArmv7-A Linux, hardfloat
TargetPlatform
aarch64-unknown-linux-ohosARM64 OpenHarmony
armv7-unknown-linux-ohosArmv7-A OpenHarmony
x86_64-unknown-linux-ohosx86_64 OpenHarmony
x86_64-pc-solaris64-bit x86 Solaris 11.4
sparcv9-sun-solarisSPARC V9 Solaris 11.4

Tier 2 without Host Tools

These Tier 2 targets are guaranteed to build but do not support running host tools like rustc and cargo natively.
The std column indicates standard library support:
  • ✓ Full standard library available
  • * Only no_std development supported
  • ? Standard library support is work-in-progress

Mobile & Embedded Platforms

TargetstdPlatform
aarch64-apple-iosARM64 iOS
aarch64-apple-ios-simApple iOS Simulator on ARM64
aarch64-apple-ios-macabiMac Catalyst on ARM64
aarch64-apple-tvosARM64 tvOS
aarch64-apple-tvos-simARM64 tvOS Simulator
aarch64-apple-visionosARM64 Apple visionOS
aarch64-apple-visionos-simARM64 Apple visionOS Simulator
aarch64-apple-watchosARM64 Apple WatchOS
aarch64-apple-watchos-simARM64 Apple WatchOS Simulator
TargetstdPlatform
aarch64-linux-androidARM64 Android
arm-linux-androideabiArmv6 Android
armv7-linux-androideabiArmv7-A Android
i686-linux-android32-bit x86 Android
thumbv7neon-linux-androideabiThumb2-mode Armv7-A Android with NEON
x86_64-linux-android64-bit x86 Android
TargetstdPlatform
aarch64-unknown-none*Bare ARM64, hardfloat
aarch64-unknown-none-softfloat*Bare ARM64, softfloat
armv7a-none-eabi*Bare Armv7-A
armv7a-none-eabihf*Bare Armv7-A, hardfloat
armv7r-none-eabi*Bare Armv7-R
armv7r-none-eabihf*Bare Armv7-R, hardfloat
armv8r-none-eabihf*Bare Armv8-R, hardfloat
thumbv6m-none-eabi*Bare Armv6-M
thumbv7em-none-eabi*Bare Armv7E-M
thumbv7em-none-eabihf*Bare Armv7E-M, hardfloat
thumbv7m-none-eabi*Bare Armv7-M
thumbv8m.base-none-eabi*Bare Armv8-M Baseline
thumbv8m.main-none-eabi*Bare Armv8-M Mainline
thumbv8m.main-none-eabihf*Bare Armv8-M Mainline, hardfloat
TargetstdPlatform
wasm32-unknown-emscriptenWebAssembly via Emscripten
wasm32-unknown-unknownWebAssembly
wasm32-wasip1WebAssembly with WASIp1
wasm32-wasip1-threadsWebAssembly with WASI Preview 1 and threads
wasm32-wasip2WebAssembly with WASIp2
wasm32v1-none*WebAssembly limited to 1.0 features
TargetstdPlatform
riscv32i-unknown-none-elf*Bare RISC-V (RV32I ISA)
riscv32im-unknown-none-elf*Bare RISC-V (RV32IM ISA)
riscv32imac-unknown-none-elf*Bare RISC-V (RV32IMAC ISA)
riscv32imafc-unknown-none-elf*Bare RISC-V (RV32IMAFC ISA)
riscv32imc-unknown-none-elf*Bare RISC-V (RV32IMC ISA)
riscv64a23-unknown-linux-gnuRISC-V Linux (kernel 6.8.0+, glibc 2.39)
riscv64gc-unknown-linux-muslRISC-V Linux with musl 1.2.5
riscv64gc-unknown-none-elf*Bare RISC-V (RV64IMAFDC ISA)
riscv64im-unknown-none-elf*Bare RISC-V (RV64IM ISA)
riscv64imac-unknown-none-elf*Bare RISC-V (RV64IMAC ISA)

Tier 3

Tier 3 targets have support in the Rust codebase, but the Rust project does not build or test them automatically. Official builds are not available.
Tier 3 targets may or may not work. Use at your own risk. Patches and contributions are welcome!

Notable Tier 3 Platforms

  • aarch64-nintendo-switch-freestanding - ARM64 Nintendo Switch, Horizon
  • armv6k-nintendo-3ds - Armv6k Nintendo 3DS, Horizon
  • armv7-sony-vita-newlibeabihf - Armv7-A Cortex-A9 Sony PlayStation Vita
  • mipsel-sony-psp - MIPS (LE) Sony PlayStation Portable (PSP)
  • mipsel-sony-psx - MIPS (LE) Sony PlayStation 1 (PSX)
  • aarch64-unknown-freebsd - ARM64 FreeBSD
  • aarch64-unknown-netbsd - ARM64 NetBSD
  • aarch64-unknown-openbsd - ARM64 OpenBSD
  • x86_64-unknown-openbsd - 64-bit OpenBSD
  • x86_64-unknown-haiku - 64-bit Haiku
  • x86_64-unknown-hurd-gnu - 64-bit GNU/Hurd
  • aarch64-unknown-nto-qnx710 - ARM64 QNX Neutrino 7.1 RTOS
  • armv7-rtems-eabihf - RTEMS OS for ARM BSPs
  • x86_64-wrs-vxworks - x86_64 VxWorks OS
  • aarch64-kmc-solid_asp3 - ARM64 SOLID with TOPPERS/ASP3
  • nvptx64-nvidia-cuda - NVIDIA CUDA (emits PTX code for NVIDIA GPUs)
  • amdgcn-amd-amdhsa - AMD GPU compilation target
  • aarch64-unknown-fuchsia - ARM64 Fuchsia
  • x86_64-unknown-fuchsia - 64-bit x86 Fuchsia
  • x86_64-unknown-redox - Redox OS
  • x86_64-unknown-hermit - x86_64 Hermit

Understanding Target Triples

A target triple consists of three or four parts separated by hyphens:
<architecture>-<vendor>-<os>-<environment>
Examples:
  • x86_64-unknown-linux-gnu - x86_64 architecture, unknown vendor, Linux OS, GNU environment
  • aarch64-apple-darwin - ARM64 architecture, Apple vendor, Darwin OS
  • wasm32-unknown-unknown - WebAssembly 32-bit, unknown vendor and OS
You can see your host target triple by running rustc --version --verbose and looking at the “host” field.

Policy & Requirements

Each tier has specific requirements and guarantees: Tier 1: Must not block forward progress. Must have automated testing. Official binaries provided. Tier 2: Must build successfully. Official standard library binaries provided. May not have complete test coverage. Tier 3: May or may not build. Community maintained. No official binaries. For detailed tier policies, see the Target Tier Policy documentation.

Build docs developers (and LLMs) love