Swift en 2025 : quoi de neuf ? L'évolution du langage pour iOS et macOS
L'année 2025 a marqué une étape importante pour le langage Swift. Depuis son apparition en 2014, Swift est passé d'un langage expérimental à un outil mature et puissant pour le développement dans l'écosystème Apple. En 2025, nous n'assistons pas seulement à des améliorations ponctuelles, mais à des changements fondamentaux qui rendent Swift plus rapide, plus sûr et plus pratique. Dans cet article, nous analyserons les principales innovations de Swift 6.0 et des dernières mises à jour que tout développeur iOS/macOS doit connaître.
1. Swift 6.0 : Prise en charge complète du modèle de concurrence stricte
L'événement le plus marquant de 2025 est la sortie de Swift 6.0. La fonctionnalité phare de cette version est l'activation par défaut de la vérification stricte de la concurrence (Strict Concurrency Checking). Cela signifie que le compilateur garantit désormais l'absence de courses aux données (data races) dès la phase de compilation, et pas seulement à l'exécution.
Auparavant, les développeurs devaient gérer manuellement les threads et utiliser @MainActor ou DispatchQueue. Désormais, le compilateur analyse lui-même quelles données peuvent être modifiées depuis différents threads et génère une erreur si le code n'est pas sûr.
Exemple : ancien modèle (peut provoquer une course aux données)
class Counter { var value = 0 func increment() { value += 1 // Opération dangereuse sans synchronisation }}
let counter = Counter()DispatchQueue.concurrentPerform(iterations: 100) { _ in counter.increment() // Course aux données !}Exemple : Swift 6.0 (vérification stricte)
class Counter { var value = 0 func increment() { value += 1 // Erreur de compilation ! value n'est pas isolée }}
// Solution correcte : utiliser des acteursactor SafeCounter { var value = 0 func increment() { value += 1 // Sûr, car l'acteur isole l'état }}
let counter = SafeCounter()Task { await counter.increment() // Contrôle d'accès strict}Cette innovation réduit considérablement le nombre de bugs dans les applications multithread et rend le code plus prévisible. Pour les projets SwiftUI, c'est particulièrement pertinent car la plupart des mises à jour de l'interface utilisateur se produisent sur le thread principal, et Swift 6.0 aide à le contrôler explicitement.
2. Nouvelles macros : automatisation des tâches répétitives et génération de code
Les macros, introduites dans Swift 5.9, ont connu un développement puissant en 2025. Elles sont désormais devenues un outil à part entière pour la métaprogrammation. Les développeurs peuvent créer leurs propres macros qui génèrent du code à la compilation, économisant ainsi des heures de travail manuel.
Exemple : macro pour la génération automatique d'Equatable et Hashable
import Swift
// Déclaration de la macro@attached(member, names: named(==), named(hash))macro AutoEquatableHashable() = #externalMacro(module: "MyMacros", type: "AutoEquatableHashableMacro")
// Application de la macro@AutoEquatableHashablestruct User { let id: Int let name: String let email: String}
// Le compilateur générera automatiquement les méthodes :// func == (lhs: User, rhs: User) -> Bool { ... }// func hash(into hasher: inout Hasher) { ... }En 2025, des macros pour le travail réseau sont également apparues. Par exemple, la macro @RESTClient peut générer automatiquement le code pour les requêtes HTTP basées sur un protocole :
@RESTClient(baseURL: "https://api.example.com")protocol UserAPI { @GET("/users/{id}") func getUser(id: Int) async throws -> User
@POST("/users") func createUser(_ user: User) async throws -> User}
// On peut maintenant simplement appeler :let api = UserAPI()let user = try await api.getUser(id: 42)Cela accélère considérablement le développement et réduit la quantité de code standard.
3. SwiftUI 2025 : Réactivité sans effort
Le framework SwiftUI en 2025 a