From fdd6a161fd0ec5e820f9bfaa724a37c25025b68d Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 27 Dec 2019 12:06:22 +0100 Subject: [PATCH 1/7] first draft of the post about reducing support for apple 32bit --- ...educing-support-for-apple-32bit-targets.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 posts/2019-12-30-reducing-support-for-apple-32bit-targets.md diff --git a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md new file mode 100644 index 000000000..bb808c179 --- /dev/null +++ b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md @@ -0,0 +1,89 @@ +--- +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. + +[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 +anymore, and their choice to prevent cross-compiling makes it hard for the +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). From 5a1eedddeb8cac1141f6476d487ef1abcf6092ca Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 30 Dec 2019 10:43:05 +0100 Subject: [PATCH 2/7] add paragraph about nightly --- ...educing-support-for-apple-32bit-targets.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md index bb808c179..246d4c247 100644 --- a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md +++ b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md @@ -87,3 +87,24 @@ 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 +``` From 51b64415d756274029f8944dd8f55868a69e62b8 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 30 Dec 2019 12:40:21 +0100 Subject: [PATCH 3/7] Apply Centril's commas and suggestions Co-Authored-By: Mazdak Farrokhzad --- ...2019-12-30-reducing-support-for-apple-32bit-targets.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md index 246d4c247..7af94abaa 100644 --- a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md +++ b/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md @@ -10,7 +10,7 @@ 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 +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 @@ -37,7 +37,7 @@ being formalized and revised in [RFC 2803]), explaining what we guarantee: - 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. + on your own, but you might encounter build errors, bugs, or missing features. [platform-support]: https://forge.rust-lang.org/release/platform-support.html [RFC 2803]: https://github.com/rust-lang/rfcs/pull/2803 @@ -66,8 +66,8 @@ Apple dropped support for running 32bit binaries starting from [macOS 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 -anymore, and their choice to prevent cross-compiling makes it hard for the +Due to those decisions from Apple, the targets are no longer useful to our users, +and their choice to prevent cross-compiling makes it hard for the project to continue supporting the 32bit platform in the long term. [deprecate-macos]: https://support.apple.com/en-us/HT208436 From 71e9ecb27d3ccb6984881da2c450396f1a9a0a11 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 30 Dec 2019 13:50:33 +0100 Subject: [PATCH 4/7] apple 32bit => 32-bit apple --- ...ducing-support-for-32-bit-apple-targets.md} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename posts/{2019-12-30-reducing-support-for-apple-32bit-targets.md => 2019-12-30-reducing-support-for-32-bit-apple-targets.md} (85%) diff --git a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md similarity index 85% rename from posts/2019-12-30-reducing-support-for-apple-32bit-targets.md rename to posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md index 7af94abaa..8f79e8104 100644 --- a/posts/2019-12-30-reducing-support-for-apple-32bit-targets.md +++ b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md @@ -1,12 +1,12 @@ --- layout: post -title: "Reducing support for Apple 32bit targets" +title: "Reducing support for 32-bit Apple 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 +32-bit Apple 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 @@ -44,12 +44,12 @@ being formalized and revised in [RFC 2803]), explaining what we guarantee: # Which targets are affected? -The main target affected by this change is 32bit macOS (`i686-apple-darwin`), +The main target affected by this change is 32-bit 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 +compiler on 32-bit Mac hardware, and cross-compiling 32-bit macOS binaries from any other platform. -Additionally, the following 32bit iOS targets will be demoted from Tier 2 to +Additionally, the following 32-bit iOS targets will be demoted from Tier 2 to Tier 3: * `armv7-apple-ios` @@ -61,21 +61,21 @@ targets. # Why are those targets being demoted? -Apple dropped support for running 32bit binaries starting from [macOS +Apple dropped support for running 32-bit 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 +developers from cross-compiling 32-bit programs and apps starting from Xcode 10 (the platform’s IDE, containing the SDKs). Due to those decisions from Apple, the targets are no longer useful to our users, and their choice to prevent cross-compiling makes it hard for the -project to continue supporting the 32bit platform in the long term. +project to continue supporting the 32-bit 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 don’t build 32-bit Apple 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 From a1fcce30f04dbea63110a3bf00fb7921e463dbc1 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 2 Jan 2020 09:30:04 +0100 Subject: [PATCH 5/7] Fix wording in the intro Co-Authored-By: Kyle J Strand --- posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md index 8f79e8104..55311de60 100644 --- a/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md +++ b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md @@ -4,7 +4,7 @@ title: "Reducing support for 32-bit Apple targets" author: Pietro Albini --- -The Rust team is sad to announce that Rust 1.41.0 (to be released on January +The Rust team regrets 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 32-bit Apple targets. Starting from Rust 1.42.0, those targets will be demoted to Tier 3. From 09bc6ddd4edcdb9125de1e5f3df71ef8a31f4a83 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 3 Jan 2020 15:20:09 +0100 Subject: [PATCH 6/7] clarify not all tier 2 platforms have a host compiler --- .../2019-12-30-reducing-support-for-32-bit-apple-targets.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md index 55311de60..d92f7856b 100644 --- a/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md +++ b/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md @@ -31,8 +31,9 @@ being formalized and revised in [RFC 2803]), explaining what we guarantee: - 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). + standard library build (and for some of them a full 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 From 45df90c5f8a33a5ca1a021ae922446fdf66fa427 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 3 Jan 2020 15:21:49 +0100 Subject: [PATCH 7/7] change post date --- ...md => 2020-01-03-reducing-support-for-32-bit-apple-targets.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename posts/{2019-12-30-reducing-support-for-32-bit-apple-targets.md => 2020-01-03-reducing-support-for-32-bit-apple-targets.md} (100%) diff --git a/posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md b/posts/2020-01-03-reducing-support-for-32-bit-apple-targets.md similarity index 100% rename from posts/2019-12-30-reducing-support-for-32-bit-apple-targets.md rename to posts/2020-01-03-reducing-support-for-32-bit-apple-targets.md