Swift/WinRT: Gjør det lettere å kode Windows-apper i Swift

Arc til Windows kodes i Swift. Nå gir de ut et åpent kildekode-prosjekt så du kan gjøre det samme.

Eksempelkode for en Windows-app skrevet i Swift. 📸: Kurt Lekanger
Eksempelkode for en Windows-app skrevet i Swift. 📸: Kurt Lekanger Vis mer

Den Chromium-baserte nettleseren Arc fikk mye oppmerksomhet da den kom til macOS i fjor høst, etter å ha vært i lukket beta lenge.

Windows-versjonen har imidlertid latt vente på seg, ettersom selskapet bak – The Browser Company – ønsker å bygge nettleseren på en måte som ikke har vært gjort før:

De vil bygge alt sammen i Swift – med det nyeste UI-rammeverket til Windows. Det som er spennende for andre utviklere, er at løsningen som gjør dette mulig for en tid tilbake ble gjort til åpen kildekode.

Prosjektet kalles Swift/WinRT og skal gjøre livet enklere for alle som vil å bruke Swift til å bygge moderne Windows-applikasjoner basert på Microsofts WinUI-rammeverk.

Native Windows-apper kodet i Swift

Selv om mange forbinder Swift med Apple, er språket åpen kildekode og tilgjengelig for både macOS, Windows og Linux – og kan til og med brukes på backend. Apple har imidlertid bygget en masse proprietært rundt Swift, som UI-rammeverket SwiftUI som er det utviklere i stor grad bruker når de skal bygge apper for macOS eller iOS.

Et tilsvarende UI-rammeverk har manglet for Swift på Windows-plattformen. For å bøte på dette bygger Swift/WinRT en "bro" mellom Swift og Microsofts egne WinRT-API-er (Windows RunTime).

Swift/WinRT er ifølge The Browser Company basert på Microsofts cppwinrt-prosjekt. Kort fortalt betyr det at du skal kunne lage fullverdige "native" Windows-applikasjoner basert på WinUI 3. WinUI 3 er rammeverket som anbefales av Microsoft for apper som skal bruke Microsofts nyeste Fluent 2 Design System, og er en del av Windows App SDK.

På spørsmål om hvorfor, oppgir en av hovedbidragsyterne til prosjektet, Steve Kirbach, at de ønsker å få til kodedeling mellom macOS og Windows i et minnesikkert språk, i tillegg til at deres eksisterende utviklere kan Swift best.

"C++ er ikke bra nok"

Så hvorfor ikke bare bruke en kryssplattformløsning som React Native eller Flutter?

– React Native, Flutter, Xamarin regnes ikke for å være "kult", og har utfordringer med hensyn til ytelse, kompleksitet, og så videre, hevdet Hursh Agrawal, sjef for The Browser Company i en presentasjon i mai i fjor – før de opensourcet Swift/WinRT.

Ifølge Hursh er det veldig få alternativer for å lage kryssplattform-applikasjoner.

– Apple eller Adobe, eller vi, ville aldri brukt dem, sa Hursh.

«Du kan ha C++-lignende ytelse uten noen av sikkerhetsproblemene eller problemene med manuell minnehåndtering.»

Ifølge Hursh blir alle "seriøse" kryssplattformapplikasjoner, som for eksempel nettlesere, skrevet i C++. Det har vært det eneste alternativet for applikasjoner som skal ha høy ytelse, mener han. Problemet ifølge Hursh er at C++ ikke er"ergonomisk", det har manuell minnehåndtering, og så videre.

– Swift har automatisk minnehåndtering uten "garbage collection". Det betyr at du kan ha C++-lignende ytelse uten noen av sikkerhetsproblemene eller problemene med manuell minnehåndtering, sa Hursh.

Han anslår at det vil gå 2-3 ganger raskere å skrive en Windows-applikasjon i Swift sammenlignet med C++, og for the Browser Company vil det også være enklere å kode i enn C#.

Du finner Swift/WinRT-repoet her – og det er også laget eksempelapplikasjoner som viser hvordan du går frem.