Swift 3.0 och bortom – fakta och spekulationer om Swifts framtid

Apples programspråk Swift, lanserat så sent som i september 2014, utvecklas i snabb takt och har redan gått genom två större versioner och fyra mindre revisioner. I mars 2016 kom den senaste, Swift 2.2. Innan årets slut beräknar Apple att ha nästa stora version klar – Swift 3.0. I den här artikeln väljer vi att ha en teknisk inriktning, vill du ha mer grundläggande information rekommenderar vi den här artikeln om apputveckling.

Programspråket Swift är sedan version 2.2 öppen källkod

Sedan version 2.2 är Swift öppen källkod, vilket innebär att andra än Apple kan bidra till utvecklingen av språket. Det finns en rad förslag som olika parter vill se tillagt i Swift. Vilka som till slut lyfts in i version 3.0 återstår att se. Däremot är det redan känt att ett antal språkelement för första gången kommer att försvinna i version 3.0, och det är ett mycket ovanligt steg att ta i utvecklingen av ett programspråk. För dem som är bekanta med Swift är det dags att sluta använda de båda stegoperatorerna ++ och — samt den klassiska for-satsen med startvärde, slutvillkor och stegning. (Den enklare for-in-satsen blir däremot kvar.) Dessutom blir det förbjudet att använda variabler i flera fall där man hittills kunnat välja fritt mellan konstanter och variabler – ett tydligt exempel på hur Swift vill uppmuntra den säkrare användningen av konstanter som inte kan ändras av misstag. Personligen välkomnar jag det här steget och bedömer det här som bra strykningar, men de kommer garanterat att irritera somliga. Den nuvarande versionen av verktyget Xcode, där Swift 2.2 ingår, ger redan idag varningar för det som komma skall, och kan i flera fall hjälpa till att ändra källkoden.

Den stora nyheten i Swift 3.0

Den stora nyheten i Swift 3.0 ligger emellertid i förändringar i de bibliotek med färdig kod som följer med språket. Detta orsakas delvis av att Swift blivit öppen källkod, men det motsvarar också ändringar som Swifts upphovsmän säkert känner att de vill få på plats innan språket växer sig för stort. Det av Swift som redan idag är öppen källkod är de grundläggande verktygen för att kompilera källkod, runtime-systemet för att köra Swift-program samt Swifts eget ganska magra standardbibliotek, med bl a grundläggande datatyper och datastrukturer. Det arbete som f n pågår är att frikoppla det betydligt större Foundation-biblioteket (med stöd för t ex filhantering, nätverkshantering och flertrådad exekvering) från den Apple-specifika världen, så att även det kan ingå i det som är öppen källkod. Förmodligen kommer detta arbete att vara klart tills Swift 3.0. Samtidigt planeras en rejäl omorganisation, bl a med omdöpning av namn, som jag väntar mig kommer att leda till att Swifts eget lilla standardbibliotek och det omgjorda Foundation-biblioteket kommer att smälta ihop till ett enhetligt bibliotek, vilket vore förnuftigt. Däremot – och det är viktigt – de bibliotek som knyter samman Apples produkter med deras egna grafiska användargränssnitt och de andra applikationer som finns på Apples olika plattformar (adressbok, kartor, mediabibliotek etc) hör INTE till det som ska bli öppen källkod. (Det hade varit ett präktigt självmål för Apple att ta det steget!)

Lanseringsdatum för 3.0 ännu okänt

När under 2016 vi får se Swift 3.0 är inte känt. Jag gissar att Apple mycket gärna skulle vilja ha det klart till de produktlanseringar som brukar komma i början av hösten varje år (förutom nya apparater lär det bli nya versioner av plattformarna iOS och OS X – det ryktas t o m med ett namnbyte för OS X till macOS). Den här gången kan en sådan tidplan dock bli övermäktig, så vi kanske får vänta till slutet av året innan vi får se version 3.0 av Swift.

Än viktigare – och med gott om utrymme för mer spekulation – är den riktigt stora konsekvensen av att Swift nu blir öppen källkod. Det här är nämligen något som verkar i båda riktningarna: förutom att andra kan delta i utvecklingen av Swift, blir det också möjligt att sprida programspråket utanför Apples egna plattformar. Allt talar för att man på Apple är så stolta över sitt nya programspråk att det här faktiskt är en utveckling som man skulle välkomna, och det är lite av en helomvändning för företaget. Apple har själv redan tagit första steget genom att göra Linux till den femte plattformen för Swift, vid sidan av Apples fyra egna plattformar (OS X, iOS, watchOS och tvOS). Så Linux kan vi bocka av – men vart tar det vägen sedan?

Swift+Windows = ?

Min gissning – och en inte alltför djärv sådan – är att vi snart kommer att få se Swift på en stor och mycket välkänd plattform – Windows! På sätt och vis har det redan hänt: Företaget RemObjects har en korsutvecklingsmiljö (Elements) med tre olika programspråk, varav ett kallas Silver. Den som fingranskar Silver i sömmarna kan snabbt upptäcka att det är en lätt förtäckt version av Swift 2.1. (Detta hände redan innan Swift blev öppen källkod, och jag gissar att det på den tiden hade varit ett varumärkesintrång att kalla det Swift.) RemObjects Elements går att köra under Windows som en tilläggsmodul till Microsofts Visual Studio. Ett kort och ovetenskapligt experiment som jag gjorde på en lite svagare dator som normalt inte har några problem med Visual Studio antydde att Elements är en ganska tungrodd lösning som åtminstone den här svagare datorn hade svårt att hantera, men det går säkert att göra bättre. Om RemObjects vill fortsätta på den inslagna vägen, kan de för nästa version välja att dra nytta av den officiella öppen källkodsversionen av Swift och koncentrera sitt arbete på att optimera och förbättra sitt verktyg.

