Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Swift 5.3 est disponible avec de meilleures performances et axée sur une meilleure productivité
Et améliore l'ergonomie de l'écriture du code Swift

Le , par Bill Fassinou

102PARTAGES

6  0 
Lors de la publication de la feuille de route de Swift 5.3, Apple annonçait que cette version va inclure des améliorations en termes de performances et de qualité. « Cette future version augmentera le nombre de plateformes sur lesquelles Swift est disponible et supporté, notamment en ajoutant la prise en charge de Windows et de distributions Linux supplémentaires (à part Ubuntu) », avait-il dit. Swift 5.3 est sortie mercredi et Apple confirme que la nouvelle mouture du langage intègre de profondes améliorations de performances et est effectivement axée sur la productivité.

« Swift 5.3 continue de se concentrer sur le perfectionnement du langage, l'expérience des développeurs et l'expansion de l'écosystème Swift pour offrir plus d'opportunités d'écrire Swift », a déclaré Apple en prélude à la présentation des différentes améliorations apportées dans Swift 5.3. Swift 5.3 est disponible pour les développeurs sur le site Web Swift ou encore avec la dernière version de l'environnement de développement intégré de l’entreprise, Xcode 12 GM, qui comprend également les SDK pour iOS 14, iPadOS 14, tvOS 14, watchOS 7 et macOS “Big Sur”.

Apple a annoncé la sortie de Swift 5.3 en mars, peu après la sortie de Swift 5.2. Depuis 2015, il développe le langage en libre accès, ce qui permet aux développeurs Swift de suggérer de nouvelles fonctionnalités par le biais de propositions qu'Apple pourrait adopter. Voici les fonctionnalités les plus marquantes de la version 5.3 du langage.


Nouvelles fonctionnalités et améliorations de la bibliothèque standard

Apple indique que Swift 5.3 intègre beaucoup d’améliorations linguistiques qui améliorent l'ergonomie de l'écriture du code Swift. En plus, ces mises à jour sont à même de vous aider à être un développeur Swift plus productif en réduisant le nombre d'instructions et de codes redondants, et en vous permettant de définir plus de fonctionnalités dans les bibliothèques que vous pouvez utiliser. Swift 5.3 a mis en œuvre les propositions suivantes issues du processus d'évolution de Swift :

  • l'ajout d’un initialisateur de chaîne de caractères avec accès à un stockage non initialisé ;
  • la synthèse de la conformité “Comparable” pour les types enums ;
  • les clauses where sur les déclarations génériques contextuelles ;
  • le peaufinement de la sémantique de didSet ;
  • l'accroissement de la disponibilité du self implicite dans les fermetures @escaping lorsque les cycles de référence sont peu susceptibles de se produire ;
  • les clauses de capture à motifs multiples ;
  • Float16;
  • clarifier le modèle de cohérence de la mémoire Swift ;
  • faciliter la transition vers des chaînes de fichiers magiques et concises ;
  • appariement par anticipation des fermetures successives.

Swift 5.3 est aussi livrée avec des correctifs pour plusieurs limitations du compilateur communément signalées :

  • les références non appliquées aux exigences des protocoles sont désormais prises en charge ;
  • les propriétés paresseuses peuvent définir les accesseurs didSet et willSet ;
  • les classes génériques peuvent utiliser des implémentations par défaut des exigences de protocole lorsqu'elles se conforment à des protocoles de types associés.

Amélioration des performances d'exécution

Swift 5.3 améliore considérablement la taille du code binaire et l'utilisation de la mémoire d'exécution. Les mesures de ces améliorations ont donné des résultats intéressants dans le cadre de divers projets. En commençant par Swift 4, l'équipe Swift a mesuré la taille du code binaire d'une réécriture Swift d'une application UIKit (développé avec Objective-C) qui fonctionne sous iOS. Dans Swift 4, la taille du code était environ 2,3 fois plus grande que celle de la version Objective-C. Dans Swift 5.3, la taille du code est inférieure à 1,5 fois la taille de la version Objective-C.

