Apple a livré Swift 5.5, la dernière version de son langage maison destiné à remplacer les langages basés sur C. La mise à jour apporte notamment des capacités centrées sur la programmation concurrente et la collection de paquets. Qualifiée de « majeure » dans l’avis de publication du 20 septembre, cette version offre l'interopérabilité de la concurrence avec Objective-C, prédécesseur de Swift, une proposition qui établit un pont entre les fonctionnalités de concurrence de Swift et l'expression conventionnelle des fonctions asynchrones en Objective-C. L'objectif est de permettre l'utilisation de fonctions asynchrones dans le cadre de l'exécution de tâches et de rendre les API Objective-C asynchrones immédiatement utilisables avec le modèle de programmation concurrente de Swift. Comme le fait remarquer le projet, même si le développement moderne de Swift implique beaucoup de programmation asynchrone, l’usage des API reste difficile.
Une capacité async/await dans Swift 5.5 définit la sémantique des fonctions asynchrones. L’objectif de cette proposition est de rendre l'ensemble du processus plus naturel et moins sujet aux erreurs. Swift async/await peut également servir à écrire et à utiliser des fonctions qui renvoient de nombreuses valeurs dans le temps. Ce travail a été réalisé via la proposition Async/Await Sequences. Selon la description présente dans les notes de version, une autre nouvelle fonctionnalité dite de concurrence structurée, permet l'exécution simultanée de code asynchrone avec un modèle ergonomique, prévisible et une mise en œuvre efficace.
La gestion de paquets améliorée
Parmi les autres nouvelles fonctionnalités de Swift 5.5, on peut citer:
- Pour le gestionnaire de paquets Swift Package Manager (SwiftPM), le concept Package Collections est introduit dans l'écosystème des paquets. Les collections sont créées sous forme de documents JSON statiques et contiennent une liste de paquets avec des métadonnées supplémentaires par paquet. Elles sont publiées sur un serveur web ou une infrastructure de type réseau de diffusion de contenu (Content delivery network, CDN). SwiftPM dispose d'une autre interface de ligne de commande pour ajouter et supprimer des collections et les indexer en arrière-plan, ce qui permettra aux utilisateurs de découvrir plus facilement les paquets dans les collections.
- Swift 5.5 introduit les acteurs. Un acteur sert de type de référence (actor) qui protège l'accès à son état mutable.
- Les Property wrappers ou wrappers de propriétés, introduits dans Swift 5.1 pour éliminer les modèles d'accès courants aux propriétés, sont étendus aux paramètres de fonctions et de fermetures. Jusque-là, cette capacité était limitée aux variables locales et aux propriétés de type.
Swift 5.5 est accessible sur le site swift.org.