En 2018, les développeurs s’attendaient à une version 5.0 du langage Swift mais ont finalement eu droit à une version 4.2 intermédiaire. Cette année, c’est la version 5.5 qui se verra dépourvue de quelques fonctionnalités que nous retrouverons dans la version 5.6.
Parmi les fonctionnalités qui auront assurément leur place dans Swift 5.6, les Type placeholders qui permettent d’utiliser _
plutôt qu’un type de donnée quand ce n’est pas indispensable. On n’utilise pas ça tous les jours, mais ça peut être pratique dans certains cas. La possibilité de tester la non-disponibilité d’un symbole donné (ex. version d'iOS) a curieusement disparu de Swift 5.5 également : l’idée était simplement d’ajouter le terme #unavailable
en plus du #available
existant. Le reste concerne Swift Package Manager avec des améliorations concernant la gestion des binaires intégrés aux paquets, une fonctionnalité qui fait elle-même partie de l’amélioration globale des outils de build.
Concernant les fonctionnalités qui devraient arriver ensuite, dans Swift 5.6 ou une autre version, il y a la rétro-compatibilité de Swift Concurrency que nous avions évoqué début septembre. Nous trouvons aussi en mode aperçu une amélioration de la gestion des positions d’éléments (RangeSet
) dans une collection : voyez les détails dans la proposition pour plus d’informations. On trouve aussi l’amélioration de @NSCopying, le fameux count(where:), des fonctions mathématiques génériques, la distinction entre #file
et #filePath
, l’amélioration des tuples qui deviennent compatibles avec Equatable
, Comparable
et Hashable
. Toujours dans ce qui est bien engagé, on retrouve la fonction isPower(of:) adaptée à BinaryInteger, des améliorations de Swift Package Manager telles qu’un registre de paquets sous forme de service web (via CDN), la possibilité d’éditer un paquet en ligne de commande et la possibilité de publier un paquet via service web. Dans le domaine de Swift Concurrency, Sendable semble également ajourné. Et l’amélioration des protocoles sera également réservée à la version 5.6.
Enfin, quelques fonctionnalités pourraient arriver dans le cycle de développement. Le protocole CodingKeyRepresentable a l’air plutôt chouette pour améliorer le décodage JSON ou autre via Codable
. La gestion bas niveau des tampons mémoire pourrait aussi être améliorée en s’inspirant de ce qu’on peut retrouver en C et C++. Dans le domaine de Swift Concurrency, la fonction main()
pourrait être rendue plus fiable. Pour finir, la gestion des pointeurs C pourrait être également complétée.
Même si la version 5.6 de Swift pourrait apporter pas mal de fonctionnalités, la version 5.5 qui devrait sortir dans quelques semaines ne s’en trouve pas dépouillée pour autant. Nous aurons encore de quoi nous occuper tout au long de ce passionnant chemin vers Swift 6.