-
Notifications
You must be signed in to change notification settings - Fork 301
[main blog] Reducing support for 32-bit Apple targets #487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
pietroalbini
merged 7 commits into
rust-lang:master
from
pietroalbini:reducing-support-for-apple-32bit
Jan 3, 2020
Merged
Changes from 2 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
fdd6a16
first draft of the post about reducing support for apple 32bit
pietroalbini 5a1eedd
add paragraph about nightly
pietroalbini 51b6441
Apply Centril's commas and suggestions
pietroalbini 71e9ecb
apple 32bit => 32-bit apple
pietroalbini a1fcce3
Fix wording in the intro
pietroalbini 09bc6dd
clarify not all tier 2 platforms have a host compiler
pietroalbini 45df90c
change post date
pietroalbini File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
110 changes: 110 additions & 0 deletions
110
posts/2019-12-30-reducing-support-for-apple-32bit-targets.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
--- | ||
layout: post | ||
title: "Reducing support for Apple 32bit targets" | ||
author: Pietro Albini | ||
--- | ||
|
||
The Rust team is sad to announce that Rust 1.41.0 (to be released on January | ||
30th, 2020) will be the last release with the current level of support for | ||
Apple 32bit targets. Starting from Rust 1.42.0, those targets will be demoted | ||
to Tier 3. | ||
|
||
The decision was made on [RFC 2837], and was accepted by the compiler and | ||
release teams. This post explains what the change means, why we did it and how | ||
your project is affected. | ||
|
||
[RFC 2837]: https://github.com/rust-lang/rfcs/pull/2837 | ||
|
||
# What’s a support tier? | ||
|
||
The Rust compiler can build code targeting [a lot of | ||
platforms][platform-support] (also called “targets”), but the team doesn't have | ||
the resources or manpower to provide the same level of support and testing for | ||
each of them. | ||
To make our commitments clear, we follow a tiered support policy (currently | ||
being formalized and revised in [RFC 2803]), explaining what we guarantee: | ||
|
||
- Tier 1 targets can be downloaded through rustup and are fully tested | ||
during the project’s automated builds. A bug or a regression affecting one of | ||
these targets is usually prioritized more than bugs only affecting platforms | ||
in other tiers. | ||
|
||
- Tier 2 targets can also be downloaded through rustup, but our | ||
automated builds don’t execute the test suite for them. While we guarantee a | ||
compiler build will be available, we don’t ensure it will actually work | ||
without bugs (or even work at all). | ||
|
||
- Tier 3 targets are not available for download through rustup, and are | ||
ignored during our automated builds. You can still build their standard | ||
library for cross-compiling (or the full compiler in some cases) from source | ||
on your own, but you might encounter build errors, bugs or missing features. | ||
pietroalbini marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
[platform-support]: https://forge.rust-lang.org/release/platform-support.html | ||
[RFC 2803]: https://github.com/rust-lang/rfcs/pull/2803 | ||
|
||
# Which targets are affected? | ||
|
||
The main target affected by this change is 32bit macOS (`i686-apple-darwin`), | ||
which will be demoted from Tier 1 to Tier 3. This will affect both using the | ||
compiler on 32bit Mac hardware, and cross-compiling 32bit macOS binaries from | ||
any other platform. | ||
|
||
Additionally, the following 32bit iOS targets will be demoted from Tier 2 to | ||
Tier 3: | ||
|
||
* `armv7-apple-ios` | ||
* `armv7s-apple-ios` | ||
* `i386-apple-ios` | ||
|
||
We will continue to provide the current level of support for all Apple 64bit | ||
targets. | ||
|
||
# Why are those targets being demoted? | ||
|
||
Apple dropped support for running 32bit binaries starting from [macOS | ||
10.15][deprecate-macos] and [iOS 11][deprecate-ios]. They also prevented all | ||
developers from cross-compiling 32bit programs and apps starting from Xcode 10 | ||
(the platform’s IDE, containing the SDKs). | ||
|
||
Due to those decisions from Apple, the targets are not much useful to our users | ||
pietroalbini marked this conversation as resolved.
Show resolved
Hide resolved
|
||
anymore, and their choice to prevent cross-compiling makes it hard for the | ||
pietroalbini marked this conversation as resolved.
Show resolved
Hide resolved
|
||
project to continue supporting the 32bit platform in the long term. | ||
|
||
[deprecate-macos]: https://support.apple.com/en-us/HT208436 | ||
[deprecate-ios]: https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture | ||
|
||
# How will this affect my project? | ||
|
||
If you don’t build Apple 32bit binaries this change won’t affect you at all. | ||
|
||
If you still need to build them, you’ll be able to continue using Rust 1.41.0 | ||
without issues. As usual the Rust project will provide critical bugfixes and | ||
security patches until the next stable version is released (on March 12th, | ||
2020), and we plan to keep the release available for download for the | ||
foreseeable future (as we do with all the releases shipped so far). | ||
|
||
The code implementing the targets won’t be removed from the compiler codebase, | ||
so you’ll also be able to build future releases from source on your own | ||
(keeping in mind they might have bugs or be broken, as that code will be | ||
completly untested). | ||
|
||
# What about the nightly channel? | ||
|
||
We will demote the targets on the nightly channel soon, but we don't have an | ||
exact date for when that will happen. We recommend pinning a nightly version | ||
beforehand though, to prevent `rustup toolchain install` from failing once we | ||
apply the demotion. | ||
|
||
To pin a nightly version you need to use "nightly" followed by the day the | ||
nightly was released, as the toolchain name. For example, to install the nightly | ||
released on December 1st, 2019 and to use it you can run: | ||
|
||
```plain | ||
rustup toolchain install nightly-2019-12-01 | ||
|
||
# Default to this nightly system-wide... | ||
rustup default nightly-2019-12-01 | ||
|
||
# ...or use this nightly for a single build | ||
cargo +nightly-2019-12-01 build | ||
``` |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.