Ouvrir le menu principal

MacGeneration

Recherche

Swift : des petits changements en 5.4 avant l'arrivée de Swift 6

Florent Morin

jeudi 07 janvier 2021 à 14:00 • 38

Logiciels

Suivant Swift 5.3 en septembre, Apple prépare la sortie de Swift 5.4 et même au-delà, avec Swift 6 qui pourrait être officialisé avec la WWDC. Swift 5.4 est une mise à jour mineure du langage, mais les améliorations attendues pourront bousculer le quotidien des développeurs.

Les petits changements de Swift 5.4

Apple a annoncé la transition vers Swift 5.4 le 11 novembre dernier. Cette version aura un cycle de développement spécifique, dissocié du reste de Swift et elle intégrera uniquement ses propres évolutions. Tous les projets sous-jacents, comme le gestionnaire de paquets Swift Package Manager, seront synchronisés sur cette version dans les jours qui viennent.

Si tout va bien, Swift 5.4 devrait sortir dans une première bêta en même temps que Xcode 12.4 dans les prochaines semaines. D’ici là, on peut avoir un aperçu de ce qui nous attend grâce au processus de développement open source et au suivi des évolutions du langage. Voici trois évolutions intéressantes pour les développeurs.

La proposition SE-0287 a pour but d’améliorer le chaînage des instructions, une opération très utilisée en Swift. L’idée est de l’autoriser dès l’initialisation d’un composant. Voici à quoi cela ressemblera côté code :

Initialisation d’un composant, avant et après Swift 5.4

La proposition SE-0289 est un peu plus complexe, mais elle s’appuie sur un principe utilisé abondamment par SwiftUI. Les « result builders » (qui étaient nommés jusque-là « ‌function builders ») sont des fonctions qui produisent un résultat implicite. On les utilise aujourd’hui pour générer des interfaces avec la syntaxe déclarative de SwiftUI, cela pourra aussi être utilisé pour générer du HTML sur les serveurs, voire des interfaces en UIKit ou AppKit.

VStack, Image et Text dans SwiftUI

L’évolution proposée SE-0284 ajoute de la souplesse pour gérer les paramètres d’une fonction. Aujourd’hui, si on a plusieurs paramètres à passer dans une fonction, on peut le faire sous la forme d’un tableau ou d’un nombre variable de paramètres. Mais cette dernière possibilité est si contraignante qu’elle est rarement utilisée. Avec cette proposition, elle devrait devenir plus pratique à utiliser.

Les paramètres d’une fonction, sous la forme d’un tableau puis en paramètres variables avec Swift 5.4

En route vers Swift 6

Swift 6 a été annoncé il y a presque un an. Plusieurs fonctions ont été déployées progressivement, comme la prise en charge de nouvelles plateformes en dehors de celles d’Apple qui a commencé avec Swift 5.3 et Windows. Avec Swift 6, d’autres plateformes pourraient rejoindre la course. On parle d’une version Web Assembly, une adaptée aux Raspberry Pi, une pour OpenBSD et pourquoi pas une prise en charge officielle d’Android (le travail a commencé il y a quelques années).

De nouvelles fonctionnalités ont aussi été mises en chantier récemment : à six mois de la WWDC 2021, cela tombe bien. La bibliothèque standard de Swift devrait évoluer et on peut s’attendre à quelques améliorations du confort des développeurs que vous pourrez découvrir au travers de l’outil de suivi des évolutions de Swift. Mais s’il y a bien un changement qui était particulièrement attendu, c’est l’intégration de async/await pour simplifier la gestion des tâches parallèles.

C’est un élément courant pour un langage de développement, mais qui n’était pas disponible en Swift jusque-là. Son ajout permettra de simplifier les opérations qui peuvent être menées en parallèle, très fréquentes dans un programme. Pour illustrer cette fonctionnalité, nous allons partir de l’exemple fourni par Swift avec le téléchargement et la manipulation d’images, deux tâches qui sont des opérations asynchrones par excellence. Voici ce que cela donne aujourd’hui :

