Skip to content
Tech AI Wire

Swift 6.4 apporte l'async dans defer et fait de Swift Build la valeur par défaut

Swift 6.4 autorise le code asynchrone dans les blocs defer, ajoute les sélecteurs de module et un pont WebAssembly 40 fois plus rapide, et Swift Build devient le défaut du gestionnaire de paquets.

Par Tech AI Wire Team

3 min de lecture

XLinkedIn
A closed space-black MacBook Pro on a gray studio backdrop, the Apple logo on its lid.

En chiffres

faster WebAssembly bridging through JavaScriptKit
40x
platforms where Swift Build is now the package manager default
3
the Android toolchain Swift Build now supports
NDK 30

Swift 6.4 est sorti le 15 septembre 2026, un jour après qu'Apple a livré Xcode 27 avec iOS 27. L'annonce de Swift.org ressemble moins à une fonction vedette qu'à une longue liste de choses qui étaient pénibles et ne le sont plus. Pour les développeurs au quotidien, c'est le meilleur genre de version.

Deux changements pèsent le plus. Le code asynchrone fonctionne désormais dans les blocs defer. Et Swift Build, le moteur de compilation open source, est maintenant le défaut de Swift Package Manager sur Linux, macOS et Windows.

Les changements du langage

Un bloc defer exécute le nettoyage à la sortie d'une fonction, qu'elle retourne ou lève une erreur. Jusqu'ici il ne pouvait pas contenir d'await, ce qui imposait un détour pour tout nettoyage asynchrone. La proposition SE-0493 lève cette restriction, et Swift.org indique que l'achèvement est garanti.

Le reste du travail sur le langage vise à lire et écrire moins de cérémonie.

PropositionCe qu'elle fait
SE-0521Les types some et any n'exigent plus de parenthèses en position optionnelle
SE-0491Sélecteurs de module : :: indique de quel module vient un symbole
SE-0522Un attribut @diagnose pour émettre des avertissements du compilateur depuis votre code
SE-0493await à l'intérieur de defer
SE-0504withTaskCancellationShield, pour protéger une région de l'annulation
SE-0517, SE-0527UniqueBox et UniqueArray, des conteneurs pour éléments non copiables
SE-0516Un protocole Iterable pour que for-in fonctionne sur les types non copiables

Les types non copiables gagnent aussi ce qui leur manquait : ils peuvent désormais se conformer à Equatable, Comparable et Hashable. Un type non copiable est un type que le compilateur refuse de dupliquer, utilisé quand une valeur représente une ressource unique. Pouvoir les comparer et les hacher comble un manque qui les rendait difficiles à utiliser dans du code ordinaire.

Les changements de la chaîne d'outils

Que Swift Build devienne le défaut compte au-delà des plateformes Apple. Le même moteur pilote désormais les compilations de paquets sur Linux et Windows, et la version ajoute la prise en charge d'Android via le NDK 30, la boîte à outils native actuelle d'Android.

Le volet WebAssembly a bougé aussi. Swift.org indique que le pont via JavaScriptKit, la bibliothèque qui permet à Swift d'appeler le JavaScript d'un navigateur, est 40 fois plus rapide. Les compilations de débogage sur Linux et Windows sont plus petites, de même que les bundles dSYM, les fichiers qui contiennent les symboles de débogage.

Subprocess 1.0 est désormais stable et multiplateforme. C'est la bibliothèque pour lancer d'autres processus et dialoguer avec eux, et sa stabilité signifie que le code serveur et outillage peut cesser de transporter des enveloppes privées pour cela.

Un dernier point vise les équipes de conformité plutôt que les développeurs d'applications. La proposition SE-0509 permet au gestionnaire de paquets de générer une nomenclature logicielle au format SPDX ou CycloneDX. Une nomenclature est une liste lisible par machine de chaque dépendance d'une compilation, et les acheteurs réglementés en demandent de plus en plus.

Ce que cela signifie pour les développeurs

Commencez par defer. Cherchez dans votre code le nettoyage qui tourne dans une Task lancée depuis un bloc defer. Cherchez aussi les structures do-catch qui n'existent que pour exécuter une fermeture asynchrone sur chaque chemin de sortie. Ce sont les détours que SE-0493 met à la retraite, et chacun que vous retirez est une classe de bogue en moins.

Traitez ensuite le changement de Swift Build comme une migration de système de compilation, car c'est ce que c'est. Si vous avez un paquet qui se comportait autrement sur Linux que sur macOS, recompilez-le maintenant et cherchez des avertissements jamais vus. Le moteur a changé sous vos pieds, et un basculement de défaut est précisément le moment où une hypothèse discrètement spécifique à une plateforme remonte à la surface.

Les ajouts WebAssembly et Android sont ceux à classer pour plus tard. Une amélioration de 40x du pont change ce qu'il est raisonnable de livrer dans un navigateur, mais seulement si vous étiez déjà près d'essayer. La prise en charge d'Android via le NDK 30, c'est pareil : pas une raison de commencer un portage cette semaine, mais la raison pour laquelle le portage est désormais possible.

Enfin, si quelqu'un dans votre entreprise a demandé une nomenclature, SE-0509 vous en donne une gratuitement. Générez-la une fois, vérifiez que la liste des dépendances correspond à ce que vous croyez livrer, et ajoutez-la au pipeline de publication. C'est un après-midi, et cela répond à une question qui arrive sinon sous forme de tableur.

Sources

  1. Swift 6.4 Released - Swift.org
  2. Swift 6.4: What's New in Concurrency - SwiftLee

Articles liés