Men – i och med att Swift blivit öppen källkod, ligger ju vägen öppen även för andra företag att ta Swift till Windows. Vid sidan av många tänkbara mindre aktörer som skulle kunna ro ett sådant projekt i land, finns också en gigant: ingen mindre än Microsoft själva! Det kan låta oväntat, och jag vet inte om Microsoft verkligen väljer att ta det steget, men det skulle finnas en stark logik i att göra det. Ett problem för Microsoft de senaste åren är att Apple med sitt iOS och Google med sitt Android har delat upp världen av mobila plattformar mellan sig, medan det bara blivit småsmulor kvar för konkurrenter som Windows Phone och Blackberry. Det är en position på en starkt växande marknad som Microsoft garanterat inte är nöjd med.

Havererat samarbetsprojekt mellan Google och Microsoft

Rykten gör gällande att Microsoft hade tänkt lösa det här genom ett samarbete med Google (!) som skulle öppna vägen för Android-utvecklare att (med visst jobb) konvertera appar för Android till Windows Phone med en betydligt mindre arbetsinsats än alternativet – att driva ett separat utvecklingsprojekt för Windows Phone, vilket för de flesta utvecklare inte skulle löna sig. Idén vore extra intressant eftersom det, om det görs på rätt sätt, numera går att utveckla appar som fungerar på både Windows Phone och den betydligt viktigare plattformen Windows 10.
Emellertid lär det här projekt ha havererat och lagts ned i början av 2016 efter samarbetssvårigheter mellan Microsoft och Google.

But what about Swift?

På Microsofts utvecklarkonferens under hösten 2015 berättade Microsoft för en förvånad skara utvecklare att man driver ett annat projekt med kodnamnet Islandwood, som syftar till en liknande lösning för att konvertera appar för iOS till Windows Phone (och, i förlängningen, Windows 10). Det projektet förefaller har utvecklats betydligt bättre och befinner sig nu i en testfas. I Islandwood-projektet har Microsoft utvecklat en påbyggnadsmodul för Visual Studio med helt egenutvecklad kompilator för Apples traditionella programspråk Objective-C, plus ett biblioteksstöd som fångar många av de anrop en app för iOS gör mot Apples bibliotek och riktar om dem till passande Windows-anrop. Allt sker inte med full automatik, utan en del måste fortfarande skrivas om för hand. Microsoft har t o m testat en webbplats där man kan få sin app för iOS bedömd och få en uppskattning av hur mycket jobb det blir att konvertera den. Det här ambitiösa projektet måste ha kostat en rejäl arbetsinsats och ser ut som en högst seriös satsning som har goda möjligheter bli officiell Microsoft-programvara med tiden.

När detta presenterades för Microsofts utvecklare hade Swift funnits ute i ungefär ett år, och naturligtvis var det någon vaken utvecklare på plats som ställde frågan:

– But what about Swift?

Innan en av de lite mer mediatränade Microsoft-representanterna hann lägga locket på för fortsatt diskussion, hann en av Microsofts egna presentatörer svara:

– We’re getting there…!

Det är svårt att tolka det här på något annat sätt än att Microsoft redan bedriver experiment med att även föra Swift till Windows, vilket vore logiskt, eftersom många appar för iOS i framtiden kommer att utvecklas i Swift – inte i Objective-C. Och med ett Swift som blivit öppen källkod skulle Microsoft behöva lägga ett betydligt mindre arbete på det än det man redan investerat i att på helt egen hand utveckla en kompilator för Objective-C. Om Microsoft faktiskt väljer att driva det här till fullbordan går naturligtvis bara att gissa – ett internprojekt måste ju inte leda till en färdig produkt. Men det vore logiskt, och de har utan tvekan kunskapen och resurserna att göra det, om de vill.

Och om inte Microsoft, så verkar det vara en given tanke att någon annan aktör kommer att ta Swift till Windows förr eller senare – troligen förr. Och när det händer, skulle språket ha säkrat en rejäl spridning utanför Apples värld.

Som slutkläm finns en ännu vildare spekulation: Det finns rykten som pekar mot att Google skulle vara intresserade av att lyfta in Swift som ett programspråk för utveckling av appar för Android-plattformen, antingen som ett komplement till deras nuvarande huvudprogramspråk, Java, eller t o m som en ersättning för Java. Detta skulle INTE betyda att det skulle räcka med ett utvecklingsprojekt för att nå båda plattformarna – till det är arkitekturerna alldeles för olika – men det skulle givetvis underlätta att hålla delar av koden gemensam, och apputvecklare skulle för första gången någonsin kunna klara sig med att lära sig ett språk. Den utvecklingen skulle kanske inte vara lika välkomnad av Apple, men i och med att Apple själva satt bollen i rullning genom att göra Swift till öppen källkod, vore det svårt för dem att sätta stopp för en sådan utveckling.

En spännande framtid väntar…

Lennart Månsson håller Astrakans kurser i app-programmering och Java
Lennart Månsson håller Astrakans kurser i app-programmering och Java

Lära sig programmera i Swift?

För den som vill lära sig programmera med programspråket Swift erbjuder Astrakan Sveriges enda kurs i Swift 2.2: Apputveckling för Ios med Swift 2.2. Här hittar du alla våra utbildningar i programmering.