Ajouter un commentaire

Swift 5.7

Par:
fredericmazue

mar, 20/09/2022 - 13:22

Présenté lors de la conférence WWDC 2022, Swift 5.7 est désormais disponible. Apple souligne que pour cette mouture, l'implémentation du vérificateur de type des génériques a été réécrite à partir de zéro avec des améliorations de l'exactitude et des performances. La nouvelle implémentation corrige de nombreux bogues de longue date, principalement liés à la gestion des exigences complexes de même type.

Swift 5.7 voit aussi son comptage automatique des références amélioré. Apple explique que dans Swift 5.7, le comportement ARC est plus prévisible, convivial et performant en spécifiant de nouvelles règles pour raccourcir la durée de vie des variables lorsque l'optimisation est autorisée. Pour appliquer les règles, le compilateur a adopté une nouvelle représentation interne qui suit la portée lexicale de chaque variable. Cela impliquait la mise à jour des optimisations existantes et la mise en œuvre de plusieurs nouvelles optimisations. Désormais, les modèles de programmation les plus courants qui dépendent de durées de vie étendues des variables sont sûrs sans obliger les programmeurs à utiliser explicitement withExtendedLifetime().Cela protège des bogues difficiles à diagnostiquer qui n'apparaissent qu'au moment de l'exécution dans les versions optimisées. Cela permet également l'introduction d'une optimisation plus puissante sans casser la source existante.

On peut encore remarquer l'arrivée d'un raccourci syntaxique pour le déballage optionnel dans les conditions, qui permet d'écrire du code plus succinct. Par exemple :

var startDate: Date?

if let startDate {
    print("""
    Bird of the Year competition \
    starts on \(startDate.formatted())
    """)
}

Swift 5.7 apporte encore de nombreuses améliorations à sa bibliothèque standard dont des chaînes avec pour ce dernier l'introduction de littéraux regex et de la bibliothèque RegexBuilder, associés à des méthodes de correspondance et à des captures fortement typées.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 DDD   H  H  K  K  W     W   CCC 
D D H H K K W W C
D D HHHH KK W W W C
D D H H K K W W W C
DDD H H K K W W CCC