Des blocs de code, imbriqués dans d’autres blocs de code…

Cette complexité entraînait un risque d’erreur permanent, surtout quand le programme grossit. Grâce à l’ajout de cette nouvelle fonction, la syntaxe pourra être beaucoup plus simple et claire :

La syntaxe de async et await.

Autre avantage, c’est compatible avec Objective-C, ce qui permet d’intégrer plus simplement le code à des projets existants. Associée à cette gestion du code asynchrone, l’exécution de tâches en parallèle avec une autre proposition pour les organiser. Une syntaxe adaptée sera ajoutée à Swift pour répondre à ces nouveaux besoins.

On peut noter l’arrivée des actors, un procédé également présent dans d’autres langages qui permet d’éviter que deux tâches parallèles tentent de modifier au même moment une même donnée. Si c’est le cas, l’app risque de planter ou au minimum de provoquer un comportement inattendu et ces bugs sont particulièrement difficiles à corriger, car ces situations sont complexes à reproduire.

Apple devrait adapter ses propres frameworks à ces évolutions de Swift. L’optimisation des tâches parallèles est un point important pour les performances et on peut imaginer que le constructeur fera tout pour que les puces Apple Silicon en profitent. On en saura sans doute plus à la WWDC, ce qui laisse six mois pour se préparer aux futures évolutions du langage.

Rejoignez le Club iGen

Soutenez le travail d'une rédaction indépendante.

Rejoignez la plus grande communauté Apple francophone !

S'abonner

Test du Twelve South AirFly Pro 2 : pour s’enfiler en l’air

05/07/2025 à 11:00

• 7


Sortie de veille : un MacBook avec une puce d’iPhone, attrape-nigaud ou coup de génie ?

05/07/2025 à 08:00

• 24


Un dirigeant de Microsoft conseille aux plus de 9 000 employés licenciés de se faire aider par l’IA

04/07/2025 à 22:00

• 181


Apple fait ses emplettes dans les start-up, entre avatars virtuels et monitoring de l’IA

04/07/2025 à 21:00

• 1


Un premier pas vers le jailbreak de la Touch Bar : le système démarre en mode verbose

04/07/2025 à 17:45

• 22


MacBook Air M2 à 750 € ou Mac Studio M2 Max à 1 300 € ? Entre portable et fixe, il faut choisir

04/07/2025 à 15:22

• 27


Un (faux) traceur GPS sur les cartons des MacBook Air, pour dissuader les livreurs de les voler

04/07/2025 à 13:02

• 82


Un site web pour décoder les pages sauvées en .webarchive par Safari

04/07/2025 à 11:00

• 5


Ulanzi présente une station d'accueil au look de petit Mac Pro

04/07/2025 à 10:15

• 17


Promo : une batterie chameau de 27650 mAh capable de recharger Mac et iPhone à 114 € (-56 €)

04/07/2025 à 09:18

• 13


Développeurs : Technotes ajoute des notes de la communauté sur la documentation d’Apple

04/07/2025 à 08:33

• 5


L’iPhone redécolle en Chine, le Mac cartonne aux États-Unis : Apple souffle un peu avant les trimestriels le 31

04/07/2025 à 07:52

• 41


Apple a creusé l’idée de proposer des services de cloud computing aux développeurs pour concurrencer AWS

03/07/2025 à 21:45

• 47


Apple sort des fonds d’écran aux couleurs de son nouvel Apple Store à Osaka

03/07/2025 à 21:00

• 10


Test du ViewSonic ColorPro VP2788-5K : 27″, 5K et DCI-P3 pour le prix d’un demi-Studio Display

03/07/2025 à 20:30

• 10


Guerre commerciale : les produits fabriqués au Vietnam voient leur taxe multipliée par cinq

03/07/2025 à 20:20

• 31