Skip to content

Commit 76146a0

Browse files
authored
Merge pull request #487 from pietroalbini/reducing-support-for-apple-32bit
[main blog] Reducing support for 32-bit Apple targets
2 parents c27d4a1 + 45df90c commit 76146a0

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
---
2+
layout: post
3+
title: "Reducing support for 32-bit Apple targets"
4+
author: Pietro Albini
5+
---
6+
7+
The Rust team regrets to announce that Rust 1.41.0 (to be released on January
8+
30th, 2020) will be the last release with the current level of support for
9+
32-bit Apple targets. Starting from Rust 1.42.0, those targets will be demoted
10+
to Tier 3.
11+
12+
The decision was made on [RFC 2837], and was accepted by the compiler and
13+
release teams. This post explains what the change means, why we did it, and how
14+
your project is affected.
15+
16+
[RFC 2837]: https://github.com/rust-lang/rfcs/pull/2837
17+
18+
# What’s a support tier?
19+
20+
The Rust compiler can build code targeting [a lot of
21+
platforms][platform-support] (also called “targets”), but the team doesn't have
22+
the resources or manpower to provide the same level of support and testing for
23+
each of them.
24+
To make our commitments clear, we follow a tiered support policy (currently
25+
being formalized and revised in [RFC 2803]), explaining what we guarantee:
26+
27+
- Tier 1 targets can be downloaded through rustup and are fully tested
28+
during the project’s automated builds. A bug or a regression affecting one of
29+
these targets is usually prioritized more than bugs only affecting platforms
30+
in other tiers.
31+
32+
- Tier 2 targets can also be downloaded through rustup, but our
33+
automated builds don’t execute the test suite for them. While we guarantee a
34+
standard library build (and for some of them a full compiler build) will be
35+
available, we don’t ensure it will actually work without bugs (or even work
36+
at all).
37+
38+
- Tier 3 targets are not available for download through rustup, and are
39+
ignored during our automated builds. You can still build their standard
40+
library for cross-compiling (or the full compiler in some cases) from source
41+
on your own, but you might encounter build errors, bugs, or missing features.
42+
43+
[platform-support]: https://forge.rust-lang.org/release/platform-support.html
44+
[RFC 2803]: https://github.com/rust-lang/rfcs/pull/2803
45+
46+
# Which targets are affected?
47+
48+
The main target affected by this change is 32-bit macOS (`i686-apple-darwin`),
49+
which will be demoted from Tier 1 to Tier 3. This will affect both using the
50+
compiler on 32-bit Mac hardware, and cross-compiling 32-bit macOS binaries from
51+
any other platform.
52+
53+
Additionally, the following 32-bit iOS targets will be demoted from Tier 2 to
54+
Tier 3:
55+
56+
* `armv7-apple-ios`
57+
* `armv7s-apple-ios`
58+
* `i386-apple-ios`
59+
60+
We will continue to provide the current level of support for all Apple 64bit
61+
targets.
62+
63+
# Why are those targets being demoted?
64+
65+
Apple dropped support for running 32-bit binaries starting from [macOS
66+
10.15][deprecate-macos] and [iOS 11][deprecate-ios]. They also prevented all
67+
developers from cross-compiling 32-bit programs and apps starting from Xcode 10
68+
(the platform’s IDE, containing the SDKs).
69+
70+
Due to those decisions from Apple, the targets are no longer useful to our users,
71+
and their choice to prevent cross-compiling makes it hard for the
72+
project to continue supporting the 32-bit platform in the long term.
73+
74+
[deprecate-macos]: https://support.apple.com/en-us/HT208436
75+
[deprecate-ios]: https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture
76+
77+
# How will this affect my project?
78+
79+
If you don’t build 32-bit Apple binaries this change won’t affect you at all.
80+
81+
If you still need to build them, you’ll be able to continue using Rust 1.41.0
82+
without issues. As usual the Rust project will provide critical bugfixes and
83+
security patches until the next stable version is released (on March 12th,
84+
2020), and we plan to keep the release available for download for the
85+
foreseeable future (as we do with all the releases shipped so far).
86+
87+
The code implementing the targets won’t be removed from the compiler codebase,
88+
so you’ll also be able to build future releases from source on your own
89+
(keeping in mind they might have bugs or be broken, as that code will be
90+
completly untested).
91+
92+
# What about the nightly channel?
93+
94+
We will demote the targets on the nightly channel soon, but we don't have an
95+
exact date for when that will happen. We recommend pinning a nightly version
96+
beforehand though, to prevent `rustup toolchain install` from failing once we
97+
apply the demotion.
98+
99+
To pin a nightly version you need to use "nightly" followed by the day the
100+
nightly was released, as the toolchain name. For example, to install the nightly
101+
released on December 1st, 2019 and to use it you can run:
102+
103+
```plain
104+
rustup toolchain install nightly-2019-12-01
105+
106+
# Default to this nightly system-wide...
107+
rustup default nightly-2019-12-01
108+
109+
# ...or use this nightly for a single build
110+
cargo +nightly-2019-12-01 build
111+
```

0 commit comments

Comments
 (0)