Noticias
Tendencia

El framework Foundation será reescrito en Swift

El framework más importante del lenguaje Swift será de código abierto y estará implementado con el propio lenguaje

Cuando parecían que las aguas estaban más o menos calmadas en el mundo del desarrollo, la comunidad de Swift nos acaba de sorprender con una de las noticias más importantes de los últimos años.

Y es que Tony Parker, uno de los empleados de Apple involucrados en la evolución del lenguaje Swift, ha escrito un post anunciando cambios profundos en el futuro del framework Foundation. Os los contamos a continuación.

Pero, ¿qué es Foundation?

Podríamos decir que la librería Foundation es uno de los pilares donde se encuentran aglutinadas muchas de las funciones básicas de Swift. Si bien el lenguaje es capaz por si mismo de crear programas y aplicaciones completamente funcionales, la mayoría de los proyectos en Swift requiere el uso de esta librería para aumentar sus capacidades.

Este framework contiene un capa esencial de funcionalidades para el trabajo con cadenas de texto, colecciones, fechas… así como patrones y abstracciones que permiten escribir un código limpio y robusto. Por lo tanto, se trata de una librería básica para el lenguaje desde su fundación y su lanzamiento como proyecto Open Source.

El proyecto que engloba los diferentes componentes (swift-corelibs-foundation) de esta librería, jugó un papel fundamental en la liberación del código en 2016. Se creó una capa de interconexión que encapsula el código existente en C y permite una interfaz con el lenguaje Swift. Durante estos años, el lenguaje Swift ha crecido tanto en interés como en tecnología y desarrollo por lo que se torna necesaria una revisión de su librería fundamental. Máxime cuando se trata de un wrapper de código C.

Novedades en el futuro de Swift Foundation

El anuncio destaca que se trata de un rediseño completo de la librería tanto en una reescritura del código como en la reevaluación de la estrategia a futuro y el papel de la librería dentro del lenguaje. El proceso será largo y el reto es muy grande pero ya tenemos una definición de los objetivos que se persiguen:

No más código C encapsulado

Será el propio Swift el lenguaje elegido para reescribir la librería de forma nativa. Con esto se evitará el coste en rendimiento que supone la conversión entre C y Swift y se mejorará la velocidad en la ejecución y compilación del código. Otra de las ventajas inherentes a esta estrategia es que más desarrolladores que conozcan el lenguaje Swift podrán entender y revisar el código así como realizar contribuciones al mismo.

Proporcionar paquetes más pequeños y granulares

Cuando se realiza una implementación desde cero, es posible revisar la arquitectura, que ha podido quedar obsoleta desde el planteamiento inicial, para adecuarse a los casos de uso actuales.

Los desarrolladores soñamos con librerías ligeras, modulares y sin dependencias innecesarias así que El nuevo desarrollo buscará separar el framework en componentes. Ya no han dado pistas sobre algunos de ellos:

  • FoundationEssentials: Con los tipos básicos y más importantes
  • FoundationInternationalization: Para aplicaciones que necesites lidiar con contenido localizado como formatos de fechas, tiempo…
  • FoundationObjCCompatibility: Que contenga todo lo necesario para conectar con APIs de Objective-C.

La idea principal es no tener que importar el framework completo así como sus dependencias para todas y cada una de las aplicaciones que desarrollemos en Swift. Así, sólo haremos uso del módulo requerido y conseguiremos no sólo programas con un tamaño menor sino proyectos más ágiles en cuanto a compilación, resolución de paquetes y rendimiento general.

Unificar las implementaciones

La implementación actual de Foundation está fuertemente ligada al los sistemas en los que se ejecuta. Esto provoca, además de mayor lentitud en la evolución del lenguaje, muchos más bugs y errores de comportamiento no previsto o no suficientemente testados.

El nuevo desarrollo se abstraerá de la plataforma en la que será ejecutado generando así una implementación única. Serán, por tanto, los propios sistemas los que se encargarán de mantener el soporte las APIs específicas porque ya se ha anunciado que no todas las características actuales estarán incluidas en la nueva implementación. Concretamente se habla de las siguientes:

  • RunLoop, Lock, OperationQueue, Stream, Port, Timer… que serán reemplazadas por el nuevo modelo de concurrencia
  • Compatibilidad del prefijo NS en los tipos de colección
  • NSCoding, NSKeyedArchiver ahora deberán implementarse utilizando el protocolo Codable
  • Progress: Aún no cuenta con una equivalencia.

También se ha sabido que para plataformas basadas en Darwin, como los sistemas operativos de Apple, las implementaciones que queden fuera de Foundation serán mantenidas por el sistema combinando el código actual en C, Objective-C y Swift.

Un proyecto abierto a todos

Hemos dejado para el final una de las cosas más importantes: su implementación también se hace Open Source y se abre así a la comunidad de desarrolladores. Esto es una noticia genial porque, como os contamos unos párrafos más arriba, el lenguaje utilizado será el propio Swift. Se abre la puerta a los propios usuarios del lenguaje a realizar contribuciones y mejoras del mismo sin tener que adquirir conocimiento de un nuevo lenguaje de programación.

Por nuestra parte, no podemos estar más entusiasmados con la noticia. La herramienta que utilizamos día a día sigue con un ritmo frenético de actualización, evolución y mejora. Además, con esta estrategia, podemos contribuir al desarrollo de la misma con nuestros conocimientos actuales. Y por último, el empuje en rendimiento, sencillez y optimización de la librería más importante de Swift va a ser realmente notorio.

Muchas gracias por leernos y hoy especialmente… Un saludo y Good Apple Coding.

Arturo Rivas

Líder técnico especializado en mobile. Analista y desarrollador software. Apasionado de la tecnología, el deporte y la música.

Artículos relacionados

Botón volver arriba