Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Remove availability and fallbacks for iOS 11 and macOS 10.13 #34919

Merged
merged 3 commits into from
Jul 27, 2022

Conversation

jmagman
Copy link
Member

@jmagman jmagman commented Jul 26, 2022

macOS minimum is 10.13: flutter/buildroot#588
iOS minimum is 11: flutter/buildroot#574

  • Remove @available checks for lower versions.
  • The engine builders are running Xcode 13 so remove outdated *_VERSION_MAX_ALLOWED checks.
  • Remove NS_AVAILABLE_IOS annotations in implementation files.

Part of flutter/flutter#101959
Part of flutter/flutter#107741

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See testing the engine for instructions on
    writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@jmagman jmagman force-pushed the availability-removal branch from d96c82a to 7f6dbe9 Compare July 26, 2022 19:41
@jmagman jmagman marked this pull request as ready for review July 26, 2022 19:41
@@ -17,7 +17,7 @@
constexpr char kTextPlainFormat[] = "text/plain";
const UInt32 kKeyPressClickSoundId = 1306;

} // namespaces
} // namespace
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

formatter wanted to touch this.

@@ -17,7 +17,7 @@
auto runner = thread->GetTaskRunner();
return runner;
}
}
} // namespace
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Formatter wanted this too.

@jmagman jmagman requested review from cbracken and cyanglaz July 26, 2022 21:01
Copy link
Member

@chinmaygarde chinmaygarde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know I am being greedy but here goes. What are the consequences of updated to iOS 12.0 and macOS 14? MTLEvent and friends are available since then and assuming their availability would make a fallback path using host synchronization unnecessary. I've been budgeting time to add that fallback but this would be a nice win. Not super high priority though.

@jmagman
Copy link
Member Author

jmagman commented Jul 27, 2022

What are the consequences of updated to iOS 12.0 and macOS 14?

I'm usually more concerned about dropping hardware than OS versions since it's "free" to upgrade, but expensive to buy new hardware. Fortunately iOS 12 (2018) didn't drop any devices supported by iOS 11. iOS 11 isn't even measured in this dataset https://gs.statcounter.com/os-version-market-share/ios/mobile-tablet/worldwide (for what that's worth).

macOS 10.14 Mojave also came out 2018. Mojave requires a Metal capable chip, so we would be able to drop the GL backend flutter/flutter#108304 (https://support.apple.com/en-us/HT208898). According to https://gs.statcounter.com/os-version-market-share/macos/desktop/worldwide macOS 10.13 High Sierra has about 4.5% market share. Probably more importantly, hardware manufactured 2009-2012/5 was dropped, and some users hang on to their Macs as long as possible.

10.13 High Sierra

MacBook (Late 2009 or newer)
MacBook Pro (Mid 2010 or newer)
MacBook Air (Late 2010 or newer)
Mac mini (Mid 2010 or newer)
iMac (Late 2009 or newer)
Mac Pro (Mid 2010 or newer)

https://support.apple.com/kb/sp765?locale=en_US

vs 10.14 Mojave

MacBook (Early 2015 or newer)
MacBook Air (Mid 2012 or newer)
MacBook Pro (Mid 2012 or newer)
Mac mini (Late 2012 or newer)
iMac (Late 2012 or newer)
iMac Pro (2017)
Mac Pro (Late 2013; Mid 2010 and Mid 2012 models with [recommended Metal-capable graphics cards](https://support.apple.com/en-us/HT208898))

https://support.apple.com/kb/SP777?locale=en_US

Small overall end-user market share doesn't necessarily mean we should drop it if it also means also dropping a disproportionate number of NBU customers, and supporting "older platforms is one of our differentiators".
So I'd always err on the side of avoiding dropping old versions until we absolutely have to, or the maintenance burden becomes too great, or other reasons cited in go/flutter-deprecating-old-platforms.

@jmagman jmagman added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 27, 2022
@auto-submit auto-submit bot merged commit a339093 into flutter:main Jul 27, 2022
@jmagman jmagman deleted the availability-removal branch July 27, 2022 18:07
betrevisan pushed a commit to betrevisan/engine that referenced this pull request Jul 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App platform-ios platform-macos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants