Swift w przeglądarce? MiniSwift zmienia wszystko
MiniSwift: Kompilator Swifta w przeglądarce, który zmienia reguły gry
Przyznaję się bez bicia: kiedy myślę o tworzeniu aplikacji w Swifcie, pierwsze co przychodzi mi do głowy to Xcode, macOS i cały ekosystem Apple. Ale co, jeśli powiem ci, że ktoś właśnie zbudował kompletny kompilator Swifta — z lexerem, parserem, sprawdzaniem typów, optymalizatorem i wszystkim innym — który działa w jednej zakładce przeglądarki?
Tak właśnie wygląda MiniSwift i muszę przyznać, że to jedna z najbardziej imponujących rzeczy, jakie widziałem w tym roku.
Co tak naprawdę się dzieje
Zespół stojący za MiniSwift napisał około 71 000 linijek czystego kodu w C, który implementuje pełny potok kompilatora Swifta. Żadnego LLVM. Żadnego Clang. Żadnego binaryen. Tylko C, kompilujący kod Swift bezpośrednio do WebAssembly.
Zastanów się nad tym przez chwilę. Piszesz kod w Swifcie — włącznie ze SwiftUI z @State, NavigationStack, Toggle i całą deklaratywną magią interfejsu użytkownika — a ich kompilator działający w przeglądarce tokenizuje go, parsuje, sprawdza typy i zamienia na własną reprezentację pośrednią UIIR (UI Intermediate Representation). Następnie renderer canvas rysuje to na wirtualnej ramce iPhone'a.
Kiedy klikasz przycisk, @State się zmienia, a ich silnik różnicowy oparte na tożsamości odbudowuje tylko dotkniętą gałąź drzewa. Żadnego iframe. Żadnego JavaScriptowego adaptera. Żadnego natywnego środowiska wykonawczego. Po prostu Swift → kompilator C → WebAssembly → piksele na canvas.
Dlaczego to jest ważne dla developerów
Przez lata słyszeliśmy, że web jest uniwersalną platformą. Ale budowanie doświadczeń na poziomie natywnym często oznaczało porzucenie technologii webowych lub utrzymywanie osobnych baz kodu dla różnych platform. MiniSwift sugeruje inną przyszłość — taką, gdzie piszesz kod Swift raz i kompilujesz go do uruchomienia wszędzie tam, gdzie może dotrzeć WebAssembly.
Implikacje są znaczące:
Prawdziwy potencjał cross-platformowy: Ten sam kod Swift, który wysyłasz na iPhone'a, działa w zakładce przeglądarki bez żadnych modyfikacji. To nie jest transpilacja ani abstrakcja — to ten sam potok, tylko celujący w inny wynik.
Bez instalacji: To pełne środowisko IDE działające w przeglądarce. Możesz wysłać link, a ktoś w sekundach może pisać i podglądać kod SwiftUI.
Programowanie shaderów w przeglądarce: Projekt zawiera również libMetal, który kompiluje Metal Shading Language (MSL) do WebGPU Shading Language (WGSL). Edytuj shader, ruszaj myszką, obserwuj reakcję. Wszystko w C, wszystko od zera.
Osiągnięcie techniczne
Pozwól, że rozłożę na czynniki pierwsze, co tu tak naprawdę działa:
- 71 000 linijek kodu w C implementującego kompilator, bibliotekę standardową, Foundation, SwiftUI i wsparcie dla Metal
- 52 widoki SwiftUI obejmujące stacki, kształty, ścieżki, canvas i mapy
- 75 modyfikatorów pokrywających układ, styl, gesty, sheeti i alerty
- 0 zewnętrznych zależności — żadnego npm, żadnego LLVM, żadnego Clang
Sam potok kompilatora jest elegancki: .swift → Lexer → Parser → Sema → IR Gen → SSA → Optimizer → WebAssembly → .wasm
Zbudowali również funkcjonalność Foundation — arytmetykę Date/Calendar, obsługę URL, kodowanie/dekodowanie JSON, generowanie UUID, UserDefaults i wsparcie dla Unicode 17.0 — wszystko dostępne przez mostek JavaScript.
Filozofia, którą warto zauważyć
Zespół MiniSwift porusza punkt, który jest dziś coraz rzadszy w nowoczesnym tworzeniu oprogramowania: zbudowali wszystko sami. Żadnego React. Żadnych Web Components. Żadnego autorskiego runtime'u. 751 testów z wynikiem 100% i polityka zerowej regresji.
To inżynieria oprogramowania w swojej najbardziej podstawowej formie — zrozumienie problemu na tyle głęboko, by zaimplementować go od pierwszych zasad, zamiast stawiać zależności na zależnościach.
Co to oznacza dla branży
Niezależnie od tego, czy MiniSwift stanie się mainstreamowym narzędziem, czy pozostanie pokazem technicznym, demonstruje coś ważnego: granice tego, co przeglądarki mogą zrobić, wciąż się poszerzają. WebAssembly to już nie tylko portowanie starych baz kodu C++ — staje się legitymacyjnym celem kompilacji dla nowoczesnych, ekspresyjnych języków.
Dla startupów i developerów otwiera to pytania o decyzje dotyczące toolchainu. Jeśli możesz napisać Swift raz i wdrożyć wszędzie, jak to zmienia twoją architekturę? Jak wpływa na rekrutację, onboarding i dzielenie kodu między zespołami webowymi i mobilnymi?
Żyjemy w erze, gdzie możliwości przeglądarek ewoluują szybciej, niż wielu developerów zdaje sobie sprawę. Projekty takie jak MiniSwift to nie tylko ciekawostki techniczne — to podgląd tego, dokąd zmierza platforma webowa.
Pytanie nie brzmi, czy tego rodzaju technologia będzie miała znaczenie. Pytanie brzmi: czy będziesz gotowy, kiedy nadejdzie?
Co myślisz o natywnej kompilacji w przeglądarce? Czy to przyszłość cross-platform developmentu, czy fascynujący eksperyment? Podziel się swoimi przemyśleniami poniżej.