From 96f7d929645d84fb7dbbdc97f2e2ae20ed3b41e6 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Thu, 9 May 2019 17:15:53 +0200 Subject: [PATCH 1/3] Generate the platform tier table from YAML --- platform-support.md | 181 +++-------------- src/main.rs | 35 ++++ tiers.yaml | 483 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 545 insertions(+), 154 deletions(-) create mode 100644 tiers.yaml diff --git a/platform-support.md b/platform-support.md index a62ccaac0..3505e9c12 100644 --- a/platform-support.md +++ b/platform-support.md @@ -13,160 +13,33 @@ Platforms are identified by their "target triple" which is the string to inform the compiler what kind of output should be produced. The columns below indicate whether the corresponding component works on the specified platform. -## Tier 1 - -Tier 1 platforms can be thought of as "guaranteed to work". -Specifically they will each satisfy the following requirements: - -* Official binary releases are provided for the platform. -* Automated testing is set up to run tests for the platform. -* Landing changes to the `rust-lang/rust` repository's master branch is gated on - tests passing. -* Documentation for how to use and how to build the platform is available. - -| Target | std |rustc|cargo| notes | -|-------------------------------|-----|-----|-----|----------------------------| -| `i686-apple-darwin` | ✓ | ✓ | ✓ | 32-bit OSX (10.7+, Lion+) | -| `i686-pc-windows-gnu` | ✓ | ✓ | ✓ | 32-bit MinGW (Windows 7+) | -| `i686-pc-windows-msvc` | ✓ | ✓ | ✓ | 32-bit MSVC (Windows 7+) | -| `i686-unknown-linux-gnu` | ✓ | ✓ | ✓ | 32-bit Linux (2.6.18+) | -| `x86_64-apple-darwin` | ✓ | ✓ | ✓ | 64-bit OSX (10.7+, Lion+) | -| `x86_64-pc-windows-gnu` | ✓ | ✓ | ✓ | 64-bit MinGW (Windows 7+) | -| `x86_64-pc-windows-msvc` | ✓ | ✓ | ✓ | 64-bit MSVC (Windows 7+) | -| `x86_64-unknown-linux-gnu` | ✓ | ✓ | ✓ | 64-bit Linux (2.6.18+) | - -## Tier 2 - -Tier 2 platforms can be thought of as "guaranteed to build". Automated tests -are not run so it's not guaranteed to produce a working build, but platforms -often work to quite a good degree and patches are always welcome! Specifically, -these platforms are required to have each of the following: - -* Official binary releases are provided for the platform. -* Automated building is set up, but may not be running tests. -* Landing changes to the `rust-lang/rust` repository's master branch is gated on - platforms **building**. For some platforms only the standard library is - compiled, but for others `rustc` and `cargo` are too. - -| Target | std |rustc|cargo| notes | -|-----------------------------------|-----|-----|-----|-------------------------------------| -| `aarch64-apple-ios` | ✓ | | | ARM64 iOS | -| `aarch64-fuchsia` | ✓ | | | ARM64 Fuchsia | -| `aarch64-linux-android` | ✓ | | | ARM64 Android | -| `aarch64-unknown-linux-gnu` | ✓ | ✓ | ✓ | ARM64 Linux | -| `aarch64-unknown-linux-musl` | ✓ | | | ARM64 Linux with MUSL | -| `arm-linux-androideabi` | ✓ | | | ARMv7 Android | -| `arm-unknown-linux-gnueabi` | ✓ | ✓ | ✓ | ARMv6 Linux | -| `arm-unknown-linux-gnueabihf` | ✓ | ✓ | ✓ | ARMv6 Linux, hardfloat | -| `arm-unknown-linux-musleabi` | ✓ | | | ARMv6 Linux with MUSL | -| `arm-unknown-linux-musleabihf` | ✓ | | | ARMv6 Linux, MUSL, hardfloat | -| `armv5te-unknown-linux-gnueabi` | ✓ | | | ARMv5TE Linux | -| `armv7-apple-ios` | ✓ | | | ARMv7 iOS, Cortex-a8 | -| `armv7-linux-androideabi` | ✓ | | | ARMv7a Android | -| `armv7-unknown-linux-gnueabihf` | ✓ | ✓ | ✓ | ARMv7 Linux | -| `armv7-unknown-linux-musleabihf` | ✓ | | | ARMv7 Linux with MUSL | -| `armv7s-apple-ios` | ✓ | | | ARMv7 iOS, Cortex-a9 | -| `asmjs-unknown-emscripten` | ✓ | | | asm.js via Emscripten | -| `i386-apple-ios` | ✓ | | | 32-bit x86 iOS | -| `i586-pc-windows-msvc` | ✓ | | | 32-bit Windows w/o SSE | -| `i586-unknown-linux-gnu` | ✓ | | | 32-bit Linux w/o SSE | -| `i586-unknown-linux-musl` | ✓ | | | 32-bit Linux w/o SSE, MUSL | -| `i686-linux-android` | ✓ | | | 32-bit x86 Android | -| `i686-unknown-freebsd` | ✓ | ✓ | ✓ | 32-bit FreeBSD | -| `i686-unknown-linux-musl` | ✓ | | | 32-bit Linux with MUSL | -| `mips-unknown-linux-gnu` | ✓ | ✓ | ✓ | MIPS Linux | -| `mips-unknown-linux-musl` | ✓ | | | MIPS Linux with MUSL | -| `mips64-unknown-linux-gnuabi64` | ✓ | ✓ | ✓ | MIPS64 Linux, n64 ABI | -| `mips64el-unknown-linux-gnuabi64` | ✓ | ✓ | ✓ | MIPS64 (LE) Linux, n64 ABI | -| `mipsel-unknown-linux-gnu` | ✓ | ✓ | ✓ | MIPS (LE) Linux | -| `mipsel-unknown-linux-musl` | ✓ | | | MIPS (LE) Linux with MUSL | -| `powerpc-unknown-linux-gnu` | ✓ | ✓ | ✓ | PowerPC Linux | -| `powerpc64-unknown-linux-gnu` | ✓ | ✓ | ✓ | PPC64 Linux | -| `powerpc64le-unknown-linux-gnu` | ✓ | ✓ | ✓ | PPC64LE Linux | -| `riscv32imac-unknown-none-elf` | * | | | Bare RISC-V (RV32IMAC ISA) | -| `riscv32imc-unknown-none-elf` | * | | | Bare RISC-V (RV32IMC ISA) | -| `riscv64gc-unknown-none-elf` | * | | | Bare RISC-V (RV64IMAFDC ISA) | -| `riscv64imac-unknown-none-elf` | * | | | Bare RISC-V (RV64IMAC ISA) | -| `s390x-unknown-linux-gnu` | ✓ | ✓ | ✓ | S390x Linux | -| `sparc64-unknown-linux-gnu` | ✓ | | | SPARC Linux | -| `sparcv9-sun-solaris` | ✓ | | | SPARC Solaris 10/11, illumos | -| `wasm32-unknown-unknown` | ✓ | | | WebAssembly | -| `wasm32-unknown-emscripten` | ✓ | | | WebAssembly via Emscripten | -| `x86_64-apple-ios` | ✓ | | | 64-bit x86 iOS | -| `x86_64-fortanix-unknown-sgx` | ✓ | | | [Fortanix ABI] for 64-bit Intel SGX | -| `x86_64-fuchsia` | ✓ | | | 64-bit Fuchsia | -| `x86_64-linux-android` | ✓ | | | 64-bit x86 Android | -| `x86_64-rumprun-netbsd` | ✓ | | | 64-bit NetBSD Rump Kernel | -| `x86_64-sun-solaris` | ✓ | | | 64-bit Solaris 10/11, illumos | -| `x86_64-unknown-cloudabi` | ✓ | | | 64-bit CloudABI | -| `x86_64-unknown-freebsd` | ✓ | ✓ | ✓ | 64-bit FreeBSD | -| `x86_64-unknown-linux-gnux32` | ✓ | | | 64-bit Linux | -| `x86_64-unknown-linux-musl` | ✓ | ✓ | ✓ | 64-bit Linux with MUSL | -| `x86_64-unknown-netbsd` | ✓ | ✓ | ✓ | NetBSD/amd64 | -| `x86_64-unknown-redox` | ✓ | | | Redox OS | - -[Fortanix ABI]: https://edp.fortanix.com - -* These are bare-metal microcontroller targets that only have access to -the core library, not std. - -## Tier 2.5 - -Tier 2.5 platforms can be thought of as "guaranteed to build", but without -builds available through `rustup`. Automated tests are not run so it's not -guaranteed to produce a working build, but platforms often work to quite a good -degree and patches are always welcome! Specifically, these platforms are -required to have each of the following: - -* Automated building is set up, but may not be running tests. -* Landing changes to the `rust-lang/rust` repository's master branch is gated on - platforms **building**. For some platforms only the standard library is - compiled, but for others `rustc` and `cargo` are too. - -**This status is accidental: no new platforms should reach this state** - -| Target | std |rustc|cargo| notes | -|-----------------------------------|-----|-----|-----|------------------------------| -| `aarch64-unknown-cloudabi` | ✓ | | | ARM64 CloudABI | -| `armv7-unknown-cloudabi-eabihf` | ✓ | | | ARMv7 CloudABI, hardfloat | -| `i686-unknown-cloudabi` | ✓ | | | 32-bit CloudABI | -| `powerpc-unknown-linux-gnuspe` | ✓ | | | PowerPC SPE Linux | -| `sparc-unknown-linux-gnu` | ✓ | | | 32-bit SPARC Linux | - -## Tier 3 - -Tier 3 platforms are those which the Rust codebase has support for, but -which are not built or tested automatically, and may not work. -Official builds are not available. - -| Target | std |rustc|cargo| notes | -|---------------------------------|-----|-----|-----|----------------------------------------------------------| -| `i686-pc-windows-msvc` (XP) | ✓ | | | Windows XP support | -| `i686-unknown-haiku` | ✓ | | | 32-bit Haiku | -| `i686-unknown-netbsd` | ✓ | | | NetBSD/i386 with SSE2 | -| `mips-unknown-linux-uclibc` | ✓ | | | MIPS Linux with uClibc | -| `mipsel-unknown-linux-uclibc` | ✓ | | | MIPS (LE) Linux with uClibc | -| `msp430-none-elf` | * | | | 16-bit MSP430 microcontrollers | -| `sparc64-unknown-netbsd` | ✓ | ✓ | | NetBSD/sparc64 | -| `thumbv6m-none-eabi` | * | | | Bare Cortex-M0, M0+, M1 | -| `thumbv7em-none-eabi` | * | | | Bare Cortex-M4, M7 | -| `thumbv7em-none-eabihf` | * | | | Bare Cortex-M4F, M7F, FPU, hardfloat | -| `thumbv7m-none-eabi` | * | | | Bare Cortex-M3 | -| `x86_64-pc-windows-msvc` (XP) | ✓ | | | Windows XP support | -| `x86_64-unknown-bitrig` | ✓ | ✓ | | 64-bit Bitrig | -| `x86_64-unknown-dragonfly` | ✓ | ✓ | | 64-bit DragonFlyBSD | -| `x86_64-unknown-haiku` | ✓ | | | 64-bit Haiku | -| `x86_64-unknown-openbsd` | ✓ | ✓ | | 64-bit OpenBSD | -| [NVPTX] | ** | | | `--emit=asm` generates PTX code that runs on NVIDIA GPUs | - -[NVPTX]: https://github.com/japaric/nvptx#targets - -* These are bare-metal microcontroller targets that only have access to -the core library, not std. - -** There's backend support for these targets but no target built into -`rustc` (yet). You'll have to write your own target specification file (see the -links in the table). These targets only support the core library. +{% for tier in site.tiers %} +## {{ tier[0] }} + +{{ tier[1].description }} + + + + + + + + + +{% for target in tier[1].platforms %} + + + + + + + +{% endfor %} +
targetstdrustccargonotes
{{ target.tuple }}{{ target.std }}{{ target.rustc }}{{ target.cargo }}{{ target.notes }}
+ +{{ tier[1].footnotes }} + +{% endfor %} But those aren't the only platforms Rust can compile to! Those are the ones with built-in target definitions and/or standard library support. When linking only diff --git a/src/main.rs b/src/main.rs index 04fa62e0b..b409d4e6f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,37 @@ mod channel { } } +mod tiers { + use serde::{Serialize, Deserialize}; + use indexmap::IndexMap; + + #[derive(Serialize, Deserialize)] + pub struct Platform { + pub tuple: String, + pub std: String, + pub rustc: Option, + pub cargo: Option, + pub notes: String, + } + + #[derive(Serialize, Deserialize)] + pub struct Tier { + pub description: String, + pub platforms: Vec, + pub footnotes: String, + } + + /// `tiers.yaml` content. + #[derive(Serialize, Deserialize)] + #[serde(transparent)] + pub struct Tiers { + /// Maps Tier Name -> Data + pub tiers: IndexMap, + } +} + mod config { + use super::tiers::Tiers; use serde::Serialize; #[derive(Serialize)] @@ -32,12 +62,14 @@ mod config { pub platforms: Vec, } + /// The Jekyll `_config.yaml` data. #[derive(Serialize)] pub struct Config { pub exclude: &'static [&'static str], pub include: &'static [&'static str], pub rustup: Vec, pub channels: indexmap::IndexMap<&'static str, Channel>, + pub tiers: Tiers, } } @@ -54,11 +86,14 @@ const CHANNELS: &[&str] = &["stable", "beta", "nightly"]; const CHANNEL_URL_PREFIX: &str = "https://static.rust-lang.org/dist/channel-rust-"; fn main() -> Result<(), Box> { + let tiers: tiers::Tiers = serde_yaml::from_reader(File::open("tiers.yaml")?)?; + let mut cfg = config::Config { exclude: &["target", "vendor"], include: &["_rustinfra_config.json"], rustup: Vec::new(), channels: IndexMap::with_capacity(CHANNELS.len()), + tiers, }; let rustup_url_regex = Regex::new(r"^rustup/dist/([^/]+)/rustup-init(?:\.exe)?$").unwrap(); diff --git a/tiers.yaml b/tiers.yaml new file mode 100644 index 000000000..931e6748f --- /dev/null +++ b/tiers.yaml @@ -0,0 +1,483 @@ +Tier 1: + description: | + Tier 1 platforms can be thought of as "guaranteed to work". + Specifically they will each satisfy the following requirements: + + * Official binary releases are provided for the platform. + * Automated testing is set up to run tests for the platform. + * Landing changes to the `rust-lang/rust` repository's master branch is gated on + tests passing. + * Documentation for how to use and how to build the platform is available. + platforms: + - tuple: i686-apple-darwin + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 32-bit OSX (10.7+, Lion+) + - tuple: i686-pc-windows-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 32-bit MinGW (Windows 7+) + - tuple: i686-pc-windows-msvc + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 32-bit MSVC (Windows 7+) + - tuple: i686-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 32-bit Linux (2.6.18+) + - tuple: x86_64-apple-darwin + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit OSX (10.7+, Lion+) + - tuple: x86_64-pc-windows-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit MinGW (Windows 7+) + - tuple: x86_64-pc-windows-msvc + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit MSVC (Windows 7+) + - tuple: x86_64-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit Linux (2.6.18+) + footnotes: "" +Tier 2: + description: | + Tier 2 platforms can be thought of as "guaranteed to build". Automated tests + are not run so it's not guaranteed to produce a working build, but platforms + often work to quite a good degree and patches are always welcome! + Specifically, these platforms are required to have each of the following: + + * Official binary releases are provided for the platform. + * Automated building is set up, but may not be running tests. + * Landing changes to the `rust-lang/rust` repository's master branch is gated on + platforms **building**. For some platforms only the standard library is + compiled, but for others `rustc` and `cargo` are too. + platforms: + - tuple: aarch64-apple-ios + std: ✓ + rustc: + cargo: + notes: ARM64 iOS + - tuple: aarch64-fuchsia + std: ✓ + rustc: + cargo: + notes: ARM64 Fuchsia + - tuple: aarch64-linux-android + std: ✓ + rustc: + cargo: + notes: ARM64 Android + - tuple: aarch64-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: ARM64 Linux + - tuple: aarch64-unknown-linux-musl + std: ✓ + rustc: + cargo: + notes: ARM64 Linux with MUSL + - tuple: arm-linux-androideabi + std: ✓ + rustc: + cargo: + notes: ARMv7 Android + - tuple: arm-unknown-linux-gnueabi + std: ✓ + rustc: ✓ + cargo: ✓ + notes: ARMv6 Linux + - tuple: arm-unknown-linux-gnueabihf + std: ✓ + rustc: ✓ + cargo: ✓ + notes: ARMv6 Linux, hardfloat + - tuple: arm-unknown-linux-musleabi + std: ✓ + rustc: + cargo: + notes: ARMv6 Linux with MUSL + - tuple: arm-unknown-linux-musleabihf + std: ✓ + rustc: + cargo: + notes: ARMv6 Linux, MUSL, hardfloat + - tuple: armv5te-unknown-linux-gnueabi + std: ✓ + rustc: + cargo: + notes: ARMv5TE Linux + - tuple: armv7-apple-ios + std: ✓ + rustc: + cargo: + notes: ARMv7 iOS, Cortex-a8 + - tuple: armv7-linux-androideabi + std: ✓ + rustc: + cargo: + notes: ARMv7a Android + - tuple: armv7-unknown-linux-gnueabihf + std: ✓ + rustc: ✓ + cargo: ✓ + notes: ARMv7 Linux + - tuple: armv7-unknown-linux-musleabihf + std: ✓ + rustc: + cargo: + notes: ARMv7 Linux with MUSL + - tuple: armv7s-apple-ios + std: ✓ + rustc: + cargo: + notes: ARMv7 iOS, Cortex-A9 + - tuple: asmjs-unknown-emscripten + std: ✓ + rustc: + cargo: + notes: asm.js via Emscripten + - tuple: i386-apple-ios + std: ✓ + rustc: + cargo: + notes: 32-bit x86 iOS + - tuple: i586-pc-windows-msvc + std: ✓ + rustc: + cargo: + notes: 32-bit Windows w/o SSE + - tuple: i586-unknown-linux-gnu + std: ✓ + rustc: + cargo: + notes: 32-bit Linux w/o SSE + - tuple: i586-unknown-linux-musl + std: ✓ + rustc: + cargo: + notes: 32-bit Linux w/o SSE, MUSL + - tuple: i686-linux-android + std: ✓ + rustc: + cargo: + notes: 32-bit x86 Android + - tuple: i686-unknown-freebsd + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 32-bit FreeBSD + - tuple: i686-unknown-linux-musl + std: ✓ + rustc: + cargo: + notes: 32-bit Linux with MUSL + - tuple: mips-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: MIPS Linux + - tuple: mips-unknown-linux-musl + std: ✓ + rustc: + cargo: + notes: MIPS Linux with MUSL + - tuple: mips64-unknown-linux-gnuabi64 + std: ✓ + rustc: ✓ + cargo: ✓ + notes: MIPS64 Linux, n64 ABI + - tuple: mips64el-unknown-linux-gnuabi64 + std: ✓ + rustc: ✓ + cargo: ✓ + notes: MIPS64 (LE) Linux, n64 ABI + - tuple: mipsel-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: MIPS (LE) Linux + - tuple: mipsel-unknown-linux-musl + std: ✓ + rustc: + cargo: + notes: MIPS (LE) Linux with MUSL + - tuple: powerpc-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: PowerPC Linux + - tuple: powerpc64-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: PPC64 Linux + - tuple: powerpc64le-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: PPC64LE Linux + - tuple: riscv32imac-unknown-none-elf + std: "*" + rustc: + cargo: + notes: Bare RISC-V (RV32IMAC ISA) + - tuple: riscv32imc-unknown-none-elf + std: "*" + rustc: + cargo: + notes: Bare RISC-V (RV32IMC ISA) + - tuple: riscv64gc-unknown-none-elf + std: "*" + rustc: + cargo: + notes: Bare RISC-V (RV64IMAFDC ISA) + - tuple: riscv64imac-unknown-none-elf + std: "*" + rustc: + cargo: + notes: Bare RISC-V (RV64IMAC ISA) + - tuple: s390x-unknown-linux-gnu + std: ✓ + rustc: ✓ + cargo: ✓ + notes: S390x Linux + - tuple: sparc64-unknown-linux-gnu + std: ✓ + rustc: + cargo: + notes: SPARC Linux + - tuple: sparcv9-sun-solaris + std: ✓ + rustc: + cargo: + notes: SPARC Solaris 10/11, illumos + - tuple: wasm32-unknown-unknown + std: ✓ + rustc: + cargo: + notes: WebAssembly + - tuple: wasm32-unknown-emscripten + std: ✓ + rustc: + cargo: + notes: WebAssembly via Emscripten + - tuple: x86_64-apple-ios + std: ✓ + rustc: + cargo: + notes: 64-bit x86 iOS + - tuple: x86_64-fortanix-unknown-sgx + std: ✓ + rustc: + cargo: + notes: 'Fortanix ABI for 64-bit Intel SGX' + - tuple: x86_64-fuchsia + std: ✓ + rustc: + cargo: + notes: 64-bit Fuchsia + - tuple: x86_64-linux-android + std: ✓ + rustc: + cargo: + notes: 64-bit x86 Android + - tuple: x86_64-rumprun-netbsd + std: ✓ + rustc: + cargo: + notes: 64-bit NetBSD Rump Kernel + - tuple: x86_64-sun-solaris + std: ✓ + rustc: + cargo: + notes: 64-bit Solaris 10/11, illumos + - tuple: x86_64-unknown-cloudabi + std: ✓ + rustc: + cargo: + notes: 64-bit CloudABI + - tuple: x86_64-unknown-freebsd + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit FreeBSD + - tuple: x86_64-unknown-linux-gnux32 + std: ✓ + rustc: + cargo: + notes: 64-bit Linux (x32 ABI) + - tuple: x86_64-unknown-linux-musl + std: ✓ + rustc: ✓ + cargo: ✓ + notes: 64-bit Linux with MUSL + - tuple: x86_64-unknown-netbsd + std: ✓ + rustc: ✓ + cargo: ✓ + notes: NetBSD/amd64 + - tuple: x86_64-unknown-redox + std: ✓ + rustc: + cargo: + notes: Redox OS + footnotes: | + * These are bare-metal microcontroller targets that only have + access to the core library, not std. +Tier 2.5: + description: | + Tier 2.5 platforms can be thought of as "guaranteed to build", but without + builds available through `rustup`. Automated tests are not run so it's not + guaranteed to produce a working build, but platforms often work to quite a good + degree and patches are always welcome! Specifically, these platforms are + required to have each of the following: + + * Automated building is set up, but may not be running tests. + * Landing changes to the `rust-lang/rust` repository's master branch is gated on + platforms **building**. For some platforms only the standard library is + compiled, but for others `rustc` and `cargo` are too. + + **This status is accidental: no new platforms should reach this state** + platforms: + - tuple: aarch64-unknown-cloudabi + std: ✓ + rustc: + cargo: + notes: ARM64 CloudABI + - tuple: armv7-unknown-cloudabi-eabihf + std: ✓ + rustc: + cargo: + notes: ARMv7 CloudABI, hardfloat + - tuple: i686-unknown-cloudabi + std: ✓ + rustc: + cargo: + notes: 32-bit CloudABI + - tuple: powerpc-unknown-linux-gnuspe + std: ✓ + rustc: + cargo: + notes: PowerPC SPE Linux + - tuple: sparc-unknown-linux-gnu + std: ✓ + rustc: + cargo: + notes: 32-bit SPARC Linux + footnotes: "" +Tier 3: + description: Tier 3 platforms are those which the Rust codebase has support + for, but which are not built or tested automatically, and may not work. + Official builds are not available. + platforms: + - tuple: i686-pc-windows-msvc + std: ✓ + rustc: + cargo: + notes: 32-bit Windows XP support + - tuple: i686-unknown-haiku + std: ✓ + rustc: + cargo: + notes: 32-bit Haiku + - tuple: i686-unknown-netbsd + std: ✓ + rustc: + cargo: + notes: NetBSD/i386 with SSE2 + - tuple: mips-unknown-linux-uclibc + std: ✓ + rustc: + cargo: + notes: MIPS Linux with uClibc + - tuple: mipsel-unknown-linux-uclibc + std: ✓ + rustc: + cargo: + notes: MIPS (LE) Linux with uClibc + - tuple: msp430-none-elf + std: "*" + rustc: + cargo: + notes: 16-bit MSP430 microcontrollers + - tuple: sparc64-unknown-netbsd + std: ✓ + rustc: ✓ + cargo: + notes: NetBSD/sparc64 + - tuple: thumbv6m-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M0, M0+, M1 + - tuple: thumbv7em-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M4, M7 + - tuple: thumbv7em-none-eabihf + std: "*" + rustc: + cargo: + notes: Bare Cortex-M4F, M7F, FPU, hardfloat + - tuple: thumbv7m-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M3 + - tuple: x86_64-pc-windows-msvc + std: ✓ + rustc: + cargo: + notes: 64-bit Windows XP support + - tuple: x86_64-unknown-bitrig + std: ✓ + rustc: ✓ + cargo: + notes: 64-bit Bitrig + - tuple: x86_64-unknown-dragonfly + std: ✓ + rustc: ✓ + cargo: + notes: 64-bit DragonFlyBSD + - tuple: x86_64-unknown-haiku + std: ✓ + rustc: + cargo: + notes: 64-bit Haiku + - tuple: x86_64-unknown-openbsd + std: ✓ + rustc: ✓ + cargo: + notes: 64-bit OpenBSD + - tuple: nvptx-nvidia-cuda + std: "**" + rustc: + cargo: + notes: --emit=asm generates PTX code that + runs on NVIDIA GPUs + - tuple: nvptx64-nvidia-cuda + std: "**" + rustc: + cargo: + notes: --emit=asm generates PTX code that + runs on NVIDIA GPUs + footnotes: | + * These are bare-metal microcontroller targets that only have access to + the core library, not std. + + ** There's backend support for these targets but no target built into + `rustc` (yet). You'll have to write your own target specification file (see the + links in the table). These targets only support the core library. \ No newline at end of file From afa16751ef01a3978d926249d197ef0c706dcb89 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Thu, 9 May 2019 17:24:03 +0200 Subject: [PATCH 2/3] Update platform support list Adds missing platforms, and promotes thumb targets to Tier 2. --- tiers.yaml | 80 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 20 deletions(-) diff --git a/tiers.yaml b/tiers.yaml index 931e6748f..f4f51346b 100644 --- a/tiers.yaml +++ b/tiers.yaml @@ -88,6 +88,11 @@ Tier 2: rustc: cargo: notes: ARM64 Linux with MUSL + - tuple: aarch64-pc-windows-msvc + std: ✓ + rustc: + cargo: + notes: ARM64 Windows MSVC - tuple: arm-linux-androideabi std: ✓ rustc: @@ -113,11 +118,26 @@ Tier 2: rustc: cargo: notes: ARMv6 Linux, MUSL, hardfloat + - tuple: armebv7r-none-eabi + std: "*" + rustc: + cargo: + notes: Bare ARMv7-R, Big Endian + - tuple: armebv7r-none-eabihf + std: "*" + rustc: + cargo: + notes: Bare ARMv7-R, Big Endian, hardfloat - tuple: armv5te-unknown-linux-gnueabi std: ✓ rustc: cargo: notes: ARMv5TE Linux + - tuple: armv5te-unknown-linux-musleabi + std: ✓ + rustc: + cargo: + notes: ARMv5TE Linux with MUSL - tuple: armv7-apple-ios std: ✓ rustc: @@ -138,6 +158,16 @@ Tier 2: rustc: cargo: notes: ARMv7 Linux with MUSL + - tuple: armv7r-none-eabi + std: "*" + rustc: + cargo: + notes: Bare ARMv7-R + - tuple: armv7r-none-eabihf + std: "*" + rustc: + cargo: + notes: Bare ARMv7-R, hardfloat - tuple: armv7s-apple-ios std: ✓ rustc: @@ -263,6 +293,36 @@ Tier 2: rustc: cargo: notes: SPARC Solaris 10/11, illumos + - tuple: thumbv6m-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M0, M0+, M1 + - tuple: thumbv7em-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M4, M7 + - tuple: thumbv7em-none-eabihf + std: "*" + rustc: + cargo: + notes: Bare Cortex-M4F, M7F, FPU, hardfloat + - tuple: thumbv7m-none-eabi + std: "*" + rustc: + cargo: + notes: Bare Cortex-M3 + - tuple: thumbv7neon-linux-androideabi + std: ✓ + rustc: + cargo: + notes: Thumb2-mode ARMv7a Android with NEON + - tuple: thumbv7neon-unknown-linux-gnueabihf + std: ✓ + rustc: + cargo: + notes: Thumb2-mode ARMv7a Linux with NEON - tuple: wasm32-unknown-unknown std: ✓ rustc: @@ -417,26 +477,6 @@ Tier 3: rustc: ✓ cargo: notes: NetBSD/sparc64 - - tuple: thumbv6m-none-eabi - std: "*" - rustc: - cargo: - notes: Bare Cortex-M0, M0+, M1 - - tuple: thumbv7em-none-eabi - std: "*" - rustc: - cargo: - notes: Bare Cortex-M4, M7 - - tuple: thumbv7em-none-eabihf - std: "*" - rustc: - cargo: - notes: Bare Cortex-M4F, M7F, FPU, hardfloat - - tuple: thumbv7m-none-eabi - std: "*" - rustc: - cargo: - notes: Bare Cortex-M3 - tuple: x86_64-pc-windows-msvc std: ✓ rustc: From 861f8ce32a7a1c5cd8f77b3c0602c65308a68069 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Thu, 9 May 2019 17:28:26 +0200 Subject: [PATCH 3/3] Cargo runs on Dragonfly and OpenBSD At least according to #165 Closes #165 --- tiers.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiers.yaml b/tiers.yaml index f4f51346b..550602713 100644 --- a/tiers.yaml +++ b/tiers.yaml @@ -490,7 +490,7 @@ Tier 3: - tuple: x86_64-unknown-dragonfly std: ✓ rustc: ✓ - cargo: + cargo: ✓ notes: 64-bit DragonFlyBSD - tuple: x86_64-unknown-haiku std: ✓ @@ -500,7 +500,7 @@ Tier 3: - tuple: x86_64-unknown-openbsd std: ✓ rustc: ✓ - cargo: + cargo: ✓ notes: 64-bit OpenBSD - tuple: nvptx-nvidia-cuda std: "**"