RustInQemu/2022: Difference between revisions

From QEMU
Line 171: Line 171:
* [https://qemu-project.gitlab.io/qemu/about/build-platforms.html Qemu build platforms / distros]
* [https://qemu-project.gitlab.io/qemu/about/build-platforms.html Qemu build platforms / distros]
* Package availability information from [https://repology.org/ Repology]
* Package availability information from [https://repology.org/ Repology]
** When relevant updates are included, not just the distro as released
* Not sure what, if anything, should count as "packaged" for Windows
* Not sure what, if anything, should count as "packaged" for Windows
* Not sure how to test how easy/effective it is to use Rustup to get a toolchain on various platforms
* Not sure how to test how easy/effective it is to use Rustup to get a toolchain on various platforms
Line 180: Line 181:
|+ Legend
|+ Legend
|-
|-
! style="color:white;background-color:green" | Packaged
! style="color:white;background-color:green" | Packaged (version)
| OS/distro has a prebuilt packages including rustc and cargo of suitable version
| OS/distro has a prebuilt packages including rustc and cargo, version 1.31.0 or later
|-
|-
! style="background-color:lightgreen" | Rustup
! style="background-color:lightgreen" | Rustup
| Rustup works well to install toolchain on this platform
| Rustup works well to install toolchain on this platform
|-
! style="background-color:yellow" | Outdated (version)
| OS/distro has a prebuilt package, earlier than version 1.31.0
|-
|-
! Unknown
! Unknown
Line 194: Line 198:
|-
|-
! OS/distro
! OS/distro
! Toolchain
! Packaged
! Rustup
|-
! Linux, CentOS 8
| style="color:white;background-color:green" | 1.52.1
|
|-
! Linux, Debian 9
| style="color:white;background-color:green" | 1.34.2
|
|-
|-
! Linux, CentOS
! Linux, Debian 10
| style="color:white;background-color:green" | 1.41.1
|
|
|-
|-
! Linux, Debian
! Linux, Debian 11
| style="color:white;background-color:green" | 1.48.0
|
|
|-
|-
! Linux, Fedora
! Linux, Debian 12
| style="color:white;background-color:green" | 1.50.0
|
|
|-
|-
! Linux, openSUSE
! Linux, Fedora 33
| style="color:white;background-color:green" | 1.55.0
|
|-
! Linux, Fedora 34
| style="color:white;background-color:green" | 1.55.0
|
|-
! Linux, openSUSE Leap 42.3
| style="background-color:yellow" | 1.24.0
|
|-
! Linux, openSUSE Leap 15.3
| style="color:white;background-color:green" | 1.43.1
|
|-
! Linux, openSUSE Tumbleweed
| style="color:white;background-color:green" | 1.54.0
|
|
|-
|-
! Linux, RHEL
! Linux, RHEL
|
|
|
|-
|-
! Linux, SLES
! Linux, SLES
|
|
|-
! Linux, Ubuntu LTS 14.04
| style="color:white;background-color:green" | 1.31.0
|
|-
! Linux, Ubuntu LTS 16.04
| style="color:white;background-color:green" | 1.47.0
|
|-
! Linux, Ubuntu LTS 18.04
| style="color:white;background-color:green" | 1.51.0
|
|
|-
|-
! Linux, Ubuntu LTS
! Linux, Ubuntu LTS 20.04
| style="color:white;background-color:green" | 1.51.0
|
|
|-
|-
! FreeBSD, ports
! FreeBSD, ports
| style="color:white;background-color:green" | 1.55.0
|
|
|-
|-
! NetBSD, pkgsrc
! NetBSD, pkgsrc
| style="color:white;background-color:green" | 1.54.0
|
|
|-
|-
! OpenBSD, ports
! OpenBSD, ports
| style="color:white;background-color:green" | 1.55.0
|
|
|-
|-
! MacOS, HomeBrew
! MacOS, HomeBrew
| style="color:white;background-color:green" | 1.55.0
|
|
|-
|-
! Windows, ???
! Windows, ???
| style="background-color:gray" | N/A
|
|
|}
|}

Revision as of 06:56, 27 September 2021

Notes about possibilities for including Rust code in the Qemu project. Started after discussion at the Rust in Qemu BoF at KVM Forum 2021.

Rust target support for Qemu host platforms

Information sources:

QEMU discussion thread

Reddit post

Notes:

  • Some of the N/A entries I'm uncertain about
    • I think NetBSD lacks mips64 support, but I don't entirely know how to interpret the way they describe CPU architecture support, so again, I'm uncertain.
    • I don't believe macOS or Windows have ARM32 support, but I'm not sure where to confirm that
    • I believe macOS has dropped 32-bit x86 support, but I'm not sure if we support any old macOS versions which might support 32-bit x86
    • It's not clear to me if qemu supports 32-bit RISC-V as a built platform
  • In the colouring, I've considered Tier3* as "better than" Tier2. This is debatable, but the rationale is that if we don't have host tools, that's not really sufficient for a supported qemu build platform.
  • I've not investigated support on Solaris or other Unix variants. Those aren't mentioned here, but I'm not really sure if there are some users of qemu on those platforms.
Legend
Tier1* Rust Tier 1 with Host Tools supported target.
Tier2* Rust Tier 2 with Host Tools supported target
Tier3* Rust Tier 3 target, with full standard library, and host tool build support
Tier2 Rust Tier 2 target without host tools, but with full standard library.
Tier3 Rust Tier 3 target, but lacks either full standard library or host tool build support.
- Rust does not have support for this target
N/A OS doesn't support this architecture


Linux macOS Windows FreeBSD NetBSD OpenBSD
armv6 Tier2* N/A? N/A? Tier3* Tier3* N/A
armv7 Tier2* N/A? N/A? Tier3* Tier3* -
aarch64 Tier1* Tier2* Tier2* Tier3* Tier3* Tier3*
MIPS (32-bit) Tier2* N/A N/A - - N/A
MIPS (64-bit) Tier2* N/A N/A - N/A? -
PPC (32-bit) Tier2* N/A N/A - Tier2* Tier3
PPC (64-bit) Tier2* N/A N/A Tier3* N/A? N/A
RISC-V (64-bit) Tier2* N/A N/A - N/A N/A
s390x Tier2* N/A N/A N/A N/A N/A
SPARC (32-bit) Tier3 N/A N/A N/A - N/A
SPARC (64-bit) Tier2 N/A N/A N/A Tier3* Tier3
x86 (32-bit) Tier1* N/A? Tier1* Tier2 Tier3* Tier3*
x86 (64-bit) Tier1* Tier1* Tier1* Tier2* Tier2* Tier3*

Rust toolchain availability for Qemu host platforms

Notes:

  • Qemu build platforms / distros
  • Package availability information from Repology
    • When relevant updates are included, not just the distro as released
  • Not sure what, if anything, should count as "packaged" for Windows
  • Not sure how to test how easy/effective it is to use Rustup to get a toolchain on various platforms
  • Suitable version is currently considered Rust 1.31.0 or later
    • This version is chosen since it's the first with Rust 2018 edition support, which we almost certainly want
    • There may well be important features since then that we want, but I don't yet know what they are
Legend
Packaged (version) OS/distro has a prebuilt packages including rustc and cargo, version 1.31.0 or later
Rustup Rustup works well to install toolchain on this platform
Outdated (version) OS/distro has a prebuilt package, earlier than version 1.31.0
Unknown Rust toolchain availability unknown


OS/distro Packaged Rustup
Linux, CentOS 8 1.52.1
Linux, Debian 9 1.34.2
Linux, Debian 10 1.41.1
Linux, Debian 11 1.48.0
Linux, Debian 12 1.50.0
Linux, Fedora 33 1.55.0
Linux, Fedora 34 1.55.0
Linux, openSUSE Leap 42.3 1.24.0
Linux, openSUSE Leap 15.3 1.43.1
Linux, openSUSE Tumbleweed 1.54.0
Linux, RHEL
Linux, SLES
Linux, Ubuntu LTS 14.04 1.31.0
Linux, Ubuntu LTS 16.04 1.47.0
Linux, Ubuntu LTS 18.04 1.51.0
Linux, Ubuntu LTS 20.04 1.51.0
FreeBSD, ports 1.55.0
NetBSD, pkgsrc 1.54.0
OpenBSD, ports 1.55.0
MacOS, HomeBrew 1.55.0
Windows, ??? N/A