Apple a publié son langage de programmation Swift 5 avec une Application Binary Interface (ABI ou interface binaire-programme) et une compatibilité binaire qui, selon lui, permettront de développer des applications de plus petite taille. Cette version améliore également l'interopérabilité avec d'autres langages. Avec cette mise à niveau, l'ABI est stable sur les plates-formes Apple, de sorte que les bibliothèques Swift sont désormais intégrées à toutes les futures versions de MacOS, iOS, WatchOS et TVOS. Comme les développeurs n'auront plus à inclure ces bibliothèques, les apps seront désormais plus légères et plus faciles à créer. 

Parmi les autres nouveautés de Swift 5, les types appelables dynamiquement sont pris en charge pour améliorer l'interopérabilité avec des langages comme JavaScript, Python et Ruby. Par défaut, cette version 5 impose l'accès exclusif à la mémoire pour les builds de version et de débogage afin d’améliorer la sécurité du langage. Swift 5 offre une réimplémentation de String, de nouveaux types de données et un accès exclusif à la mémoire pendant l'exécution. Dans la bibliothèque standard, String a été remis en oeuvre avec l'encodage UTF-8 au lieu de l’UTF-16, ce qui peut accélérer le code. L'interopérabilité Objective-C est préservée.

Possibilité de créer des chaînes brutes

Swift 5 améliore les délimiteurs littéraux de chaînes de caractères pour prendre en charge le texte brut. Les chaînes de caractères multilignes et à ligne unique sont activées et peuvent contenir n'importe quel contenu. Dans un billet, le développeur Paul Hudson, qui anime le site Hacking with Swift, souligne l'intérêt de créer ainsi des chaînes brutes (raw strings) où les barres obliques inverses et les guillemets sont interprétés comme des symboles littéraux plutôt que comme des caractères d'échappement ou terminant une chaîne. « Cela facilite un certain nombre de cas d'utilisation, mais ce sont les expressions régulières qui en bénéficieront », estime-t-il. Par ailleurs, les propriétés Unicode pour prendre en charge les traitements de texte courants et avancés sont ajoutées au type Unicode.Scalar. Pour les vecteurs SIMD (instruction unique, données multiples), la bibliothèque expose un sous-ensemble d'opérations sur les types SIMD supportés par la plupart des processeurs de la bibliothèque.

Des améliorations de performance ont été apportées au Dictionnaire et au Set. On trouve aussi l'ajout d'un type Result, pour améliorer la gestion des erreurs. Le gestionnaire de paquets Swift Package Manager possède des paramètres de construction spécifiques à la cible, la mise en miroir des dépendances, des cibles de déploiement personnalisées et la possibilité de générer des données de couverture de code. Enfin, la commande swift run permet d'importer des bibliothèques dans une boucle read Eval - print (REPL) sans avoir à construire un exécutable. Les binaires Swift pour Linux sont téléchargeables sur Swift.org. Le langage fait également partie de l’IDE Apple Xcode 10.2, disponible sur Mac App Store d'Apple.