Projekt Swift wprowadza nowe obrazy toolchain Swift do pobrania dla Windows! Obrazy te zawierają komponenty programistyczne potrzebne do budowania i uruchamiania kodu Swift w systemie Windows.
Od ponad roku trwają intensywne prace nad przeniesieniem Swifta do systemu Windows we współpracy ze społecznością programistów na swift.org. Wsparcie Windows jest teraz w punkcie, w którym pierwsi użytkownicy mogą zacząć używać Swift do budowania prawdziwych doświadczeń na tej platformie.
Przeniesienie Swift do Windows
Przeniesienie Swift do Windows nie polega na zwykłym przeniesieniu kompilatora, ale raczej na zapewnieniu, że pełny ekosystem jest dostępny na tej platformie. Obejmuje to kompilator, bibliotekę standardową i podstawowe biblioteki (dispatch, Foundation, XCTest). Biblioteki te są częścią tego, co pozwala programistom pisać potężne aplikacje z łatwością i bez konieczności martwienia się o wiele szczegółów systemu bazowego. Istnieje wiele technicznych szczegółów w historii doprowadzenia Swifta do stanu używalności na Windowsie, a jeśli jesteś nimi zainteresowany, polecam sprawdzić mój wykład na ten temat z LLVM Developer Conference.
Dzięki tym podstawowym bibliotekom i elastycznej interoperacyjności Swifta z C, możliwe jest tworzenie aplikacji na Windowsie wyłącznie w Swifcie, korzystając jednocześnie z istniejącego korpusu bibliotek na platformach Windows.
Przykładowa aplikacja
Ten demonstracyjny kalkulator jest napisany w całości w Swift, z kodem płynnie przechodzącym między kodem aplikacji napisanym w Swift a bibliotekami systemowymi:
Ten projekt został zbudowany przy użyciu:
-
Sieć narzędziowa Swift na Windows
-
Instalacja Visual Studio 2019, która dostarcza inne potrzebne kawałki w postaci CMake, Ninja i Windows SDK
Aczkolwiek aplikacja demonstracyjna jest zbudowana przy użyciu CMake, wsparcie Swift Package Manager na Windows zbliża się wielkimi krokami. Wkrótce możliwe będzie zbudowanie aplikacji przy użyciu swift build
bez konieczności korzystania z CMake lub Ninja.
Tutaj można zobaczyć przechodzenie przez aplikację przy użyciu lldb
:
Aplikacje międzyplatformowe
Pierwsi użytkownicy, tacy jak Readdle, eksperymentują z aplikacjami międzyplatformowymi napisanymi w Swift, z łatwością przenosząc wiele istniejących bibliotek Swift do systemu Windows w celu obsługi swoich aplikacji.
Pracowałem z Alexandrem w Readdle na temat pracy jego zespołu, a on wysłał mi tę notatkę:
My w Readdle zaczęliśmy eksperymentować ze Swiftem na Windowsie ponad rok temu, w drugim kwartale 2019 roku. W tym czasie wydaliśmy już Spark dla Androida, który używa Swift do współdzielenia kodu rdzeniowego z iOS / MacOS, a możliwość rozszerzenia na jeszcze jedną platformę była naprawdę kusząca.
Pomimo tego, że niektóre funkcje są jeszcze niegotowe, Swift na Windowsie okazał się w pełni zaspokajać nasze potrzeby. W rzeczywistości, niektóre zależności od C/C++ innych firm przysporzyły nam więcej bólu głowy niż sam Swift. Cała logika biznesowa Sparka znajduje się w osobnym module Core. A właściwie pakiecie modułów, ale my nazywamy je Core. Dzięki temu możemy używać dowolnego frameworka UI na platformie docelowej: AppKit na macOS, UIKit na iOS, natywny UI Toolkit na Androidzie. Tak więc, w zasadzie, musieliśmy przeportować Spark Core na Windowsa. Po tym, jak wszystkie wstępne koncepcje zostały sprawdzone, była to głównie rutynowa codzienna praca, aby ożywić go na Windowsie.
To, co mamy teraz:
- 9 modułów Swift (255 739 SLOC, 2 133 pliki źródłowe)
- 3 moduły Swift firm trzecich
- 1452 testy (zasilane przez XCTest)
- Windows-based CI to keep all tests green
- Heterogeniczny system budowania (częściowo CMake, częściowo własne skrypty)
Jako dobry przykład, czyste moduły Swift takie jak CryptoSwift i OAuthSwift prawie działały zaraz po wyjęciu z pudełka. Zrobiliśmy trywialne dostosowanie importu, wykluczyliśmy kilka referencji AppKit/UIKit i voila!
Kolejnym wyzwaniem była decyzja, jak zaimplementować interfejs użytkownika. Po długich dyskusjach zdecydowaliśmy się na Electron jako część front-end przyszłego Sparka dla Windows. Oznaczało to, że nie tylko musieliśmy być w stanie zbudować Spark Core na Windowsie, ale także użyć go jako ładowalnego dodatku do Node.js.
Dodatek do Node.js w czystym Swifcie? Okazało się, że jest to zaskakująco łatwe. Swift doskonale importuje nagłówki N-API. Nadal potrzebujemy trzech linii kodu C plus jeden mały nagłówek C do zdefiniowania punktu wejścia addonu, ale cała logika jest w Swifcie. Ze względu na crossplatformową naturę Node.js, byliśmy w stanie użyć macOS jako platformy programistycznej z Xcode jako IDE, a następnie użyć zwinności CMake do zbudowania tego samego kodu na Windows.
Od pierwszego dnia, kiedy zaczęliśmy, Swift na Windowsie zrobił ogromny krok naprzód pod względem wsparcia platformy i stabilności. Powiedziałbym, że jeśli myślisz o rozszerzeniu istniejącej bazy kodowej aplikacji na platformy inne niż macOS/iOS – absolutnie możesz to zrobić ze Swiftem teraz, a przynajmniej wkrótce. Jeśli utrzymujesz małą bibliotekę Swift – z łatwością możesz dodać obsługę Windows już teraz!
– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
Więcej szczegółów znajdziesz na blogu Readdle.
Dodanie obsługi Windows do Swift to początek podróży. Obecne wsparcie wyznacza pierwszy kamień milowy, na którym język jest użyteczny. Istnieje jeszcze inna, jeszcze szersza część ekosystemu, jak lldb i Swift Package Manager, które wciąż wymagają więcej pracy, aby być tak kompletne w ich wsparciu dla tej innej platformy.
Zaczynamy i angażujemy się!
Sekcja Zaczynamy została zaktualizowana o nowe informacje na temat używania Swift na Windows! Dla początkujących użytkowników, którzy zaczynają i znajdują problemy, prosimy o zgłaszanie ich do Swift Bug Tracker.
Istnieje wiele możliwości dla osób zainteresowanych pomocą w rozwijaniu Swift na Windows. Jedną z rzeczy, które sprawiają, że Swift jest łatwy w użyciu, są biblioteki: publikowanie nowych bibliotek i pakietów dla Swift na Windows lub przenoszenie istniejących to kolejny sposób na zaangażowanie się i pomoc w uczynieniu pracy ze Swiftem jeszcze większą przyjemnością.
Dla tych, którzy są zainteresowani pracą nad podstawowymi narzędziami, jest wiele do zrobienia, aby ulepszyć debugger i poprawić obsługę Windows w menedżerze pakietów Swift. Zapraszamy do sprawdzenia Swift Bug Tracker dla bieżących problemów i do wysyłania łatek do repozytoriów GitHub. Na forum Swift pojawiła się również nowa sekcja poświęcona rozwojowi Swifta w systemie Windows. Tam społeczność może dyskutować o problemach, a Ty możesz się przedstawić i dać innym znać, na jakim obszarze narzędzi się skupiasz. Jest to doskonała okazja, aby zaangażować się w projekt i pomóc mu urosnąć w silny, tętniący życiem, międzyplatformowy ekosystem. Nie możemy się doczekać, aby zobaczyć, jakie ekscytujące rzeczy zbudujesz za pomocą Swifta!