Swift.org

Il progetto Swift introduce nuove immagini scaricabili della toolchain Swift per Windows! Queste immagini contengono i componenti di sviluppo necessari per costruire ed eseguire il codice Swift su Windows.

Da oltre un anno, c’è stato un notevole sforzo per portare Swift su Windows in collaborazione con la comunità di sviluppatori su swift.org. Il supporto di Windows è ora ad un punto in cui i primi utilizzatori possono iniziare ad usare Swift per costruire esperienze reali su questa piattaforma.

Portare Swift su Windows

Portare Swift su Windows non significa semplicemente portare il compilatore, ma piuttosto assicurare che l’intero ecosistema sia disponibile sulla piattaforma. Questo include il compilatore, la libreria standard e le librerie di base (dispatch, Foundation, XCTest). Queste librerie sono parte di ciò che permette agli sviluppatori di scrivere potenti applicazioni con facilità e senza doversi preoccupare di molti dei dettagli del sistema sottostante. Ci sono molti dettagli tecnici nella storia del portare Swift ad uno stato utilizzabile su Windows, e se siete interessati, vi consiglio di controllare il mio intervento sull’argomento alla LLVM Developer Conference.

Con queste librerie di base e l’interoperabilità flessibile di Swift con C, è possibile sviluppare applicazioni su Windows puramente in Swift sfruttando il corpus di librerie esistenti sulle piattaforme Windows.

Applicazione d’esempio

Questa calcolatrice demo è scritta interamente in Swift, con il codice che passa senza soluzione di continuità tra il codice dell’applicazione scritto in Swift e le librerie di sistema:

Questo progetto è stato costruito usando:

  1. La toolchain Swift su Windows

  2. Un’installazione di Visual Studio 2019 che fornisce gli altri pezzi necessari sotto forma di CMake, Ninja, e il Windows SDK

Anche se l’applicazione demo è costruita con CMake, il supporto Swift Package Manager su Windows sta arrivando. Sarà presto possibile costruire l’applicazione usando swift build senza aver bisogno di CMake o Ninja.

Qui potete vedere l’applicazione usando lldb:

Applicazioni multipiattaforma

I primi utilizzatori come Readdle stanno sperimentando applicazioni multipiattaforma scritte in Swift, portando facilmente molte delle librerie Swift esistenti su Windows per supportare le loro applicazioni.

Ho lavorato con Alexander di Readdle sul lavoro del suo team, e mi ha inviato questa nota:

Noi di Readdle abbiamo iniziato a sperimentare con Swift su Windows più di un anno fa, nel Q2 del 2019. A quel tempo abbiamo già rilasciato Spark per Android che utilizza Swift per condividere il codice core con iOS / macOS, e l’opportunità di estendere a un’altra piattaforma era davvero allettante.

Nonostante alcune funzionalità non siano ancora pronte, Swift su Windows si è rivelato pienamente soddisfacente per le nostre esigenze. Infatti, alcune dipendenze C/C++ di terze parti ci hanno dato più mal di testa di Swift stesso. Tutta la logica di business di Spark si trova in un modulo Core separato. Un pacchetto di moduli, in realtà, ma ci riferiamo a loro come Core. Questo ci permette di utilizzare qualsiasi framework UI sulla piattaforma di destinazione: AppKit su macOS, UIKit su iOS, UI Toolkit nativo su Android. Quindi, fondamentalmente, abbiamo dovuto portare Spark Core su Windows. Dopo che tutti i concetti iniziali sono stati provati, è stato per lo più un lavoro quotidiano di routine per portarlo su Windows.

Cosa abbiamo ora:

  • 9 moduli Swift (255 739 SLOC, 2 133 file sorgente)
  • 3 moduli swift di terze parti
  • 1452 test (alimentati da XCTest)
  • Ci basato su Windows per mantenere tutti i test verdi
  • Sistema di build eterogeneo (in parte CMake, parzialmente script personalizzati)

Come buon esempio, moduli Swift puri come CryptoSwift e OAuthSwift hanno quasi funzionato subito. Abbiamo fatto un banale aggiustamento delle importazioni, escluso alcuni riferimenti AppKit/UIKit e voilà!

Un’altra sfida era decidere come implementare l’interfaccia utente. Dopo un ampio discorso abbiamo finito con Electron come parte front-end del futuro Spark per Windows. Questo significava che non solo dovevamo essere in grado di costruire Spark Core su Windows, ma anche usarlo come addon caricabile per Node.js.

Addon per Node.js in puro Swift? Questo sembra essere sorprendentemente facile. Swift importa perfettamente le intestazioni N-API. Abbiamo ancora bisogno di tre righe di codice C più una piccola intestazione C per definire il punto di ingresso dell’addon, ma tutta la logica è in Swift. A causa della natura multipiattaforma di Node.js, siamo stati in grado di usare macOS come piattaforma di sviluppo con Xcode come IDE, e poi usare l’agilità di CMake per costruire lo stesso codice su Windows.

Dal primo giorno in cui abbiamo iniziato, Swift su Windows ha fatto un enorme passo avanti in termini di supporto della piattaforma e stabilità. Direi che se state pensando di estendere la vostra codebase di applicazioni esistenti a piattaforme diverse da macOS/iOS – potete assolutamente farlo con Swift ora, o, almeno, presto. Se state mantenendo una piccola libreria Swift – potreste facilmente aggiungere il supporto per Windows già!

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

Più dettagli sono disponibili sul blog di Readdle.

Aggiungere il supporto per Windows a Swift è l’inizio di un viaggio. L’attuale supporto stabilisce la prima pietra miliare in cui il linguaggio è utilizzabile. C’è ancora un’altra parte ancora più ampia dell’ecosistema come lldb e il Swift Package Manager che hanno ancora bisogno di più lavoro per essere altrettanto completi nel loro supporto per questa diversa piattaforma.

Iniziare e farsi coinvolgere!

La sezione Getting Started è stata aggiornata con nuove informazioni sull’uso di Swift su Windows! Per i primi utilizzatori che stanno iniziando e trovano problemi, si prega di segnalarli al Swift Bug Tracker.

Ci sono molte opportunità per chi è interessato ad aiutare a far progredire Swift su Windows. Una delle cose che rende Swift facile da usare sono le librerie: pubblicare nuove librerie e pacchetti per Swift su Windows o fare il porting di quelle esistenti è un altro modo per essere coinvolti e contribuire a rendere il lavoro con Swift un piacere sempre maggiore.

Per chi è interessato a lavorare sugli strumenti di base, c’è molto lavoro da fare per migliorare il debugger e per migliorare il supporto a Windows nel Swift Package Manager. Vi invitiamo a controllare lo Swift Bug Tracker per i problemi attuali e ad inviare patch ai repository GitHub. C’è anche una nuova sezione sui forum Swift per discutere lo sviluppo di Swift su Windows. Lì la comunità può discutere dei problemi o puoi presentarti e far sapere agli altri su quale area degli strumenti ti stai concentrando. Questa è l’opportunità perfetta per essere coinvolti nel progetto e aiutarlo a crescere in un ecosistema forte, vibrante e multipiattaforma. Non vediamo l’ora di vedere quali cose emozionanti costruirete con Swift!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.