Swift.org

Projekt Swift představuje nové obrazy řetězce nástrojů Swift pro Windows ke stažení! Tyto obrazy obsahují vývojové komponenty potřebné k sestavení a spuštění kódu Swift v systému Windows.

Již více než rok probíhá ve spolupráci s komunitou vývojářů na swift.org významná snaha o portování Swiftu na Windows. Podpora systému Windows je nyní v takové fázi, že začínající uživatelé mohou začít používat Swift k vytváření skutečných zážitků na této platformě.

Přenesení Swiftu na Windows

Přenesení Swiftu na Windows není jen o přenesení překladače, ale spíše o zajištění dostupnosti celého ekosystému na této platformě. To zahrnuje překladač, standardní knihovnu a základní knihovny (dispatch, Foundation, XCTest). Tyto knihovny jsou součástí toho, co vývojářům umožňuje snadno psát výkonné aplikace, aniž by se museli starat o mnoho detailů základního systému. V příběhu uvedení Swiftu do stavu použitelného v systému Windows je mnoho technických detailů, a pokud vás zajímají, doporučuji si přečíst mou přednášku na toto téma z vývojářské konference LLVM.

Díky těmto základním knihovnám a flexibilní interoperabilitě Swiftu s jazykem C je možné vyvíjet aplikace v systému Windows čistě ve Swiftu a zároveň využívat existující korpus knihoven na platformách Windows.

Ukázková aplikace

Tato ukázková kalkulačka je napsána výhradně v jazyce Swift, přičemž kód plynule přechází mezi kódem aplikace napsaným v jazyce Swift a systémovými knihovnami:

Tento projekt byl vytvořen pomocí:

  1. Řetězec nástrojů Swift v systému Windows

  2. Instalace aplikace Visual Studio 2019, která poskytuje další potřebné součásti v podobě CMake, Ninja a Windows SDK

Ačkoli je ukázková aplikace sestavena pomocí CMake, podpora správce balíčků Swift v systému Windows se chystá. Brzy bude možné aplikaci sestavit pomocí swift build, aniž byste potřebovali CMake nebo Ninja.

Tady můžete vidět krokování aplikací pomocí lldb:

Krosplatformní aplikace

Začátečníci, jako je Readdle, experimentují s multiplatformními aplikacemi napsanými ve Swiftu a snadno přenášejí mnoho stávajících knihoven Swiftu do systému Windows, aby podpořily jejich aplikace.

S Alexandrem ze společnosti Readdle jsem spolupracoval na práci jeho týmu a on mi poslal tuto poznámku:

V Readdle jsme začali experimentovat se Swiftem v systému Windows před více než rokem, ve druhém čtvrtletí roku 2019. V té době jsme už vydali Spark pro Android, který používá Swift ke sdílení základního kódu s iOS/macOS, a možnost rozšíření na další platformu byla opravdu lákavá.

Přestože některé funkce ještě nebyly připravené, ukázalo se, že Swift na Windows plně uspokojuje naše potřeby. Ve skutečnosti nám některé závislosti na C/C++ třetích stran způsobily větší bolesti hlavy než samotný Swift. Veškerá obchodní logika Sparku se nachází v samostatném modulu Core. Vlastně balíku modulů, ale my je označujeme jako Core. To nám umožňuje používat jakýkoli framework uživatelského rozhraní na cílové platformě: AppKit na macOS, UIKit na iOS, nativní UI Toolkit na Androidu. V podstatě jsme tedy museli portovat Spark Core na Windows. Poté, co se všechny počáteční koncepty osvědčily, bylo oživení na Windows většinou rutinní každodenní prací.

Co máme nyní:

  • 9 modulů Swift (255 739 SLOC, 2 133 zdrojových souborů)
  • 3 moduly Swift třetích stran
  • 1452 testů (poháněných XCTestem)
  • CI pro Windows, aby všechny testy byly zelené
  • Heterogenní build systém (částečně CMake, částečně vlastní skripty)

Jako dobrý příklad lze uvést, že moduly čistého Swiftu jako CryptoSwift a OAuthSwift fungovaly téměř ihned po vybalení z krabice. Provedli jsme triviální úpravu importů, vyloučili několik odkazů na AppKit/UIKit a voilà!

Další výzvou bylo rozhodnutí, jak implementovat uživatelské rozhraní. Po rozsáhlé diskusi jsme skončili u Electronu jako front-endové části budoucího Sparku pro Windows. To znamenalo, že jsme nejen potřebovali mít možnost vytvořit jádro Spark v systému Windows, ale také jej použít jako načítaný doplněk pro Node.js.

Doplněk pro Node.js v čistém Swiftu? To se zdálo být překvapivě snadné. Swift dokonale importuje hlavičky N-API. Stále potřebujeme tři řádky kódu C plus jednu malou hlavičku C pro definici vstupního bodu addonu, ale veškerá logika je ve Swiftu. Díky multiplatformní povaze Node.js jsme mohli použít macOS jako vývojovou platformu s Xcode jako IDE a pak využít svižnost CMake k sestavení stejného kódu v systému Windows.

Od prvního dne, kdy jsme začali, udělal Swift v systému Windows obrovský krok vpřed, pokud jde o podporu platforem a stabilitu. Řekl bych, že pokud uvažujete o rozšíření své stávající kódové základny aplikací na jiné platformy než macOS/iOS – rozhodně to se Swiftem můžete udělat hned, nebo alespoň brzy. Pokud udržujete malou knihovnu Swiftu – klidně můžete přidat podporu Windows už teď!“

– Alexander Smarus; Product Engineering Lead ve Spark Teamu, Readdle Inc

Více informací najdete na blogu Readdle.

Přidání podpory Windows do Swiftu je začátek cesty. Současná podpora stanovuje první milník, kdy je jazyk použitelný. Existuje ještě další, ještě širší část ekosystému, jako je lldb a správce balíčků Swift, na kterých je třeba ještě zapracovat, aby byla jejich podpora této odlišné platformy stejně kompletní.

Začínáme a zapojíme se!

Sekce Začínáme byla aktualizována o nové informace o používání Swiftu ve Windows! Pro začínající uživatele, kteří začínají a nacházejí problémy, je prosím nahlaste do Swift Bug Tracker.

Pro zájemce o pomoc při prosazování Swiftu na Windows existuje mnoho příležitostí. Jednou z věcí, které usnadňují používání Swiftu, jsou knihovny: publikování nových knihoven a balíčků pro Swift ve Windows nebo portování těch stávajících je dalším způsobem, jak se zapojit a přispět k tomu, aby práce se Swiftem byla stále větším potěšením.

Pro zájemce o práci na základních nástrojích je tu spousta práce na vylepšení debuggeru a zlepšení podpory Windows ve Správci balíčků Swift. Zveme vás, abyste se podívali na Swift Bug Tracker, kde najdete aktuální problémy, a abyste posílali záplaty do repozitářů GitHub. Na fóru Swift je také nová sekce, kde můžete diskutovat o vývoji Swiftu v systému Windows. Tam může komunita diskutovat o problémech nebo se můžete představit a dát ostatním vědět, na jakou oblast nástrojů se zaměřujete. Je to ideální příležitost, jak se do projektu zapojit a pomoci mu vyrůst v silný, živý a multiplatformní ekosystém. Nemůžeme se dočkat, až uvidíme, jaké vzrušující věci se Swiftem vytvoříte!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.