Skip to content

Commit 84fcc97

Browse files
committed
Demote x86_64-apple-darwin from Tier 1 to Tier 2 with host tools
1 parent 192c533 commit 84fcc97

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
- Feature Name: none
2+
- Start Date: 2025-07-23
3+
- RFC PR: [rust-lang/rfcs#3841](https://github.com/rust-lang/rfcs/pull/3841)
4+
- Rust Issue: [rust-lang/rust#0000](https://github.com/rust-lang/rust/issues/0000)
5+
6+
# Summary
7+
[summary]: #summary
8+
9+
Demote target `x86_64-apple-darwin` from Tier 1 to Tier 2 with host tools as this platform's lifetime is limited.
10+
11+
Tier 2 with host tools means that the `x86_64-apple-darwin` target,
12+
including tools like `rustc` and `cargo`,
13+
is guaranteed to build but is not guaranteed to pass tests.
14+
15+
This RFC does **not** propose removing the target completely from the codebase.
16+
17+
# Motivation
18+
[motivation]: #motivation
19+
20+
The `x86_64-apple-darwin` target has no long-term future.
21+
Upcoming changes will affect Rust's ability to ensure that the target meets the Tier 1 requirements,
22+
so we should demote it to Tier 2 with host tools in a controlled fashion.
23+
24+
## A brief timeline
25+
26+
- 2020-06-22: Apple [announced plans][trans] to shift away from the x86\_64 architecture.
27+
- 2020-12-31: Rust [promoted `aarch64-apple-darwin`][aarch-tier-2] to Tier 2 with host tools.
28+
- 2023-06-05: Apple [announced the replacement][trans] of the last x86\_64 hardware.
29+
- 2023-10-02: GitHub [announces public GitHub Actions runners][m1-runners] for Apple silicon.
30+
- 2024-10-17: Rust [promoted `aarch64-apple-darwin`][aarch-tier-1] to Tier 1.
31+
- **2025-07-23**: This RFC opened.
32+
- 2025-09-01: GitHub [will discontinue][macos-13-sunset] providing free macOS x86\_64 runners for public repositories.
33+
- 2025 (Fall): [macOS 26][tahoe] will be the last macOS to support the x86\_64 architecture.
34+
- 2027: The [Rosetta 2][trans] compatibility layer will be mostly removed.
35+
36+
[trans]: https://en.wikipedia.org/wiki/Mac_transition_to_Apple_silicon
37+
[aarch-tier-2]: https://blog.rust-lang.org/2020/12/31/Rust-1.49.0/#64-bit-arm-macos-and-windows-reach-tier-2
38+
[aarch-tier-1]: https://blog.rust-lang.org/2024/10/17/Rust-1.82.0/#macos-on-64-bit-arm-is-now-tier-1
39+
[m1-runners]: https://github.blog/changelog/2023-10-02-github-actions-apple-silicon-m1-macos-runners-are-now-available-in-public-beta/
40+
[macos-13-sunset]: https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down
41+
[tahoe]: https://en.wikipedia.org/wiki/MacOS_Tahoe
42+
43+
## `x86_64-apple-darwin` popularity
44+
45+
Looking at the [public download statistics][dl-stats] for the previous month (retrieved on 2025-07-21),
46+
we can see that `x86_64-apple-darwin` has substantially fewer downloads than `aarch64-apple-darwin`:
47+
48+
[dl-stats]: https://p.datadoghq.com/sb/3a172e20-e9e1-11ed-80e3-da7ad0900002-60425c7cb1b7beb2e8959a305a301c0c?fromUser=false&refresh_mode=sliding&from_ts=1750525313022&to_ts=1753117313022&live=true
49+
50+
### `rustc`
51+
52+
| platform | downloads | percentage |
53+
|----------------------------|----------:|-----------:|
54+
| `x86_64-unknown-linux-gnu` | 194.38M | 81.58% |
55+
| `aarch64-apple-darwin` | 7.15M | 3.00% |
56+
| `x86_64-apple-darwin` | 2.74M | 1.15% |
57+
58+
### `std`
59+
60+
| platform | downloads | percentage |
61+
|----------------------------|----------:|-----------:|
62+
| `x86_64-unknown-linux-gnu` | 95.12M | 66.20% |
63+
| `aarch64-apple-darwin` | 4.82M | 3.35% |
64+
| `x86_64-apple-darwin` | 2.76M | 1.92% |
65+
66+
# Guide-level explanation
67+
[guide-level-explanation]: #guide-level-explanation
68+
69+
The first release after this RFC is merged will be the last one with Tier 1 support for the `x86_64-apple-darwin` target.
70+
The release after that will demote the target to Tier 2 with host tools,
71+
which means it will not be tested by CI.
72+
73+
Once this RFC is merged,
74+
a blog post will be published on the main Rust Blog announcing the change to alert users of the demotion.
75+
76+
The demotion will also be mentioned in the release announcement for the last
77+
release with Tier 1 support, as well as the first release with Tier
78+
2 support.
79+
80+
# Reference-level explanation
81+
[reference-level-explanation]: #reference-level-explanation
82+
83+
The CI setup for [`rust-lang/rust`][r-l/r] will be modified to change the `dist-x86_64-apple` builder to no longer build the tests or run them.
84+
85+
[r-l/r]: https://github.com/rust-lang/rust
86+
87+
# Drawbacks
88+
[drawbacks]: #drawbacks
89+
90+
Without automated testing,
91+
this target will likely deteriorate more quickly.
92+
93+
Users may be relying on Rust's Tier 1 support to provide confidence for their own artifacts.
94+
These users will be stuck on an old compiler version.
95+
96+
# Rationale and alternatives
97+
[rationale-and-alternatives]: #rationale-and-alternatives
98+
99+
- Rust CI could use emulation,
100+
such as that provided by [Rosetta 2][rosetta-2].
101+
Lightweight experiments show that this may increase CI times by a factor of 3
102+
(e.g. a step taking 200 seconds would now take 600 seconds).
103+
This would be a temporary solution,
104+
as eventually Apple will [sunset Rosetta 2][trans].
105+
106+
- The Rust Foundation could pay for GitHub Actions runners that will continue to use the x86\_64 architecture,
107+
such as `macos-13-large`, `macos-14-large`, or `macos-15-large`.
108+
This would be a temporary solution,
109+
as eventually GitHub will [sunset all x86\_64-compatible runners][n-1-policy].
110+
111+
- A third party could indefinitely provide all appropriate CI resources for the x86\_64 architecture.
112+
No such third party has made themselves known,
113+
nor has the Rust infrastructure team determined how to best integrate such resources.
114+
115+
[rosetta-2]: https://en.wikipedia.org/wiki/Rosetta_(software)
116+
[n-1-policy]: https://github.com/actions/runner-images?tab=readme-ov-file#software-and-image-support
117+
118+
# Prior art
119+
[prior-art]: #prior-art
120+
121+
- The `i686-pc-windows-gnu` target was demoted in [RFC 3771][rfc-3771].
122+
Similar to this RFC,
123+
the ability to reliably test the target was questionable.
124+
125+
- The `i686-apple-darwin` target was demoted in [RFC 2837][rfc-2837].
126+
Similar to this RFC,
127+
relevant hardware was no longer produced and it had been announced that upcoming operating systems would no longer support the architecture.
128+
129+
[rfc-2837]: https://rust-lang.github.io/rfcs/2837-demote-apple-32bit.html
130+
[rfc-3771]: https://rust-lang.github.io/rfcs/3771-demote-i686-pc-windows-gnu.html
131+
132+
# Unresolved questions
133+
[unresolved-questions]: #unresolved-questions
134+
135+
- None
136+
137+
# Future possibilities
138+
[future-possibilities]: #future-possibilities
139+
140+
`aarch64-apple-darwin` could be demoted to Tier 3 or support completely removed.
141+
There's no strong technical or financial reason to do this at this point in time.
142+
Should further demotions be proposed,
143+
those will be evaluated separately and on thier own merits,
144+
using the [target tier policy][tier-policy] as guidance.
145+
146+
[tier-policy]: https://doc.rust-lang.org/stable/rustc/target-tier-policy.html

0 commit comments

Comments
 (0)