Swift 6.0 est sorti : nouvelles fonctionnalités pour les développeurs iOS et macOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Swift 6.0 est sorti : une révolution dans la gestion de la mémoire et la concurrence



L'équipe d'Apple a publié la version tant attendue de Swift 6.0 — le langage de programmation pour iOS, macOS, watchOS et tvOS. Cette version est la plus importante de ces dernières années, intégrant plusieurs améliorations clés qui changent radicalement l'approche de l'écriture de code sûr et performant. Passons en revue les principales nouveautés que tout développeur Swift doit connaître.



Nouveau système de gestion de la mémoire (Ownership)

Une fonctionnalité très attendue qui arrive en version stable — le modèle strict de propriété. Auparavant, Swift utilisait le comptage automatique de références (ARC), qui fonctionnait bien mais pouvait entraîner des erreurs subtiles avec les cycles. Désormais, le développeur peut indiquer explicitement qui « possède » les données, en utilisant les mots-clés consuming et borrowing. Cela permet :

  • D'éviter les copies inutiles de grandes structures de données.
  • D'écrire un code plus prévisible en termes de performances.
  • De contrôler totalement la durée de vie d'un objet sans risque de fuites.

En substance, Swift 6 emprunte les meilleures pratiques de Rust, mais les adapte à la syntaxe familière de Swift. Pour les débutants, cela peut sembler complexe, mais Apple a laissé la possibilité de travailler à l'ancienne — le nouveau mode s'active optionnellement via un indicateur du compilateur.



Mode strict de concurrence (Strict Concurrency)

Le principal ennemi du code multithread — les courses de données. Dans Swift 6, le compilateur est devenu beaucoup plus strict. Désormais, l'analyse complète de la concurrence est activée par défaut (SE-0431). Cela signifie que le compilateur générera une erreur si vous tentez de transmettre des données non-Sendable entre threads sans synchronisation. Cette nouveauté inclut :

  • La vérification automatique de toutes les fermetures pour la sécurité de transmission.
  • Une meilleure prise en charge des acteurs (actors) — ils fonctionnent désormais encore plus rapidement.
  • Un nouvel attribut @unchecked Sendable pour la migration du code existant.

Les développeurs devront revoir leur code, surtout si les projets utilisaient activement des variables globales et des singletons. Cependant, le résultat en vaut la peine : les applications deviennent plus stables et le nombre de bogues difficiles à détecter diminue considérablement.



Interopérabilité avec C++

Une autre étape importante — le travail direct avec C++ depuis Swift sans avoir à écrire de wrappers en Objective-C. Il est désormais possible d'importer des fichiers d'en-tête C++ et d'appeler directement des fonctions, des classes et même des templates. Cela est particulièrement utile pour :

  • L'intégration avec des bibliothèques C++ existantes (par exemple, des moteurs de jeu).
  • Le travail avec des API système écrites en C++.
  • La migration progressive de grands projets de C++ vers Swift.

Apple souligne que la prise en charge est encore expérimentale, mais dans les versions de test, elle montre déjà des performances élevées.



Améliorations des types et des collections

Swift 6 a également apporté quelques améliorations agréables. La prise en charge des types noncopyable est apparue (SE-0390) — il est désormais possible de créer des structures qui ne peuvent pas être copiées, seulement déplacées. C'est idéal pour travailler avec des descripteurs de fichiers ou des sockets réseau. De plus, les capacités du protocole Collection ont été étendues — il prend désormais en charge les tranches avec des pas arbitraires.



Comment se mettre à jour ?

Le nouveau Swift 6 est disponible dans Xcode 16 et dans la distribution officielle pour Linux. Apple recommande de commencer la migration en activant le mode de concurrence stricte

Recommended Libraries