Swift.org

El proyecto Swift presenta nuevas imágenes descargables de la cadena de herramientas Swift para Windows. Estas imágenes contienen los componentes de desarrollo necesarios para construir y ejecutar el código Swift en Windows.

Desde hace más de un año, ha habido un esfuerzo significativo para portar Swift a Windows en conjunto con la comunidad de desarrolladores en swift.org. El soporte de Windows está ahora en un punto en el que los primeros en adoptarlo pueden empezar a usar Swift para construir experiencias reales en esta plataforma.

Llevar Swift a Windows

Portar Swift a Windows no consiste simplemente en portar el compilador, sino en asegurar que todo el ecosistema esté disponible en la plataforma. Esto incluye el compilador, la biblioteca estándar y las bibliotecas centrales (dispatch, Foundation, XCTest). Estas bibliotecas son parte de lo que permite a los desarrolladores escribir aplicaciones potentes con facilidad y sin tener que preocuparse de muchos de los detalles del sistema subyacente. Hay muchos detalles técnicos en la historia de llevar Swift a un estado utilizable en Windows, y si estás interesado en ellos, recomendaría revisar mi charla sobre el tema de la Conferencia de Desarrolladores de LLVM.

Con estas bibliotecas de núcleo y la interoperabilidad flexible de Swift con C, es posible desarrollar aplicaciones en Windows puramente en Swift mientras se aprovecha el corpus existente de bibliotecas en las plataformas Windows.

Aplicación de ejemplo

Esta calculadora de demostración está escrita íntegramente en Swift, con un código que alterna sin problemas entre el código de la aplicación escrito en Swift y las bibliotecas del sistema:

Este proyecto fue construido usando:

  1. La cadena de herramientas de Swift en Windows

  2. Una instalación de Visual Studio 2019 que entrega las otras piezas necesarias en forma de CMake, Ninja y el SDK de Windows

Aunque la aplicación de demostración se construye con CMake, el soporte del gestor de paquetes de Swift en Windows está en camino. Pronto será posible conseguir la construcción de la aplicación utilizando swift build sin necesidad de CMake o Ninja.

Aquí puedes ver el paso de la aplicación utilizando lldb:

Aplicaciones multiplataforma

Los primeros en adoptarlas, como Readdle, están experimentando con aplicaciones multiplataforma escritas en Swift, llevando fácilmente muchas de las librerías Swift existentes a Windows para soportar sus aplicaciones.

He estado trabajando con Alexander en Readdle sobre el trabajo de su equipo, y me envió esta nota:

En Readdle empezamos a experimentar con Swift en Windows hace más de un año, en el segundo trimestre de 2019. Por aquel entonces ya habíamos lanzado Spark para Android, que utiliza Swift para compartir el código del núcleo con iOS/macOS, y la oportunidad de extenderlo a una plataforma más era realmente tentadora.

A pesar de que algunas funcionalidades aún no están listas, Swift en Windows resultó satisfacer plenamente nuestras necesidades. De hecho, algunas dependencias de C/C++ de terceros nos dieron más dolores de cabeza que el propio Swift. Toda la lógica de negocio de Spark se encuentra en un módulo Core separado. Un paquete de módulos, en realidad, pero nos referimos a ellos como Core. Esto nos permite utilizar cualquier marco de interfaz de usuario en la plataforma de destino: AppKit en macOS, UIKit en iOS, UI Toolkit nativo en Android. Así que, básicamente, tuvimos que portar Spark Core en Windows. Una vez probados todos los conceptos iniciales, fue sobre todo un trabajo rutinario del día a día para darle vida en Windows.

Lo que tenemos ahora:

  • 9 módulos Swift (255 739 SLOC, 2 133 archivos fuente)
  • 3 módulos swift de terceros
  • 1452 pruebas (impulsadas por XCTest)
  • Ci basado en Windows para mantener todas las pruebas en verde
  • Sistema de construcción heterogéneo (parcialmente CMake, parcialmente scripts personalizados)

Como buen ejemplo, los módulos Swift puros como CryptoSwift y OAuthSwift casi funcionaron nada más sacarlos de la caja. Hicimos un ajuste trivial de las importaciones, excluimos algunas referencias a AppKit/UIKit y ¡voilà!

Otro reto fue decidir cómo implementar la interfaz de usuario. Después de un extenso discurso terminamos con Electron como la parte del front-end del futuro Spark para Windows. Eso significaba que no sólo teníamos que ser capaces de construir Spark Core en Windows, sino también utilizarlo como un addon cargable para Node.js.

¿Addon de Node.js en Swift puro? Eso parecía ser sorprendentemente fácil. Swift importa perfectamente las cabeceras de la N-API. Todavía necesitamos tres líneas de código C más una pequeña cabecera C para definir el punto de entrada del addon, pero toda la lógica está en Swift. Debido a la naturaleza multiplataforma de Node.js, pudimos usar macOS como plataforma de desarrollo con Xcode como IDE, y luego usar la agilidad de CMake para construir el mismo código en Windows.

Desde el primer día que empezamos, Swift en Windows dio un paso de gigante en términos de soporte de plataformas y estabilidad. Yo diría, si usted está pensando en la ampliación de su aplicación existente codebase a las plataformas distintas de macOS / iOS – absolutamente puede hacerlo con Swift ahora, o, al menos, pronto. Si mantienes una pequeña librería Swift – ¡podrías añadir fácilmente el soporte para Windows ya!

– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc

Más detalles están disponibles en el blog de Readdle.

Añadir el soporte para Windows a Swift es el comienzo de un viaje. El soporte actual establece el primer hito en el que el lenguaje es utilizable. Todavía hay otra parte más amplia del ecosistema como lldb y el gestor de paquetes Swift que todavía necesitan más trabajo para ser tan completos en su soporte para esta plataforma diferente.

¡Cómo empezar y cómo involucrarse!

¡La sección Cómo empezar se ha actualizado con nueva información sobre el uso de Swift en Windows! Para los primeros usuarios que están empezando y encuentran problemas, por favor, infórmenlos en el Swift Bug Tracker.

Hay muchas oportunidades para aquellos interesados en ayudar a impulsar Swift en Windows. Una de las cosas que hace que Swift sea fácil de usar son las librerías: publicar nuevas librerías y paquetes para Swift en Windows o portar las existentes es otra forma de involucrarse y ayudar a que trabajar con Swift sea un placer cada vez mayor.

Para los interesados en trabajar en el núcleo de las herramientas, hay mucho trabajo por hacer para mejorar el depurador y para mejorar el soporte de Windows en el Swift Package Manager. Os invitamos a consultar el Swift Bug Tracker para los problemas actuales y a enviar parches a los repositorios de GitHub. También hay una nueva sección en los foros de Swift para discutir el desarrollo de Swift en Windows. Allí la comunidad puede discutir los problemas o puedes presentarte y hacer saber a los demás en qué área de las herramientas te estás centrando. Esta es la oportunidad perfecta para involucrarse en el proyecto y ayudar a que se convierta en un ecosistema fuerte, vibrante y multiplataforma. No podemos esperar a ver qué cosas emocionantes construyes con Swift!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.