Diepe duik in de voortgang van Swift 4: Stabiliteit grootste uitdaging

Raymon op 06 februari 2017 6 reacties Laatste door Marco Tenback

Swift is voor Apple de programmeertaal van de toekomst. Het bedrijf hoopt op termijn Objective-C te vervangen door deze nieuwkomer die door Apple zelf gemaakt is, maar tegenwoordig als open source-taal door ontwikkelaars samen wordt vormgegeven.

Met het vertrek van geestelijk vader Chris Lattner (hij ging naar Tesla) achter de rug, kijken we hoe Swift ervoor staat. Versie 4 wordt tijdens WWDC verwacht en heeft een belangrijke uitdaging. Een update.

Source stabiliteit: op schema

Om Swift net zo robuust als Objective-C te maken, moet Apple er allereerst voor zorgen dat ontwikkelaars hun geschreven code kunnen blijven gebruiken en dat de syntax en namen van verschillende essentiële functies niet aan verandering onderhevig zijn.

In theorie eenvoudig, maar in de praktijk is het een andere zaak voor zo’n jonge taal als Swift. Apple heeft bewust niet voor source stability gekozen, want toen ontwikkelaars in 2015 voor het eerst met de nieuwe taal aan de slag gingen, werden veel problemen ontdekt.

swift-code

Voorbeeld: Een Flappy Bird-remake in Swift.

De eerste Swift-updates hebben de taal en syntax sterk veranderd. Sommige functies zijn volledig geschrapt omdat ze niet geschikt waren voor dagelijks gebruik, anderen zijn juist toegevoegd. Ontwikkelaars die gebruik hebben gemaakt van Swift 1 wisten dat hun werk niet compatibel zou zijn met Swift 2 en bij Swift 3 is dit hetzelfde. Ontwikkelomgeving Xcode krijgt bij iedere grote update algoritmen die automatisch de broncode kunnen omzetten. Ontwikkelaars winnen zo tijd, maar handmatig werk is nog noodzakelijk.

Het doel is om in Swift 4 source stability te bereiken, maar tot die tijd heeft Apple in Swift een nieuw attribuut ingevoerd. Ontwikkelaars kunnen oude code blijven gebruiken door een @available(…) attribuut toe te voegen. De compiler die verantwoordelijk is voor het transformeren van de code tot een uitvoerbare app, kan zo terugschakelen naar een oudere versie om deze code te behandelen. Door deze toevoeging kan Apple in gestaag tempo vooruit gaan zonder de broncode van ontwikkelaars compleet onbruikbaar te maken.

swift convert

Xcode helpt bij het converteren van broncode.

ABI-stabiliteit: belangrijk en complex vraagstuk

Stabiliteit van de broncode is vrijwel zeker in Swift 4. Dit is echter slechts de eerste stap die moet moeten zorgen ABI-stabiliteit, wat nog moeilijker is. Dit stond gepland voor Swift 3, maar wordt vertraagd.

Om te beginnen, is het nuttig om uit te leggen wat een ABI (Application Binary Interface) is. Dit is een low-level interface die tussen de app en het besturingssysteem zit. De ABI vormt de laag tussen de code die de ontwikkelaar heeft geschreven en de machinetaal die de hardware op het niveau van individuele bits aanstuurt.

In macOS en iOS zit een ABI die werkt met Objective-C. De ABI die voor Swift noodzakelijk is, is nog niet geïntegreerd in Apple-systemen. Iedere app die met Swift gemaakt is, moet dus vergezeld gaan van een eigen ABI die voor de verbinding met de processor zorgt. Concreet wil dit zeggen dat Swift-apps een reeks bestanden bevatten, zogenaamde dynamische bibliotheken (extensie .dylib) die dienen als ABI. Dit geldt zowel voor iOS als macOS en zal noodzakelijk zijn zolang ABI-stabiliteit niet bereikt is.

ABI

Klik/tap voor groter.

Dit heeft twee grote nadelen. Het eerste, relatief kleine nadeel, is Swift-applicaties groter zullen zijn. Een Swift-applicatie zal gemiddeld 10 tot 20 MB meer ruimte innemen dan een vergelijkbare applicatie in Objective-C. Een groter nadeel is dat de in de app geïntegreerde API niet kan profiteren van eventuele wijzigingen in iOS en macOS. Als Apple de ABI voor Objective-C in iOS verbeterd en zorgt voor minder geheugengebruik, zullen alle Objective-C apps hiervan profiteren. Swift-apps moeten echter eerst door de ontwikkelaar worden bijgewerkt.

