Skip to content

Commit fdd6a16

Browse files
committed
first draft of the post about reducing support for apple 32bit
1 parent 9f47c3b commit fdd6a16

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
layout: post
3+
title: "Reducing support for Apple 32bit targets"
4+
author: Pietro Albini
5+
---
6+
7+
The Rust team is sad 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+
Apple 32bit 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+
compiler build will be available, we don’t ensure it will actually work
35+
without bugs (or even work at all).
36+
37+
- Tier 3 targets are not available for download through rustup, and are
38+
ignored during our automated builds. You can still build their standard
39+
library for cross-compiling (or the full compiler in some cases) from source
40+
on your own, but you might encounter build errors, bugs or missing features.
41+
42+
[platform-support]: https://forge.rust-lang.org/release/platform-support.html
43+
[RFC 2803]: https://github.com/rust-lang/rfcs/pull/2803
44+
45+
# Which targets are affected?
46+
47+
The main target affected by this change is 32bit macOS (`i686-apple-darwin`),
48+
which will be demoted from Tier 1 to Tier 3. This will affect both using the
49+
compiler on 32bit Mac hardware, and cross-compiling 32bit macOS binaries from
50+
any other platform.
51+
52+
Additionally, the following 32bit iOS targets will be demoted from Tier 2 to
53+
Tier 3:
54+
55+
* `armv7-apple-ios`
56+
* `armv7s-apple-ios`
57+
* `i386-apple-ios`
58+
59+
We will continue to provide the current level of support for all Apple 64bit
60+
targets.
61+
62+
# Why are those targets being demoted?
63+
64+
Apple dropped support for running 32bit binaries starting from [macOS
65+
10.15][deprecate-macos] and [iOS 11][deprecate-ios]. They also prevented all
66+
developers from cross-compiling 32bit programs and apps starting from Xcode 10
67+
(the platform’s IDE, containing the SDKs).
68+
69+
Due to those decisions from Apple, the targets are not much useful to our users
70+
anymore, and their choice to prevent cross-compiling makes it hard for the
71+
project to continue supporting the 32bit platform in the long term.
72+
73+
[deprecate-macos]: https://support.apple.com/en-us/HT208436
74+
[deprecate-ios]: https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture
75+
76+
# How will this affect my project?
77+
78+
If you don’t build Apple 32bit binaries this change won’t affect you at all.
79+
80+
If you still need to build them, you’ll be able to continue using Rust 1.41.0
81+
without issues. As usual the Rust project will provide critical bugfixes and
82+
security patches until the next stable version is released (on March 12th,
83+
2020), and we plan to keep the release available for download for the
84+
foreseeable future (as we do with all the releases shipped so far).
85+
86+
The code implementing the targets won’t be removed from the compiler codebase,
87+
so you’ll also be able to build future releases from source on your own
88+
(keeping in mind they might have bugs or be broken, as that code will be
89+
completly untested).

0 commit comments

Comments
 (0)