|
While it's good to have core technology as part of OS, it also makes it non-updateable separately from the OS itself, which slows the spread of developments. That's my main gripe with apple's approach to swift and swiftui. Yes, tech is getting better every day, but unless you target latest OS version, you can't use new fresh stuff until it's on enough devices around you. And that pretty much guarantees that no matter what apple adds, you still have to wait a year or two until you can safely start using it. In modern android, kotlin(and compose) also part of the system, yet all the apps do not rely on the system libs, but rather inject the latest available runtime with each of the apps. It takes more space, but instead allows developers to target latest available stack, no matter what core os this app is being run on. |
They control the OS. They also control Swift. So why not embed the Swift version that the app was built against, and then download that swift version to the user's device when they download an app that uses it. Then:
- The app runs against the exact Swift version it was built against
- The app size is smaller because you're no longer shipping the Swift libraries with the app
- The impact on the user's device space is minimized since it only downloads each version of Swift once (to be shared by all apps that use that version), and only on demand.
- If a new version of Swift comes out before an OS upgrade, simply add it to the list. It gets downloaded the same as the rest.
They could even add some predictive Swift downloading for the most popular versions of Swift to avoid unnecessary delays downloading it.