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.
3 min de lecture

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.
| Proposition | Ce qu'elle fait |
|---|---|
| SE-0521 | Les types some et any n'exigent plus de parenthèses en position optionnelle |
| SE-0491 | Sélecteurs de module : :: indique de quel module vient un symbole |
| SE-0522 | Un attribut @diagnose pour émettre des avertissements du compilateur depuis votre code |
| SE-0493 | await à l'intérieur de defer |
| SE-0504 | withTaskCancellationShield, pour protéger une région de l'annulation |
| SE-0517, SE-0527 | UniqueBox et UniqueArray, des conteneurs pour éléments non copiables |
| SE-0516 | Un 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
- Swift 6.4 Released - Swift.org
- Swift 6.4: What's New in Concurrency - SwiftLee
Articles liés

iOS 27 arrive avec Xcode 27 et sans iPhone abandonné
Apple a publié six mises à jour de plateformes le 14 septembre 2026, annonce des lancements d'applications jusqu'à 30% plus rapides, et l'iPhone 11 reste pris en charge.

Homebrew 7.0.0 cesse de construire des bottles pour les Mac Intel
Homebrew 7.0.0 rétrograde les Mac Intel au Tier 3. brew install y compile désormais depuis les sources, et la prise en charge s'arrête en septembre 2027 ou après.

Asahi Linux prend désormais officiellement en charge les Mac M3
Asahi Linux a intégré la prise en charge des M3, M3 Pro et M3 Max à son installateur. Le Wi-Fi, l'USB 3 et le décodage AV1 fonctionnent. La veille, le HDMI et la 3D rapide, non.