Skip to content
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

Tracking issue for RFC 2837: "Demote Apple 32bit targets to Tier 3" #67724

Closed
4 tasks done
pietroalbini opened this issue Dec 30, 2019 · 10 comments
Closed
4 tasks done

Tracking issue for RFC 2837: "Demote Apple 32bit targets to Tier 3" #67724

pietroalbini opened this issue Dec 30, 2019 · 10 comments
Assignees
Labels
B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented. C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-ios Operating system: iOS O-macos Operating system: macOS T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-release Relevant to the release subteam, which will review and decide on the PR/issue.

Comments

@pietroalbini
Copy link
Member

pietroalbini commented Dec 30, 2019

This is a tracking issue for the RFC "Demote Apple 32bit targets to Tier 3" (rust-lang/rfcs#2837).

  • Rust 1.41.0 (2020-01-30) will be the last release with the current support tier
  • Rust 1.42.0 (2020-03-12) will have Tier 3 support for all Apple 32bit targets

Steps:

Steps after Rust 1.42 is released:

@pietroalbini pietroalbini added O-macos Operating system: macOS O-ios Operating system: iOS B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. T-release Relevant to the release subteam, which will review and decide on the PR/issue. labels Dec 30, 2019
@pietroalbini pietroalbini self-assigned this Dec 30, 2019
@pietroalbini
Copy link
Member Author

pietroalbini commented Dec 30, 2019

I will write the implementation PRs shortly.

Edit: done!

@fpotter
Copy link

fpotter commented Jan 3, 2020

From rust-lang/rfcs#2837 (comment) (not sure where discussion belongs)


I'm late, but... Apple does continue to support 32-bit for iOS devices and the simulator.

Using Catalina and Xcode 11.3 with a deployment target set to iOS 10.0 or earlier, I can build an app for i386 and armv7.

If I download the iOS 10 simulator and set the simulated device to "iPhone 5", I can run that i386 binary in the simulator on Catalina.

iOS 11 was the first release to go 64-bit only, but plenty of apps continue to support iOS 10.0 or below which may run on both 32-bit and 64-bit devices.

@pietroalbini
Copy link
Member Author

@fpotter hmm, that wouldn't help with the i686-apple-darwin target right?

Anyway, I don't feel Apple will keep 32-bit iOS support forever, and reducing support for everything related to 32-bit Apple in one sweep is probably better.

@fpotter
Copy link

fpotter commented Jan 7, 2020

@pietroalbini Right, removing i686-apple-darwin seems legit to me. Snow Leopard (10.6) was the last release to support 32-bit CPUs and that came out in 2009. It looks like Apple hasn't sold a 32-bit Mac since 2006.

I just think dropping 32-bit iOS is a little premature. iOS supported 32-bit as recently as iOS 10 (released in 2016). They sold new 32-bit devices into 2015 (i.e. original iPad Mini, iPhone 5c).

I work on an iOS framework that uses Rust and currently supports down to iOS 9.0. For us, removal of 32-bit support means we'll need to bump our minimum supported iOS version to iOS 11.0. Or, we can keep supporting iOS 10 and below, but ask our customers to restrict their supported devices to 64-bit only.

By comparison, many other popular iOS libraries are slow to remove old iOS versions. e.g. Firebase (>= iOS 9.0), Facebook (>= iOS 8.0), Mixpanel (>= iOS 8.0), Crashlytics (>= iOS 7.0).

@shepmaster
Copy link
Member

As I understand it, nothing is being dropped here, just that our level of support is decreasing. This means that you'd have to use a tool to compile the standard library for those platforms locally instead of getting it from rustup.

@ehuss
Copy link
Contributor

ehuss commented Jan 8, 2020

The error message from rustup (1.21.1) is a bit unfortunate:

info: skipping nightly which is missing installed component 'rust-std'

It doesn't say which rust-std component is missing, so it took me a few minutes to realize what was wrong. It might be nice to look at improving that message. Perhaps include which component is missing, and instructions on how to remove it?

I'm not sure what the behavior will be on stable/beta. Is it a hard error? Or does it print the same info message and do nothing? For people who don't follow nightly, or RFCs, or read the release notes, I suspect it is a recipe for confusion.

@pietroalbini
Copy link
Member Author

@kinnison can we improve the error message by including the target name?

@kinnison
Copy link
Contributor

kinnison commented Jan 8, 2020

Yes, we probably could... I've filed rust-lang/rustup#2191

@mexus
Copy link

mexus commented Mar 12, 2020

Component history fixed by @LeSeulArtichaut in rust-lang/rustup-components-history#13

@pietroalbini
Copy link
Member Author

This shipped in 1.42.0! Thanks everybody who helped with this effort!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented. C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. O-ios Operating system: iOS O-macos Operating system: macOS T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-release Relevant to the release subteam, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

6 participants