A Swift projekt új letölthető Swift toolchain képeket mutat be Windowsra! Ezek a képek a Swift kód Windowson történő építéséhez és futtatásához szükséges fejlesztői komponenseket tartalmazzák.
A swift.org fejlesztői közösségével közösen már több mint egy éve jelentős erőfeszítéseket teszünk a Swift Windowsra történő átültetésére. A Windows-támogatás mostanra elérte azt a pontot, amikor a korai alkalmazók elkezdhetik használni a Swiftet, hogy valódi élményeket építsenek ezen a platformon.
Bringing Swift to Windows
A Swift Windowsra történő portolása nem egyszerűen a fordítóprogram portolásáról szól, hanem arról, hogy a teljes ökoszisztéma elérhető legyen a platformon. Ez magában foglalja a fordítót, a szabványkönyvtárat és az alapvető könyvtárakat (dispatch, Foundation, XCTest). Ezek a könyvtárak részei annak, ami lehetővé teszi a fejlesztők számára, hogy nagy teljesítményű alkalmazásokat írjanak könnyedén és anélkül, hogy a mögöttes rendszer számos részlete miatt aggódniuk kellene. A Swift Windowson való használhatóvá tételének története sok technikai részletet tartalmaz, és ha érdekli, ajánlom, hogy nézze meg az LLVM fejlesztői konferencián tartott előadásomat a témában.
Ezekkel a magkönyvtárakkal és a Swift C-vel való rugalmas átjárhatóságával lehetővé válik, hogy Windowson tisztán Swiftben fejlesszünk alkalmazásokat, miközben kihasználjuk a Windows platformok meglévő könyvtárak korpuszát.
Példaalkalmazás
Ez a demó számológép teljes egészében Swiftben íródott, a kód zökkenőmentesen váltogat a Swiftben írt alkalmazáskód és a rendszerkönyvtárak között:
Ez a projekt a következő eszközökkel készült:
-
A Swift eszköztár Windowson
-
A Visual Studio 2019 telepítése, amely a többi szükséges darabot is szállítja a CMake, a Ninja és a Windows SDK formájában
Bár a demoalkalmazás CMake-kel készült, a Swift Package Manager támogatása Windowson hamarosan megjelenik. Hamarosan lehetőség lesz arra, hogy az alkalmazást a swift build
segítségével építsük fel, anélkül, hogy szükségünk lenne a CMake-re vagy a Ninja-ra.
Itt láthatjuk, ahogy az alkalmazást a lldb
segítségével lépegetjük végig:
Keresztplatformos alkalmazások
A Readdle-hez hasonló korai alkalmazók kísérleteznek a Swiftben írt keresztplatformos alkalmazásokkal, és számos meglévő Swift-könyvtárat könnyen átültetnek Windowsra az alkalmazásaik támogatására.
A Readdle-nél együtt dolgoztam Alexanderrel a csapata munkájáról, és ezt a jegyzetet küldte nekem:
A Readdle-nél több mint egy évvel ezelőtt, 2019 második negyedévében kezdtünk kísérletezni a Swifttel Windowson. Akkoriban már kiadtuk a Spark for Androidot, amely Swiftet használ a magkód megosztására az iOS/macOS-szel, és a lehetőség, hogy még egy platformra kiterjesszük, nagyon csábító volt.
Az egyelőre még nem kész funkciók egy része ellenére kiderült, hogy a Swift on Windows teljes mértékben kielégíti az igényeinket. Valójában néhány harmadik féltől származó C/C++ függőség több fejfájást okozott nekünk, mint maga a Swift. A Spark teljes üzleti logikája egy különálló Core modulban található. Tulajdonképpen egy modulcsomagban, de mi Core-ként hivatkozunk rájuk. Ez lehetővé teszi számunkra, hogy bármilyen UI-keretrendszert használjunk a célplatformon: AppKit a macOS-en, UIKit az iOS-en, natív UI Toolkit az Androidon. Tehát alapvetően a Spark Core-t kellett portolnunk Windowsra. Miután az összes kezdeti koncepciót bizonyítottuk, többnyire rutinszerű napi munka volt, hogy életre keltsük Windowson.
Mi van most:
- 9 Swift modul (255 739 SLOC, 2 133 forrásfájl)
- 3 harmadik féltől származó swift modul
- 1452 teszt (powered by XCTest)
- Windows alapú CI, hogy minden teszt zöld maradjon
- Heterogén build rendszer (részben CMake, részben egyéni szkriptek)
Jó példa erre, hogy az olyan tiszta Swift modulok, mint a CryptoSwift és az OAuthSwift szinte azonnal működtek. Triviális import kiigazításokat végeztünk, kizártunk néhány AppKit/UIKit hivatkozást és voilá!
A másik kihívás az volt, hogy eldöntsük, hogyan valósítsuk meg a felhasználói felületet. Kiterjedt diskurzus után végül az Electron-nál kötöttünk ki, mint a jövőbeli Spark for Windows front-end része. Ez azt jelentette, hogy nem csak a Spark Core-t kellett tudnunk építeni Windowson, hanem a Node.js betölthető kiegészítőjeként is használnunk kellett.
Node.js kiegészítő tiszta Swiftben? Ez meglepően egyszerűnek tűnt. A Swift tökéletesen importálja az N-API fejléceket. Még mindig szükségünk van három sor C kódra és egy kis C fejlécre az addon belépési pontjának meghatározásához, de minden logika Swiftben van. A Node.js crossplatform jellegének köszönhetően képesek voltunk a macOS-t fejlesztési platformként használni az Xcode-dal mint IDE-vel, majd a CMake agilitását kihasználva ugyanazt a kódot Windowson is elkészíteni.
A Swift Windowson az első naptól kezdve óriási lépést tett előre a platformtámogatás és a stabilitás tekintetében. Azt mondanám, ha a meglévő alkalmazáskódbázisodat a macOS/iOS-től eltérő platformokra is ki szeretnéd terjeszteni – most már abszolút megteheted a Swifttel, vagy legalábbis hamarosan. Ha egy kis Swift könyvtárat tart fenn – már most is könnyedén hozzáadhatja a Windows-támogatást!
– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
Bővebb részletek a Readdle blogján olvashatók.
A Windows-támogatás hozzáadása a Swifthez egy utazás kezdete. A mostani támogatás az első mérföldkő, ahol a nyelv használhatóvá válik. Van még egy másik, még szélesebb része az ökoszisztémának, mint az lldb és a Swift Package Manager, amelyeknek még több munkára van szükségük ahhoz, hogy ugyanolyan teljes legyen a támogatásuk ezen a különböző platformon.
Kezdjük el és kapcsolódjunk be!
A Kezdjük el szakasz frissült a Swift Windowson való használatával kapcsolatos új információkkal! A korai alkalmazóknak, akik most kezdenek belejönni és problémákat találnak, kérjük, jelentsék azokat a Swift Bug Trackerben.
Sok lehetőség van azok számára, akik szeretnének segíteni a Swift on Windows továbbfejlesztésében. Az egyik dolog, ami a Swiftet könnyen használhatóvá teszi, a könyvtárak: új könyvtárak és csomagok közzététele a Swift on Windowshoz vagy a meglévők portolása egy másik módja annak, hogy részt vegyünk és segítsünk abban, hogy a Swifttel való munka egyre nagyobb élvezetet jelentsen.
Azok számára, akiket érdekel az alapvető eszközökkel kapcsolatos munka, rengeteg munka vár a debugger javítására és a Swift Package Manager Windows-támogatásának javítására. Felkérünk mindenkit, hogy nézze meg a Swift Bug Tracker-t az aktuális problémákért, és küldjön javításokat a GitHub tárolókba. A Swift fórumokon is van egy új szekció, ahol a Swift Windowson történő fejlesztését lehet megvitatni. Ott a közösség megvitathatja a problémákat, vagy bemutatkozhat, és elmondhatja a többieknek, hogy az eszközfejlesztés mely területére összpontosít. Ez tökéletes lehetőség arra, hogy bekapcsolódj a projektbe, és segítsd, hogy egy erős, élénk, platformokon átívelő ökoszisztémává fejlődjön. Alig várjuk, hogy lássuk, milyen izgalmas dolgokat építesz a Swift segítségével!