Med kun syv år på bagen kan Apples bud på et moderne sprog, Swift, indtage 15.-pladsen på indekset Tiobe, der måler sprogs popularitet.
Succesen er tæt parret med et andet sprogs fald fra tronen, nemlig Objective-C, som i mange år var Apples bud på et systemsprog til Macs og Iphones. Swift blev designet som en afløser, og projektet må sige at være lykkedes.
Swift ligner på mange punkter andre unge og moderne sprog, men har taget sit eget valg når det handler om håndtering af hukommelse. Her benyttes hverken garbage collection eller låne-tjekker som i Rust, men Automatic Reference Counting, hvor kørselsmiljøet holder øje med, hvor mange referencer, der er til et sted i lagret.
Når der ikke er flere referencer, kan hukommelsen frigives. Det er smart, men der er en ulempe: Hvis to objekter i en datastruktur peger på hinanden, frigives hukommelsen ikke. For at undgå hukommelseslækager findes der to slags referencer: almindelige og ‘svage’. De svage referencer tæller ikke med, og på denne måde kan en linked list, hvor den ene retning i strukturen udgøres af svage pointere, deallokeres et element af gangen.
Det giver ikke pauser i programudførelsen som med garbage collection, men som i C er det programmørens ansvar at undgå hukommelseslækager.
Derudover byder sproget på stærke typer med typeinferens, klasser som i de fleste objektorienterede sprog og værdityper som structs og enums. Og kan også afvikles på Linux og Windows.
Masser af parallelisering i Swift 5.5
Swift udkommer med én større udgivelse hvert halve år. Den nye Swift 5.5 er en »massiv« udgivelse, skriver udvikler Ted Kremenek fra sprogets kernehold i et blogindlæg.
Han fremhæver især nyhederne til flertrådet programmering. Det drejer sig om nye faciliteter, herunder async/await, som kendes fra Javascript og andre sprog. Hertil kommer asynkrone lister eller sequences, som det hedder i Swift.
Det har udmøntet sig i en ny protokol (som er det, der ofte kaldes interfaces i andre sprog), AsyncSequence
, der giver mulighed for at vente på hvert element i stedet for hele resultatet. Den kan benyttes med den sædvanlige for-in-syntaks.
To andre nye typer, AsyncStream
og AsyncThrowingStream
, skaber et bindeled mellem async/await og continuations, som er en programstump, der kan stoppe og startes, og returnere en værdi.
AsyncStream
implementerer den førnævnte AsyncSequence
, så dens elementer kan også gennemløbes med for-in-syntaks.
Også i samme boldgade findes ‘struktureret concurrency’, som ifølge forslaget bag giver de nødvendige værktøjer til at skære arbejdet op i mindre opgaver, der kan køre samtidigt, og give opgaver mulighed for at vente på, at de er indbyrdes færdige samt mulighed for effektivt at styre den overordnede fremgang i en opgave.
Det kan minde om future- eller promise-baserede biblioteker i andre sprog, hvor asynkron og samtidig udførsel kan sættes sammen på mange måder med stor fleksibilitet, men med den forskel at referencer til opgaverne ikke lækker ud af virkefeltet, skriver udviklerne. Det sidste forhold skulle gøre det muligt at skabe mange optimeringer i compiler og runtime, som ikke kan opnås med future-modellen.
Og der er endnu mere parallelisering i version 5.5. Det handler om actors, som er et komponent der afvikles i sin egen tråd, med en slags ind- og udbakke til meddelelser til andre komponenter. Det har været en succes i sproget Erlang og findes også i en række andre sprog.
Der er mange flere nyheder i Swift 5.5, og det kan man læse mere om i blogindlægget fra udviklerne.
Mere parallelisme i fremtiden
I fremtiden ligger version seks, og her fastholdes fokus på parallelisme, har udviklerholdet tidligere bekendtgjordt:
»Det, der kommer til at adskille Swift 6 fra Swift 5.x-udgivelserne, vil være en betydelig ændring i sprogets muligheder. Denne forandring er foreløbigt bedre understøttelse af concurrency (parallelisme) samt fremskridt imod en ny model for ejerskab af hukommelse.«

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.