Proiectul Swift introduce noi imagini descărcabile ale lanțului de instrumente Swift pentru Windows! Aceste imagini conțin componente de dezvoltare necesare pentru a construi și rula cod Swift pe Windows.
De mai bine de un an, a existat un efort semnificativ pentru a porta Swift pe Windows împreună cu comunitatea de dezvoltatori de la swift.org. Suportul pentru Windows a ajuns acum la un punct în care primii utilizatori pot începe să folosească Swift pentru a construi experiențe reale pe această platformă.
Bringing Swift to Windows
Portarea Swift pe Windows nu se referă doar la simpla portare a compilatorului, ci mai degrabă la asigurarea faptului că întregul ecosistem este disponibil pe platformă. Acest lucru include compilatorul, biblioteca standard și bibliotecile de bază (dispatch, Foundation, XCTest). Aceste biblioteci fac parte din ceea ce le permite dezvoltatorilor să scrie aplicații puternice cu ușurință și fără a fi nevoiți să se preocupe de multe dintre detaliile sistemului de bază. Există multe detalii tehnice în povestea aducerii Swift la o stare utilizabilă pe Windows și, dacă vă interesează, vă recomand să consultați conferința mea pe această temă de la LLVM Developer Conference.
Cu aceste biblioteci de bază și cu interoperabilitatea flexibilă a Swift cu C, este posibil să dezvoltați aplicații pe Windows pur în Swift, profitând în același timp de corpus-ul existent de biblioteci de pe platformele Windows.
Aplicație de exemplu
Acest calculator demonstrativ este scris în întregime în Swift, cu un cod care trece fără probleme între codul aplicației scris în Swift și bibliotecile de sistem:
Acest proiect a fost construit folosind:
-
Clanțul de instrumente Swift pe Windows
-
O instalare a Visual Studio 2019 care furnizează celelalte piese necesare sub forma CMake, Ninja și Windows SDK
Deși aplicația demo este construită cu CMake, suportul Swift Package Manager pe Windows este în curs de realizare. În curând va fi posibil ca aplicația să fie construită folosind swift build
fără a avea nevoie de CMake sau Ninja.
Aici puteți vedea parcurgerea aplicației folosind lldb
:
Aplicații cross-platform
Primarii adoptatori, cum ar fi Readdle, experimentează cu aplicații cross-platform scrise în Swift, aducând cu ușurință multe dintre bibliotecile Swift existente pe Windows pentru a sprijini aplicațiile lor.
Am lucrat cu Alexander de la Readdle despre activitatea echipei sale, iar el mi-a trimis această notă:
Noi, la Readdle, am început să experimentăm cu Swift pe Windows cu mai mult de un an în urmă, în al doilea trimestru din 2019. La acel moment, lansasem deja Spark pentru Android, care utilizează Swift pentru a partaja codul de bază cu iOS/macOS, iar oportunitatea de a ne extinde la încă o platformă a fost foarte tentantă.
În ciuda faptului că unele funcționalități nu erau încă pregătite, Swift pe Windows s-a dovedit a fi pe deplin satisfăcător pentru nevoile noastre. De fapt, unele dependențe C/C++ ale unor terțe părți ne-au dat mai multe bătăi de cap decât Swift însuși. Toată logica de afaceri a Spark este localizată într-un modul Core separat. Un pachet de module, de fapt, dar noi ne referim la ele ca fiind Core. Acest lucru ne permite să folosim orice cadru UI de pe platforma țintă: AppKit pe macOS, UIKit pe iOS, UI Toolkit nativ pe Android. Așadar, practic, a trebuit să purtăm Spark Core pe Windows. După ce toate conceptele inițiale au fost dovedite, a fost în mare parte o muncă de rutină de zi cu zi pentru a-i da viață pe Windows.
Ce avem acum:
- 9 module Swift (255 739 SLOC, 2 133 de fișiere sursă)
- 3 module Swift de la terți
- 1452 de teste (alimentate de XCTest)
- Windows-based CI pentru a menține toate testele verzi
- Sistem de construire eterogen (parțial CMake, parțial scripturi personalizate)
Ca un bun exemplu, modulele Swift pure, cum ar fi CryptoSwift și OAuthSwift, aproape că au funcționat imediat ce au fost scoase din cutie. Am făcut o ajustare trivială a importurilor, am exclus câteva referințe AppKit/UIKit și voilà!
O altă provocare a fost să decidem cum să implementăm interfața cu utilizatorul. După discuții extinse, am ajuns să alegem Electron ca parte front-end a viitorului Spark pentru Windows. Asta însemna că nu numai că trebuia să fim capabili să construim Spark Core pe Windows, dar și să îl folosim ca un addon încărcabil pentru Node.js.
Node.js addon în Swift pur? Asta părea să fie surprinzător de ușor. Swift importă perfect antetele N-API. Mai avem nevoie de trei linii de cod C plus un mic antet C pentru a defini punctul de intrare al addonului, dar toată logica este în Swift. Datorită naturii transplatforme a Node.js, am putut să folosim macOS ca platformă de dezvoltare cu Xcode ca IDE, iar apoi să folosim agilitatea lui CMake pentru a construi același cod pe Windows.
Din prima zi în care am început, Swift pe Windows a făcut un pas uriaș înainte în ceea ce privește suportul și stabilitatea platformei. Aș spune că, dacă vă gândiți să vă extindeți baza de cod a aplicațiilor existente pe alte platforme decât macOS/iOS – puteți face acest lucru cu siguranță cu Swift acum, sau, cel puțin, în curând. Dacă întrețineți o mică bibliotecă Swift – ați putea adăuga cu ușurință suportul pentru Windows deja!
– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
Mai multe detalii sunt disponibile pe blogul Readdle.
Aducerea suportului pentru Windows în Swift este începutul unei călătorii. Suportul actual stabilește prima piatră de hotar în care limbajul este utilizabil. Există încă o altă parte și mai largă a ecosistemului, cum ar fi lldb și Swift Package Manager, care încă mai au nevoie de mai multă muncă pentru a fi la fel de complete în suportul lor pentru această platformă diferită.
Începem și ne implicăm!
Secțiunea Getting Started a fost actualizată cu noi informații despre utilizarea Swift pe Windows! Pentru primii adoptatori care încep și găsesc probleme, vă rugăm să le raportați la Swift Bug Tracker.
Există multe oportunități pentru cei interesați să ajute la promovarea Swift pe Windows. Unul dintre lucrurile care fac Swift ușor de utilizat sunt bibliotecile: publicarea de noi biblioteci și pachete pentru Swift pe Windows sau portarea celor existente este o altă modalitate de a vă implica și de a contribui la a face ca lucrul cu Swift să fie o plăcere din ce în ce mai mare.
Pentru cei interesați să lucreze la instrumentele de bază, există o mulțime de muncă de făcut pentru a îmbunătăți depanatorul și pentru a îmbunătăți suportul pentru Windows în Swift Package Manager. Vă invităm să consultați Swift Bug Tracker pentru problemele curente și să trimiteți patch-uri în depozitele GitHub. Există, de asemenea, o nouă secțiune pe forumurile Swift pentru a discuta despre dezvoltarea Swift pe Windows. Acolo comunitatea poate discuta problemele sau vă puteți prezenta și îi puteți anunța pe ceilalți asupra cărui domeniu al instrumentelor vă concentrați. Aceasta este ocazia perfectă de a vă implica în proiect și de a-l ajuta să se dezvolte într-un ecosistem puternic, vibrant și transplatformat. Abia așteptăm să vedem ce lucruri interesante veți construi cu Swift!
.