Novedades WWDC2020 para desarrolladores, migración a ARM ¿Porqué esto es interesante?
En la última conferencia de la WWDC 2020, Apple ha anunciado que durante un periodo de dos años va a realizar una transición de Intel a lo que ellos llaman Apple Silicon, en esta entrada explicaremos las implicaciones así como las novedades anunciadas en la conferencia para los desarrolladores de aplicaciones para los dispositivos de Apple.
El tema que cubre casi todas las portadas es la migración que va a realizar Apple dejando de utilizar los microprocesadores de Intel basados en las arquitectura X86 a los chips de Apple fabricados por TSMC a 7mn con la arquitectura ARM, Apple Silicon, que actualmente Apple utiliza en los dispositivos de la marca para el iPhone, el iPad, el Apple Watch y su tvOS.
Aprovechando este hito explicaremos las consecuencias de esta decisión y explicaremos todo lo que han tenido que desarrollar y continuarán desarrollando para hacer que las aplicaciones sean compatibles con esta nueva arquitectura ARM.
Arquitecturas Hardware (si ya sabes lo que es sáltate esta parte)
Las arquitecruras hardware es la forma es la cual se comunican y funcionan los distintos componentes hardware que confirman cualquier ordenador. La base principal de estas arquitecturas son los microprocesadores utilizados para procesar la información. Entre ellas destacamos varias: PowerPC, la que utilizaba antiguamente Apple para sus Mac, X86, la que utiliza actualmente Apple y cualquier PC, ARM la que quiere empezar a utilizar Apple en sus Mac, la que usan actualmente el resto de dispositivos de Apple, y la mayor parte de los móviles y tabletas que puedes comprar a día de hoy con Android.
Estos microprocesadores permiten la ejecución de instrucciones que realizan operaciones con datos que están en la memoria RAM o en los registros (minimemorias dentro del procesador). También permiten mover datos desde los discos duros o cualquier tipo de almacenamiento externo (pinchos USB, teclados, ratones) hacia la memoria RAM y viceversa.
Estos conjunto de intrucciones son comunes dentro de una misma arquitectura, por ejemplo un procesador Intel y uno de AMD por pertenecer a la misma arquitectura x86, a 64bit(ancho de banda de memoria, para transferir datos), pueden ejecutar (más o menos) las mismas instrucciones y por lo tanto son compatibles. El mismo sistema operativo y las mismas aplicaciones, se pueden ejecutar en ambos tipos de procesadores sin mucho problema.
Debido al funcionamiento de los lenguajes de programación, por ejemplo C, deberán traducir del lenguaje de programación a lo que entiende el procesador, este programa traductor se llama compilador. El compilador traducirá las sentencias de un programa a intrucciones que peuda ejecutar el procesador de una arquitectura, por ejemplo x86, para que un programa funcione en otra arquitectura deberemos compilar el programa para que se traduzca a otro conjunto de instrucciones, por ejemplo ARM. Con esto se crea el ejecutable.
Dependiendo de los conjuntos de instrucciones que ofrece cada procesador de cada arquitectura necesitas un compilador distinto.
Es decir tienes que hacer lo siguiente: Código C -> compilador de C a x86 -> Código máquina de x86 (ejecutable)
Y si tienes un procesador ARM: Código C -> compilador de C a ARM -> Código máquina de ARM (ejecutable)
Esto pasa por supuesto con todas las aplicaciones y con los sistemas operativos, por ejemplo hay versiones de Linux para ARM y para x86, Debian es un buen ejemplo de distirbución Linux que tiene soporte para varias arquitecturas. Windows aunque tiene una versión para ARM no dispone del soporte para que todas las aplicaciones se ejecuten demanera nativa. El MacOS de Apple a día de hoy sólo tiene soporte para Intel (x86) y quiere liberar una versión para ARM (Apple Silicon).
No sólo va de CPU’s, tan GPU’s también cuentan
El caso es no vivimos sólo en un mundo con CPU’s, sino que las GPU’s son muy importantes para tareas profesionales y de ocio (sobre todo videojuegos), por lo que es muy importante dar soporte también a este apartado desde el sistema operativo. En el caso de las GPU’s que integran los micros de Apple en el iPad Pro, son suficientes para realizar tareas complejas, como la edición de foto y de video en el iPad. Pero a día de hoy todavía están bastante lejos del rendimiento de nVidia o AMD en el terreno gráfico, el raytracing y los videojuegos a altos ratios de frames. Lo cual no quita para que Apple pueda convertirse con los años en un nuevo jugador a medio plazo en este segmento. Pero el tiempo dirá. Lo que sí hemos podido ver es una demo del Shadow of the Tomb Rider a 30fps corriendo en un chip ARM A12z, sin expecificar resolución, configuraciones del video juego es precipitado dar por sentado que podrá competir de tu a tu con las grandes. Lo que queda bastante claro es que sus aplicaciones, así como las más importantes de terceros ya están pensando en cómo migrar sus aplicaciones a la nueva arquitectura. En la demo pudimos ver cómo productos de Adobe o Final Cut Pro ya estaban en proceso de migración.
Universal Binaries 2
Este nuevo sistema de compilación y empaquetado permite desde Xcode la compilación de una aplicación que estuviera ya escrita para x86, para las dos arquitecruras de manera conjunta. Es decir, que cuando se cuelque una aplicación en la App Store de MacOS se depueden distribuir los binarios para ambas arquitecturas, para que de una manera transparente para el usuario de Mac se ejecute en su ordenador la versión de su arquitecrura. Desarrolladores como Adobe ya estan trabajando en ello y según Apple es cuestión de días, realizar este proceso.
En este caso dependerá mucho de la aplicación, y de su tamaño de código y su nivel de integración con el hardware, tanto a nivel de cpu como de GPU, pero es de esperar que la mayor parte de las grandes den el paso, y que las pequeñas con menos código no lo tengan muy complicado para migrar a este Universal 2.
Disponen de un Quick Start Program para poner al día los desarrolladores con este nuevo sistema, por el módico precio de 500$, estos de Apple no pierden ripio, pero al menos te incluye de manera temporal un Mac mini que funciona con el chip a12z bionic de los iPad pro para probar las aplicaciones en la nueva arquitectura.
Rosetta 2
Y que pasa con las aplicaciones que no puedan migrarse, no funcionarán en la nueva arquitectura? Apple piensa en todo, y dispone de un emulador que permite traducir, mientras que se instala, la aplicación compilada para intel a la nueva arquitectura. Esto permite que cualquier aplicación se peuda ejecutar en la nueva arquitectura, como siempre tendrá una pérdida de rendimiento vs la aplicación compilada de manera nativa para ARM, pero al menos podrás ejecutarla. También desde XCode se podrá depurar y ejecutar este modo Rosseta2
Mac Catalyst
Básicamente es la manera en la cual se podrán ejecutar aplicaciones hecha para iOS en el Mac. ¿Cómo resuelven el acceso a sensores? No se sabe, pero usan los mismos API’s de cocoa. Solo funcionarán las apps en los chips ARM, por lo que será en primer argumento para comprar un Mac con arquitectura ARM, que serán los únicos en ejecutar estas aplicaciones, mientras que los Mac basados en Intel no podrán hacerlo. Las apps se colocan en una ventana en MacOS. Las apps estarán el el cajón de aplicaciones como cualquier otra y se empaquetan con un bundle especial y una vez instalada puede usar funciones de macos como el compartir. Las extensiones de iOS también se podrán usar en MacOS. Habrá que ver qué cambios son necesarios por ejemplo el uso de menús, popovers, etc… Hacen especial mención al open-source qt, blender, electron, python, opencv, etc… lo cual me hace especial ilusión, pero poco más.
Virtualización y Docker, adios BootCamp, bienvenido Debian 10
La virtualización y el suo de docker se han convertido en virtualización y docker en una oblilgacion a la hora de desarrollar aplicaciones en local. Me ha hecho especial gracia ver a Parallels ejecutando una Debian 10, debido a que tiene una versión para ARM disponibles, porlo que no hace falta hacer una emulación, sino que con una virutalización será más que suficiente. Todavía están trabajando en tener los hypervisores y docker en funcionamiento en ARM, pero esperan tenerlo en el lanzamiento oficial. También ha sido curioso enterarse que puedes programar apliaciones Web en Swift con Vapor.
Cambios en MacOS 11 Big Sur
MacOS sube de version a la 11 con big sur con algunos cambios significativos en la interfaz:
- Cambian los iconos para darle un nuevo estilo.
- Las notificaciones y el panel de sistema ha sido modificado para parecerse al de iOS.
- SwiftUI es el sistema recomendado de desarrollo de interfaces en deterioro del UIKit.
- Promoción de la sidebar para el acceso al menú de aplicación.
- Color de acento en el ui.
Cambios en iPadOS 14
- Introducción de soporte de magic TouchPad.
- Diseños de tres columnas accesibles con gestos del trackpad.
- Mucha mención de la sidebar en todos los OS.
- Nuevos Uicollectionlist, uidatepicker, emoji picker, color picker,. Menús contextuales.
- Fusión entre ipados y macos.
- Mención al scanner lidar y arkit 4. Quieren venderlo como herramienta para profesionales de la construcción y arquitectos.
- Mención al Apple pencil. Podemos escribir con el pencil en cualquier campo de texto. Se pueden seleccionar letras, palabras y frases o párrafos. Textos para practicar la escritura.
Cambios en iOS 14
- Incluye la posibilidad de crear widgets par a la pantalla principal, que son compatibles en ipados y macos. Pueden ser cacheadas las vistas para mejorar el tiempo de renderizacion y no gastar batería. Archive view. iOS escoge que widget presentar cuando se stackean. Los widgets se definen como estructuras con atributos y funciones. Snapshot y timeline son las funciones principales de proveedor del widget.
- App Clips. Son enlaces a la App store. Integran “Sign in with Apple” Y “Apple Pay”. Deben pesar menos de 10megas. Son como las Instant apps de Google. Son como mini apps de la App principal. Son como un nuevo target de ejecución en XCode.
- Especial mención a la privacidad. Las nuevas tarjetas de privacidad se configuran desde el iTunes connector como parte de la configuración de la App Store.
- App Library. La manera de no tener páginas en la pantalla principal. Y tener un cajón de aplicaciones con en Android.
Novedades de WatchOS 7
- Nuevas watchfaces con complicaciones. Enlazan con las partes de la App. Ya se integran con swiftui. Ya pueden verse desde xcode de manera visual. Se pueden compartir con amigos. Descargará si se quiere las apps necesarias para ejecutar esa watchface.
- Poca cosa la verdad.
XCode 12
- Se ha cambiado la ui. Se puede cambiar el tamaño de las fuentes de cada parte. Pestaña de documentación.
- Se abren los ficheros en solo una pestaña si no se hace doble click en el fichero.
- Se pueden abrir carpetas enteras en el editor.
- Abrirá una pestaña por cada fichero.
- Crea una carpeta por cada target (iOS, ipados, macos etc..). Ofrece ayudas al rendimiento.
- Store kit se integra con xcode. Con pagos y refunds para pruebas incluso. Vista conjunta de modos light y dark en preview.
- Mejoras de rendimiento de xcode al code completion. Soporte de bibliotecas más fácil y visual.
- SwiftUI. Ya cubre casi todo lo que hace uikit. Se han incluido: control center y notification center.
- Sistema de capas mejorado.
- Modo lazy para listado para mejorar el manejo de memoria.
- Pero están todavía metiendo nuevos API’s como mapas.
- Unificación de API’s entre targets.
- Compilación condicional entre targets.
- Carpetas por target.
Comments