De ABI vastleggen in Swift 5 betekent dat toekomstige compilerversies binary's kunnen maken die aan de stabiele ABI voldoen. "Als een ABI stabiel is, blijft hij aanwezig in de levensloop van het platform met zijn steeds groeiende dependency's", legt Apple in de documentatie uit.

Onder de motorkap veranderen

Daarmee worden extern zichtbare publieke interfaces en symbolen stabiel, maar interne conventies, symbolen en layouts kunnen worden gewijzigd zonder de ABI te breken. Compilers kunnen bijvoorbeeld methodes voor interne functie-calls veranderen, zolang de publieke interfaces maar intact blijven.

Dit is een serieuze aangelegenheid en het vastleggen van de ABI heeft langetermijngevolgen en mogelijk beperkingen in hoe de taal nog verder kan evolueren. Maar het voordeel is dat besturingssystemen een standaardlibrary en runtime van Swift hebben die compatibel zijn met zowel nieuwere als oudere versies van Swift. De applicaties hoeven daarom geen eigen kopie van deze library's te distribueren.

Andere doelen van Swift 4 die randvoorwaarden zijn om de ABI vast te leggen in Swift 5 zijn onder meer:

  • Generics voor de standaardlibrary, waarmee beperkingen van associated types worden opgeheven
  • API-resilience, waardoor de publieke API's van een library kunnen blijven evolueren
  • Een geheugenbeheermodel dat al deels wordt ge├»ntroduceerd in Swift 4 en delen die te maken hebben met de ABI toevoegen aan het model in versie 5.

Maar er is meer dat in Swift 5 opduikt, zoals:

  • String ergonomics, waarmee strings soepeler worden verwerkt. Denk aan nieuwe tekstverwerkende capaciteiten en op taalniveau ondersteunde reguliere expressies.
  • Het begin van een nieuwe concurrency-model. Dat model is geen einddoel van Swift 5. Het gaat er vooral om taaleigenschappen te ontwerpen om asynchrone API's te kunnen bouwen en gebruiken, en die om kunnen gaan met de problemen die worden veroorzaakt door code die veel callbacks uitvoert.
  • Kleine toevoegingen van de standaardlibrary.
  • Verbeteringen aan de Foundation-API zodat SDK Cocoa naadloos kan samenwerken met Swift. Cocoa was oorspronkelijk ontworpen voor Objective-C, wat Apple al drie jaar aan het uitfaseren is.
  • Uitbreidingen van de syntaxis.