Our 32-bit targets without target_os = "none" are:
aarch64-unknown-linux-gnu_ilp32 os: linux env: gnu
aarch64_be-unknown-linux-gnu_ilp32 os: linux env: gnu
arm-linux-androideabi os: android env:
arm-unknown-linux-gnueabi os: linux env: gnu
arm-unknown-linux-gnueabihf os: linux env: gnu
arm-unknown-linux-musleabi os: linux env: musl
arm-unknown-linux-musleabihf os: linux env: musl
arm64_32-apple-watchos os: watchos env:
armeb-unknown-linux-gnueabi os: linux env: gnu
armv4t-unknown-linux-gnueabi os: linux env: gnu
armv5te-unknown-linux-gnueabi os: linux env: gnu
armv5te-unknown-linux-musleabi os: linux env: musl
armv5te-unknown-linux-uclibceabi os: linux env: uclibc
armv6-unknown-freebsd os: freebsd env:
armv6-unknown-netbsd-eabihf os: netbsd env:
armv6k-nintendo-3ds os: horizon env: newlib
armv7-linux-androideabi os: android env:
armv7-oe-linux-gnueabihf os: linux env: gnu
armv7-rtems-eabihf os: rtems env: newlib
armv7-sony-vita-newlibeabihf os: vita env: newlib
armv7-unknown-freebsd os: freebsd env:
armv7-unknown-linux-gnueabi os: linux env: gnu
armv7-unknown-linux-gnueabihf os: linux env: gnu
armv7-unknown-linux-musleabi os: linux env: musl
armv7-unknown-linux-musleabihf os: linux env: musl
armv7-unknown-linux-ohos os: linux env: ohos
armv7-unknown-linux-uclibceabi os: linux env: uclibc
armv7-unknown-linux-uclibceabihf os: linux env: uclibc
armv7-unknown-netbsd-eabihf os: netbsd env:
armv7-unknown-trusty os: trusty env:
armv7-wrs-vxworks-eabihf os: vxworks env: gnu
armv7a-kmc-solid_asp3-eabi os: solid_asp3 env:
armv7a-kmc-solid_asp3-eabihf os: solid_asp3 env:
armv7a-nuttx-eabi os: nuttx env:
armv7a-nuttx-eabihf os: nuttx env:
armv7k-apple-watchos os: watchos env:
armv7s-apple-ios os: ios env:
csky-unknown-linux-gnuabiv2 os: linux env: gnu
csky-unknown-linux-gnuabiv2hf os: linux env: gnu
hexagon-unknown-linux-musl os: linux env: musl
hexagon-unknown-qurt os: qurt env:
i386-apple-ios os: ios env: sim
i586-unknown-linux-gnu os: linux env: gnu
i586-unknown-linux-musl os: linux env: musl
i586-unknown-netbsd os: netbsd env:
i586-unknown-redox os: redox env: relibc
i686-apple-darwin os: macos env:
i686-linux-android os: android env:
i686-oe-linux-gnu os: linux env: gnu
i686-pc-nto-qnx700 os: nto env: nto70
i686-pc-windows-gnu os: windows env: gnu
i686-pc-windows-gnullvm os: windows env: gnu
i686-pc-windows-msvc os: windows env: msvc
i686-unknown-freebsd os: freebsd env:
i686-unknown-haiku os: haiku env:
i686-unknown-helenos os: helenos env:
i686-unknown-hurd-gnu os: hurd env: gnu
i686-unknown-linux-gnu os: linux env: gnu
i686-unknown-linux-musl os: linux env: musl
i686-unknown-netbsd os: netbsd env:
i686-unknown-openbsd os: openbsd env:
i686-unknown-uefi os: uefi env:
i686-uwp-windows-gnu os: windows env: gnu
i686-uwp-windows-msvc os: windows env: msvc
i686-win7-windows-gnu os: windows env: gnu
i686-win7-windows-msvc os: windows env: msvc
i686-wrs-vxworks os: vxworks env: gnu
m68k-unknown-linux-gnu os: linux env: gnu
mips-unknown-linux-gnu os: linux env: gnu
mips-unknown-linux-musl os: linux env: musl
mips-unknown-linux-uclibc os: linux env: uclibc
mipsel-sony-psp os: psp env:
mipsel-sony-psx os: psx env:
mipsel-unknown-linux-gnu os: linux env: gnu
mipsel-unknown-linux-musl os: linux env: musl
mipsel-unknown-linux-uclibc os: linux env: uclibc
mipsel-unknown-netbsd os: netbsd env:
mipsisa32r6-unknown-linux-gnu os: linux env: gnu
mipsisa32r6el-unknown-linux-gnu os: linux env: gnu
powerpc-unknown-freebsd os: freebsd env:
powerpc-unknown-helenos os: helenos env:
powerpc-unknown-linux-gnu os: linux env: gnu
powerpc-unknown-linux-gnuspe os: linux env: gnu
powerpc-unknown-linux-musl os: linux env: musl
powerpc-unknown-linux-muslspe os: linux env: musl
powerpc-unknown-netbsd os: netbsd env:
powerpc-unknown-openbsd os: openbsd env:
powerpc-wrs-vxworks os: vxworks env: gnu
powerpc-wrs-vxworks-spe os: vxworks env: gnu
riscv32-wrs-vxworks os: vxworks env: gnu
riscv32gc-unknown-linux-gnu os: linux env: gnu
riscv32gc-unknown-linux-musl os: linux env: musl
riscv32im-risc0-zkvm-elf os: zkvm env:
riscv32imac-esp-espidf os: espidf env: newlib
riscv32imac-unknown-nuttx-elf os: nuttx env:
riscv32imac-unknown-xous-elf os: xous env:
riscv32imafc-esp-espidf os: espidf env: newlib
riscv32imafc-unknown-nuttx-elf os: nuttx env:
riscv32imc-esp-espidf os: espidf env: newlib
riscv32imc-unknown-nuttx-elf os: nuttx env:
sparc-unknown-linux-gnu os: linux env: gnu
thumbv6m-nuttx-eabi os: nuttx env:
thumbv7a-nuttx-eabi os: nuttx env:
thumbv7a-nuttx-eabihf os: nuttx env:
thumbv7a-pc-windows-msvc os: windows env: msvc
thumbv7a-uwp-windows-msvc os: windows env: msvc
thumbv7a-vex-v5 os: vexos env: v5
thumbv7em-nuttx-eabi os: nuttx env:
thumbv7em-nuttx-eabihf os: nuttx env:
thumbv7m-nuttx-eabi os: nuttx env:
thumbv7neon-linux-androideabi os: android env:
thumbv7neon-unknown-linux-gnueabihf os: linux env: gnu
thumbv7neon-unknown-linux-musleabihf os: linux env: musl
thumbv8m.base-nuttx-eabi os: nuttx env:
thumbv8m.main-nuttx-eabi os: nuttx env:
thumbv8m.main-nuttx-eabihf os: nuttx env:
wasm32-unknown-emscripten os: emscripten env:
wasm32-unknown-unknown os: unknown env:
wasm32-wali-linux-musl os: linux env: musl
wasm32-wasip1 os: wasi env: p1
wasm32-wasip1-threads os: wasi env: p1
wasm32-wasip2 os: wasi env: p2
wasm32-wasip3 os: wasi env: p3
x86_64-unknown-linux-gnux32 os: linux env: gnu
xtensa-esp32-espidf os: espidf env: newlib
xtensa-esp32s2-espidf os: espidf env: newlib
xtensa-esp32s3-espidf os: espidf env: newlib
(from $cmap | jq 'pick(.[].name, .[].target_env, .[].target_pointer_width, .[].target_os) | map(select(.target_pointer_width == "32")) | map(select(.target_os != "none")) | map(del(.target_pointer_width)) | .[] | .name + (" " * (40 - (.name | length))) + " os: " + .target_os + (" " * (10 - (.target_os | length))) + " env: " + .target_env ' -r)
We have:
- Unstable support for linux glibc and windows-gnu
- Unstable support for musl, which covers ohos
- Unstable support for espidf
- Unstable support for linux uclibc
- Wasi is
long long
- Emscripten is always
i64
- NetBSD and OpenBSD always
i64
- HelenOS is
long long
- VxWorks is
long long
- Redox is
long long
- NuttX is always
i64
- solid is
i64
- I guess 3ds is
i64
- QNX NTO is
i64
- MSVC is
i64
- RTEMS is always
i64
- freebsd arm and ppc use
i64
- Vex doesn't use
libc
- UEFI doesn't use
libc
- xous doesn't use
libc
risc0-zkvm doesn't use libc
- PSP is no longer supported by
libc but doesn't have a time_t
- PSX doesn't use
libc
That leaves, with some grouping:
# Tier 2
arm-linux-androideabi os: android env:
armv7-linux-androideabi os: android env:
i686-linux-android os: android env:
thumbv7neon-linux-androideabi os: android env:
i686-unknown-freebsd os: freebsd env:
# Tier 3
arm64_32-apple-watchos os: watchos env:
armv7k-apple-watchos os: watchos env:
armv7s-apple-ios os: ios env:
i386-apple-ios os: ios env: sim
i686-apple-darwin os: macos env:
armv7-sony-vita-newlibeabihf os: vita env:
armv7-unknown-trusty os: trusty env:
hexagon-unknown-qurt os: qurt
i686-unknown-haiku os: haiku env:
i686-unknown-hurd-gnu os: hurd env:
Our 32-bit targets without
target_os = "none"are:(from
$cmap | jq 'pick(.[].name, .[].target_env, .[].target_pointer_width, .[].target_os) | map(select(.target_pointer_width == "32")) | map(select(.target_os != "none")) | map(del(.target_pointer_width)) | .[] | .name + (" " * (40 - (.name | length))) + " os: " + .target_os + (" " * (10 - (.target_os | length))) + " env: " + .target_env ' -r)We have:
long longi64i64long longlong longlong longi64i64i64i64i64i64i64libclibclibcrisc0-zkvmdoesn't uselibclibcbut doesn't have atime_tlibcThat leaves, with some grouping: