Porqué SwiftUI no es compatible con versiones anteriores a Xcode 11

Desde Swift 5.1 se dotó a Swift de la capacidad ABI Stability, lo que permitió incluir la Librería Estándar y otras librerías en el Sistema Operativo para que cualquier App las pudiera utilizar sin necesidad de incluirlas dentro de sus recursos

Una parte esencial de cualquier Lenguaje de Programación es su Librería Estándar, la cual incluye los componentes imprescindibles para el funcionamiento del Lenguaje. Como es de imaginar Swift también incluye su propia Librería Estándar.

Hasta Swift 5, en cada proyecto que desarrollábamos, la Librería Estándar Compilada sólo era capaz de ejecutar el código binario (código fuente compilado de nuestra App) programado con esa misma versión, lo que nos obligaba a incluir la librería estándar del lenguaje entre los recursos de nuestros programas (esto lo hacía Xcode de manera automática), lo cual tenía como consecuencia directa el aumento del tamaño de las Apps.

Cuando compilamos un programa, se genera un código binario, es decir, se convierten las líneas de nuestro Código Fuente en lenguaje máquina que funcionará en la arquitectura para la que hacemos la compilación. En definitiva, nuestro código compilado debe conectar a nivel binario con todos los componentes que utiliza. Esto es lo que se llama ABI (Application Binary Interface o Interfaz Binaria de Aplicación), que sería el equivalente a las APIs pero a nivel binario.

Antes de Swift 5 no se creaba una ABI estable, ya que la compilación de nuestro programa generaba un código máquina según la versión de Swift que estábamos utilizado, por lo que un código creado con una determinada versión de Swift sólo podía funcionar con las librerías binarias del lenguaje en esa misma versión, razón por la que Xcode incluía automáticamente estas librerías como recursos del código de nuestra App.

Desde Xcode 11 y Swift 5.1 se dotó a Swift de la capacidad ABI Stability (estabilidad binaria o estabilidad de módulos), por lo que a partir de ese momento, Apple pudo incluir la Librería Estándar y otras librerías en el Sistema Operativo para que cualquier App las pudiera utilizar sin necesidad de incluirlas dentro de sus recursos, por lo que a partir de iOS 13 las Apps ocupan mucho menos espacio ya que las librerías básicas están en el propio Sistema Operativo.

Por esta razón las apps diseñadas con SwiftUI solo pueden ejecutarse a partir de iOS 13, iPadOS 13, macOS 10.15, watchOS 6 y tvOS 13 (versiones soportadas a partir de Xcode 11), ya que esta la librería está cargada en estos Sistemas Operativos a partir de las versiones indicadas.

Para que SwiftUI funcionara en versiones anteriores, habría que copiar toda la librería y sus dependencias en cada app que lo usara, algo que no es posible ya que requiere de otros recursos que sólo están disponibles a partir de iOS 13+. En la documentación oficial de SwiftUI se puede consultar a partir de que versiones de sistemas operativos es compatible.

Versiones de los Sistemas Operativos de Apple compatibles con SwiftUI

developer.apple.com/documentation/swiftui

Desarrollo iOS | Interfaz de Usuario | Herramientas | Ciencias de la Computación | Mundo Apple | Recursos Externos | Fundamentos de Programación | Miscelánea |

© Swift, SwiftUI, UIKit, Xcode, iOS, iPadOS, watchOS, tvOS, macOS, Mac, iPhone, iPad, Safari, App Store, Apple y sus correspondientes Logotipos son marcas registradas de Apple Inc.

Profile images of content from Pixabay. You can see the Authors List.