Skip to content

Commit 4aec7c7

Browse files
committed
Auto merge of #29055 - alexcrichton:tiers, r=steveklabnik
This commit expands the "supported platforms" section of the book to include documentation on the tiers that Rust currently has as well as organizing all supported platforms into these various tiers. Infrastructure improvements over the next few months are likely to change the location of may of these platforms over, but for now this should faithfully represent what we've got today!
2 parents 3e139dc + 93e419c commit 4aec7c7

File tree

1 file changed

+84
-15
lines changed

1 file changed

+84
-15
lines changed

src/doc/trpl/installing-rust.md

+84-15
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,90 @@ binary downloads][install-page].
6161

6262
## Platform support
6363

64-
Oh, we should also mention the officially supported platforms:
65-
66-
* Windows (7 or later, Server 2008 R2)
67-
* Linux (2.6.18 or later, various distributions), x86 and x86-64
68-
* OSX 10.7 (Lion) or later, x86 and x86-64
69-
70-
We extensively test Rust on these platforms, and a few others, too, like
71-
Android. But these are the ones most likely to work, as they have the most
72-
testing.
73-
74-
Finally, a comment about Windows. Rust considers Windows to be a first-class
75-
platform upon release, but if we're honest, the Windows experience isn't as
76-
integrated as the Linux/OS X experience is. We're working on it! If anything
77-
doesn't work, it is a bug. Please let us know if that happens. Each and every
78-
commit is tested against Windows just like any other platform.
64+
The Rust compiler runs on, and compiles to, a great number of platforms, though
65+
not all platforms are equally supported. Rust's support levels are organized
66+
into three tiers, each with a different set of guarantees.
67+
68+
Platforms are identified by their "target triple" which is the string to inform
69+
the compiler what kind of output should be produced. The columns below indicate
70+
whether the corresponding component works on the specified platform.
71+
72+
### Tier 1
73+
74+
Tier 1 platforms can be thought of as "guaranteed to build and work".
75+
Specifically they will each satisfy the following requirements:
76+
77+
* Automated testing is set up to run tests for the platform.
78+
* Landing changes to the `rust-lang/rust` repository's master branch is gated on
79+
tests passing.
80+
* Official release artifacts are provided for the platform.
81+
* Documentation for how to use and how to build the platform is available.
82+
83+
| Target | std |rustc|cargo| notes |
84+
|-------------------------------|-----|-----|-----|----------------------------|
85+
| `x86_64-pc-windows-msvc` |||| 64-bit MSVC (Windows 7+) |
86+
| `i686-pc-windows-gnu` |||| 32-bit MinGW (Windows 7+) |
87+
| `x86_64-pc-windows-gnu` |||| 64-bit MinGW (Windows 7+) |
88+
| `i686-apple-darwin` |||| 32-bit OSX (10.7+, Lion+) |
89+
| `x86_64-apple-darwin` |||| 64-bit OSX (10.7+, Lion+) |
90+
| `i686-unknown-linux-gnu` |||| 32-bit Linux (2.6.18+) |
91+
| `x86_64-unknown-linux-gnu` |||| 64-bit Linux (2.6.18+) |
92+
93+
### Tier 2
94+
95+
Tier 2 platforms can be thought of as "guaranteed to build". Automated tests are
96+
not run so it's not guaranteed to produce a working build, but platforms often
97+
work to quite a good degree and patches are always welcome! Specifically, these
98+
platforms are required to have each of the following:
99+
100+
* Automated building is set up, but may not be running tests.
101+
* Landing changes to the `rust-lang/rust` repository's master branch is gated on
102+
platforms **building**. Note that this means for some platforms just the
103+
standard library is compiled, but for others the full bootstrap is run.
104+
* Official release artifacts are provided for the platform.
105+
106+
| Target | std |rustc|cargo| notes |
107+
|-------------------------------|-----|-----|-----|----------------------------|
108+
| `i686-pc-windows-msvc` |||| 32-bit MSVC (Windows 7+) |
109+
110+
### Tier 3
111+
112+
Tier 3 platforms are those which Rust has support for, but landing changes is
113+
not gated on the platform either building or passing tests. Working builds for
114+
these platforms may be spotty as their reliability is often defined in terms of
115+
community contributions. Additionally, release artifacts and installers are not
116+
provided, but there may be community infrastructure producing these in
117+
unofficial locations.
118+
119+
| Target | std |rustc|cargo| notes |
120+
|-------------------------------|-----|-----|-----|----------------------------|
121+
| `x86_64-unknown-linux-musl` || | | 64-bit Linux with MUSL |
122+
| `arm-linux-androideabi` || | | ARM Android |
123+
| `i686-linux-android` || | | 32-bit x86 Android |
124+
| `aarch64-linux-android` || | | ARM64 Android |
125+
| `arm-unknown-linux-gnueabi` ||| | ARM Linux (2.6.18+) |
126+
| `arm-unknown-linux-gnueabihf` ||| | ARM Linux (2.6.18+) |
127+
| `aarch64-unknown-linux-gnu` || | | ARM64 Linux (2.6.18+) |
128+
| `mips-unknown-linux-gnu` || | | MIPS Linux (2.6.18+) |
129+
| `mipsel-unknown-linux-gnu` || | | MIPS (LE) Linux (2.6.18+) |
130+
| `powerpc-unknown-linux-gnu` || | | PowerPC Linux (2.6.18+) |
131+
| `i386-apple-ios` || | | 32-bit x86 iOS |
132+
| `x86_64-apple-ios` || | | 64-bit x86 iOS |
133+
| `armv7-apple-ios` || | | ARM iOS |
134+
| `armv7s-apple-ios` || | | ARM iOS |
135+
| `aarch64-apple-ios` || | | ARM64 iOS |
136+
| `i686-unknown-freebsd` ||| | 32-bit FreeBSD |
137+
| `x86_64-unknown-freebsd` ||| | 64-bit FreeBSD |
138+
| `x86_64-unknown-openbsd` ||| | 64-bit OpenBSD |
139+
| `x86_64-unknown-netbsd` ||| | 64-bit NetBSD |
140+
| `x86_64-unknown-bitrig` ||| | 64-bit Bitrig |
141+
| `x86_64-unknown-dragonfly` ||| | 64-bit DragonFlyBSD |
142+
| `x86_64-rumprun-netbsd` || | | 64-bit NetBSD Rump Kernel |
143+
| `i686-pc-windows-msvc` (XP) || | | Windows XP support |
144+
| `x86_64-pc-windows-msvc` (XP) || | | Windows XP support |
145+
146+
Note that this table can be expanded over time, this isn't the exhaustive set of
147+
tier 3 platforms that will ever be!
79148

80149
## After installation
81150

0 commit comments

Comments
 (0)