ABI-stabiliteit is een belangrijke doelstelling, maar het gaat langer duren dan aanvankelijk gedacht. Apple moet ervoor zorgen dat de ABI compleet en volwassen genoeg is voordat deze in iOS en macOS kan worden geïntegreerd. De ABI is verantwoordelijk voor het geheugenbeheer en communicatie met de hardware zoals de camera en grafische chip.

Voormalig Swift-manager Chris Lattner legde in een interview uit dat ABI-stabiliteit met Swift 4 niet gaat lukken. Hij voegt eraan toe dat dit niet per se de belangrijkste taak op de korte termijn voor is Swift. Het verbeteren van de compiler en met name de betrouwbaarheid en snelheid bij grote projecten, hebben voorrang. Voor ontwikkelaars van frameworks (componenten die gebruikt kunnen worden voor het maken van applicaties) is ABI-stabiliteit wel erg belangrijk en ook voor gebruik van Swift binnen Apple is het van belang.

swift-16x9

Craig Federighi onthulde Swift tijdens WWDC 2014.

Met Swift 4 lost Apple één van de twee grote stabiliteitsvraagstukken op, maar het ontbreken ABI-stabiliteit maakt van Swift nu nog geen volledige vervanger van Objective-C. Tijdens WWDC 2017 wordt een publieke update over Swift 4 verwacht.

Raymon is vaste redacteur bij OMT, maar noemt zich liever redactieninja. Ook te volgen op Twitter en wekelijks te horen in de TechSnacks Podcast. Lees meer artikelen van Raymon.

En nu?

6 reacties

Profielfoto

mvmaastricht op 06 februari 2017

Goeie uitleg! Thanks!

Profielfoto

Motoom op 07 februari 2017

Als Apple een bredere acceptatie van Swift in de Open Source community wil, kan het geen kwaad om hun Swift documentatie ook inzichtelijk te maken op Linux systemen, bijvoorbeeld door het als een PDF te publiceren. Want nu kun je alleen in iBooks of op een iPad het Swift 3.0.1 boek lezen ivm. de encryptie.

Profielfoto

e.abrahamse op 07 februari 2017

Hartelijk bedankt voor dit artikel over Swift 4.

Voor Swift-programmeurs, zoals ik, zijn dit spannende tijden. In de aanloop naar de WWDC wordt door ons reikhalzend uitgekeken naar veranderingen en verbeteringen in Swift en Xcode. In korte tijd heeft Swift al een grote ontwikkeling doorgemaakt. Swift 4 zal deze groei verder doorzetten om juist die coole, goedwerkende apps te bouwen die leden van OMT graag gebruiken.

Swift programmeurs zoeken hun uitdaging onder de motorkap van apps. In hun zeer fascinerende wereld van programmacode en interface-ontwerp brengen zij leven in apps die door gebruikers met plezier worden gebruikt. Nieuwsgierig?

Beginners en (enigszins) ervaren Swift programmeurs vinden op http://www.swiftdev.nl Nederlandstalige, inhoudelijke ondersteuning. Ben jij geïnteresseerd in het maken van Swift Playgrounds of het programmeren in Swift voor iOS of MacOS, neem gerust een kijkje en wie weet wat er voor jou van komt…

Profielfoto

bitsflew op 07 februari 2017

@Motoom

De meest recente uitgave (3.1) van “The Swift Programming Language” kun hier (swift.org) downloaden.

Profielfoto

Motoom op 07 februari 2017

Inderdaad, bedankt voor de link! Nu nog een kant-en-klare PDF:lol:

Profielfoto

Marco Tenback 9 maanden geleden

Opmerkelijk is is dat Apple intern nog weinig projecten/apps heeft welke volledig in swift geschreven zijn. Verwacht dus dat Objective-C de komende jaren nog echt niet zal verdwijnen.

 


Je kunt alleen reageren met een gratis OMT account.
Heb je geen OMT account? Registreer je dan nu gratis!

Inloggen

 

of Wachtwoord resetten?