Le projet Swift présente de nouvelles images téléchargeables de la chaîne d’outils Swift pour Windows ! Ces images contiennent les composants de développement nécessaires pour construire et exécuter du code Swift sur Windows.
Depuis plus d’un an maintenant, il y a un effort important pour porter Swift sur Windows en conjonction avec la communauté de développeurs sur swift.org. Le support de Windows est maintenant à un point où les premiers adoptants peuvent commencer à utiliser Swift pour construire de véritables expériences sur cette plateforme.
Bringing Swift to Windows
Porter Swift sur Windows ne consiste pas simplement à porter le compilateur, mais plutôt à s’assurer que l’écosystème complet est disponible sur la plateforme. Cela inclut le compilateur, la bibliothèque standard et les bibliothèques de base (dispatch, Foundation, XCTest). Ces bibliothèques font partie de ce qui permet aux développeurs d’écrire des applications puissantes avec facilité et sans avoir à se soucier de nombreux détails du système sous-jacent. Il y a beaucoup de détails techniques dans l’histoire de l’apport de Swift à un état utilisable sur Windows, et si vous êtes intéressé par ces détails, je vous recommande de consulter ma conférence sur le sujet lors de la LLVM Developer Conference.
Avec ces bibliothèques de base et l’interopérabilité flexible de Swift avec C, il est possible de développer des applications sur Windows purement en Swift tout en profitant du corpus existant de bibliothèques sur les plateformes Windows.
Exemple d’application
Cette calculatrice de démonstration est écrite entièrement en Swift, le code basculant de manière transparente entre le code de l’application écrit en Swift et les bibliothèques du système:
Ce projet a été construit en utilisant :
-
La chaîne d’outils Swift sur Windows
-
Une installation de Visual Studio 2019 qui fournit les autres pièces nécessaires sous la forme de CMake, Ninja et le SDK Windows
Bien que l’application de démonstration soit construite avec CMake, la prise en charge du gestionnaire de paquets Swift sur Windows arrive. Il sera bientôt possible d’obtenir la construction de l’application en utilisant swift build
sans avoir besoin de CMake ou de Ninja.
Vous pouvez voir ici l’étape à travers l’application en utilisant lldb
:
Applications multiplateformes
Des adopteurs précoces comme Readdle expérimentent des applications multiplateformes écrites en Swift, en apportant facilement de nombreuses bibliothèques Swift existantes à Windows pour soutenir leurs applications.
J’avais travaillé avec Alexander chez Readdle au sujet du travail de son équipe, et il m’a envoyé cette note :
Nous, chez Readdle, avons commencé à expérimenter Swift sur Windows il y a plus d’un an, au deuxième trimestre de 2019. À ce moment-là, nous avions déjà publié Spark pour Android, qui utilise Swift pour partager le code principal avec iOS/macOS, et l’opportunité d’étendre à une autre plateforme était vraiment tentante.
Malgré le fait que certaines fonctionnalités ne sont pas encore prêtes, Swift sur Windows s’est avéré satisfaire pleinement nos besoins. En fait, certaines dépendances C/C++ tierces nous ont donné plus de maux de tête que Swift lui-même. Toute la logique commerciale de Spark se trouve dans un module Core distinct. Un paquet de modules, en fait, mais nous les appelons Core. Cela nous permet d’utiliser n’importe quel cadre d’interface utilisateur sur la plate-forme cible : AppKit sur macOS, UIKit sur iOS, UI Toolkit natif sur Android. Donc, fondamentalement, nous devions porter Spark Core sur Windows. Après que tous les concepts initiaux aient été prouvés, c’était surtout du travail quotidien de routine pour le faire vivre sur Windows.
Ce que nous avons maintenant :
- 9 modules Swift (255 739 SLOC, 2 133 fichiers source)
- 3 modules swift tiers
- 1452 tests (alimentés par XCTest)
- Windows-based CI pour garder tous les tests verts
- Système de construction hétérogène (partiellement CMake, partiellement des scripts personnalisés)
Comme un bon exemple, les modules Swift purs comme CryptoSwift et OAuthSwift ont presque fonctionné dès la boîte. Nous avons fait un ajustement trivial des importations, exclu quelques références AppKit/UIKit et voilà !
Un autre défi était de décider comment implémenter l’interface utilisateur. Après un long discours, nous avons fini par choisir Electron comme partie frontale du futur Spark pour Windows. Cela signifiait que nous devions non seulement être en mesure de construire Spark Core sur Windows, mais aussi de l’utiliser comme un addon chargeable pour Node.js.
Un addon Node.js en Swift pur ? Cela semblait être étonnamment facile. Swift importe parfaitement les en-têtes N-API. Nous avons encore besoin de trois lignes de code C plus un petit en-tête C pour définir le point d’entrée de l’addon, mais toute la logique est en Swift. En raison de la nature multiplateforme de Node.js, nous avons pu utiliser macOS comme plateforme de développement avec Xcode comme IDE, puis utiliser l’agilité de CMake pour construire le même code sur Windows.
Depuis le premier jour où nous avons commencé, Swift sur Windows a fait un pas de géant en termes de support de la plateforme et de stabilité. Je dirais, si vous envisagez d’étendre votre base de code d’application existante à d’autres plateformes que macOS/iOS – vous pouvez absolument le faire avec Swift maintenant, ou, au moins, bientôt. Si vous maintenez une petite bibliothèque Swift – vous pourriez facilement ajouter le support de Windows déjà!
– Alexander Smarus ; Product Engineering Lead at Spark Team, Readdle Inc
Plus de détails sont disponibles sur le blog de Readdle.
Ajouter le support de Windows à Swift est le début d’un voyage. Le support actuel pose le premier jalon où le langage est utilisable. Il y a encore une autre partie encore plus large de l’écosystème comme lldb et le gestionnaire de paquets Swift qui ont encore besoin de plus de travail pour être aussi complet dans leur support pour cette plateforme différente.
Démarrer et s’impliquer !
La section Démarrer a été mise à jour avec de nouvelles informations sur l’utilisation de Swift sur Windows ! Pour les premiers adoptants qui se lancent et trouvent des problèmes, veuillez les signaler sur le Swift Bug Tracker.
Il existe de nombreuses opportunités pour ceux qui souhaitent aider à faire avancer Swift sur Windows. Les bibliothèques sont l’une des choses qui rendent Swift facile à utiliser : publier de nouvelles bibliothèques et de nouveaux paquets pour Swift sur Windows ou porter ceux qui existent déjà est une autre façon de s’impliquer et de contribuer à faire du travail avec Swift un plaisir toujours plus grand.
Pour ceux qui sont intéressés à travailler sur l’outillage de base, il y a beaucoup de travail à faire pour améliorer le débogueur et pour améliorer le support de Windows dans le gestionnaire de paquets Swift. Nous vous invitons à consulter le Swift Bug Tracker pour connaître les problèmes actuels et à envoyer des correctifs dans les dépôts GitHub. Il existe également une nouvelle section sur les forums Swift pour discuter du développement de Swift sur Windows. La communauté peut y discuter des problèmes ou vous pouvez vous présenter et faire savoir aux autres sur quel domaine de l’outillage vous vous concentrez. C’est l’occasion idéale de s’impliquer dans le projet et de l’aider à devenir un écosystème multiplateforme solide et dynamique. Nous sommes impatients de voir les choses passionnantes que vous construirez avec Swift !