Dans MovieSwiftUI, une application open source SwiftUI, la taille du code logique de l'application est réduite de plus de 40 % par rapport à Swift 5.1. Dans une application de test qui crée un tableau de 400 objets modèles, la mémoire de tas due à la surcharge d'exécution a été réduite pour utiliser moins d'un tiers de la mémoire de tas utilisée dans Swift 5.1. Ces mesures avaient été rapportées dans le discours “What's New in Swift” au cours de la conférence WWDC 2020. Cela dit, les améliorations de la taille binaire varient selon les modes d'utilisation.

L'amélioration la plus importante concerne les projets qui déclarent un grand nombre de types, grâce à la réduction de la taille des “fonctions de valeur”, c’est-à-dire les fonctions invisibles que le compilateur génère pour créer, copier et détruire les types de valeur. Selon l’équipe, ceci est surtout bénéfique pour les applications SwiftUI. De plus, les applications Swift ont maintenant une surcharge de mémoire moins importante au moment de l'exécution. En d’autres termes, le runtime de Swift met en cache moins d'informations au démarrage.

Cela lui permet de suivre des choses comme les conformités de protocole, en raison des améliorations du temps d'exécution qui ont rendu cette mise en cache moins nécessaire. Selon l'équipe, une application écrite en Swift devrait maintenant utiliser moins de mémoire en tas qu'une application identique écrit en Objective-C.

Améliorations apportées à l’expérience des développeurs

Dans un premier temps, les améliorations concernent l'indentation lors de l'édition du code Swift. L'implémentation de l'indentation automatique dans SourceKit a été révisée dans Swift 5.3, corrigeant près de 50 rapports de retour d'information dans le processus. En particulier, l'indentation automatique des cas suivants a été améliorée dans cette version :

  • les appels de méthode enchaînés impliquant des fermetures ;
  • les arguments d'appel, les paramètres et les éléments de collecte qui couvrent plusieurs lignes ;
  • les conditions multilignes if, guard et while.

Dans un second temps, les améliorations se sont alignées autour de l’achèvement du code. Swift 5.3 améliore un peu plus les performances et la qualité de l'achèvement du code grâce aux travaux suivants :

  • les invocations répétées de complétion de code à l'intérieur des corps de fonction sont désormais jusqu'à 15 fois plus rapides que celles de Swift 5.2. Ce résultat a été obtenu en réutilisant dans le même fichier une partie des calculs effectués pour les complétions précédentes. Ces accélérations seront visibles à la fois dans Xcode et chez les utilisateurs de SourceKit-LSP ;
  • les valeurs appelables des types nominaux définis par l'utilisateur (SE-0253) sont désormais prises en charge dans la complétion du code Swift. La complétion de code affiche la signature appelante après une expression de base suivie d'une parenthèse ouvrante.


Les changements à ce niveau concernent les améliorations apportées aux délais de construction. Swift 5.3 a une nouvelle stratégie sur la manière dont le compilateur traite les déclarations dans le code Swift. Cela donne lieu à plusieurs améliorations concrètes, notamment :

  • des temps de compilation incrémentiels plus rapides en évitant la duplication du travail de compilation entre les fichiers sources, et en identifiant plus précisément le code qui n'a pas changé par rapport à la compilation précédente ;
  • une meilleure correction, en corrigeant les cas multiples où le comportement du compilateur était sensible à l'ordre de déclaration ou à l'imbrication ;
  • une compilation plus rapide du code qui utilise des types avec un grand nombre de propriétés et de fonctions qui sont importés d'une autre bibliothèque.
  • Ces améliorations ont été obtenues en étendant l'adoption d'un nouveau framework centralisé dans le compilateur, qui enregistre des informations de dépendance à grain fin, met en cache les résultats de calculs coûteux qui peuvent devoir être répétés et détecte automatiquement les cycles de dépendance dans votre code Swift.

Source : Swift 5.3

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Swift 5.3 sera officiellement disponible et pris en charge sur Windows, ainsi que sur d'autres distributions Linux

Swift 5.2 est disponible avec une nouvelle architecture de diagnostic qui vise à améliorer la qualité et la précision des messages d'erreur

En route vers Swift 6 : l'équipe en charge du développement de Swift dévoile la nouvelle feuille de route du projet

Une erreur dans cette actualité ? Signalez-le nous !