À quoi s'attendre de Swift 3

Vous savez probablement que Swift 3 arrive plus tard cette année. C'est la première version qui intègre le travail acharné d'une communauté fantastique. Des dizaines de propositions ont été soumises depuis l'ouverture de Swift par Apple en 2015 et des dizaines ont été acceptées après un examen approfondi par l'équipe principale. Dans cet article, nous examinons certains des changements importants de Swift 3.

Qu'est-ce que Swift 3??

Avec la sortie de Swift 3, l’équipe centrale a un objectif très clair en tête, créant ainsi une base solide pour le langage de programmation Swift. À la WWDC 2016, Chris Lattner a souligné que Swift 3 introduisait une série de changements radicaux dans le but de corriger les principes fondamentaux. C'est le thème commun de la prochaine version. Cela signifie casser les fonctionnalités existantes, supprimer certaines fonctionnalités et améliorer les bases du langage..

Le projet d’évolution de Swift a été une véritable réussite pour tous les membres de la communauté Swift. L’engagement a été formidable et le résultat est Swift 3. Apple est transparent sur le processus de publication. Des instantanés de Swift 3 sont disponibles sur le site Web de Swift et inclus dans Xcode 8, qui est en version bêta au moment de la rédaction..

Plus que rapide

La version Swift 3 ne se concentre pas uniquement sur le langage de programmation Swift, elle inclut également des modifications substantielles de la palette d'outils, de la bibliothèque standard et de l'interopérabilité du langage avec Cocoa. Rappelez-vous que Swift est plus qu'une langue. Lorsque nous parlons de Swift, nous ne pensons généralement qu’au langage, mais cela inclut également la bibliothèque standard et le gestionnaire de paquets..

Compatibilité de la source

Si vous avez travaillé avec Swift, vous savez que la migration d'une base de code d'une version à une autre n'est pas une mince affaire. Malheureusement, la migration d'un projet vers Swift 3 ne sera pas différente.

Cela dit, l'objectif principal de Swift 3 est de s'assurer que la transition de Swift 3 aux versions futures du langage ne se fera pas de la sorte. La compatibilité de la source est un point central de Swift 3.

Awesomeness

Swift a été conçu pour être un langage de programmation moderne, mais il était tout aussi important de créer un langage qui avait l'air bien et qui était… bien… génial. Avec Swift 3, l’équipe continue d’optimiser le langage », comme le dit Chris Lattner..

Bien qu'il y ait beaucoup de changements radicaux, le résultat final est un langage qui se sent bien et qui a fière allure. Swift 3 est une joie à utiliser. Les modifications apportées à Core Graphics et à Grand Central Dispatch, dont nous discutons dans un instant, en sont de bons exemples..

Qu'est-ce qui change??

Assez parlé de l’impressionnant Swift et de son ampleur. Dans la suite de cet article, je voudrais mettre l'accent sur certains des changements clés introduits dans Swift 3. N'oubliez pas que Swift 3 continue d'évoluer jusqu'à la sortie officielle de cette version plus tard cette année..

API

Lisibilité

Beaucoup de temps et d’énergie ont été consacrés à l’amélioration de l’API du langage Swift. Les changements sont importants, on ne peut pas le nier. Mais le résultat est vraiment très beau. Avec Swift 3, l'équipe principale vise une API centrée sur la lisibilité et l'accessibilité..

Alors que beaucoup d'entre nous sont habitués à la verbosité d'Objective-C, la nouvelle API Swift adopte une approche différente en ne mettant l'accent que sur l'essentiel. Jetez un coup d'œil à l'exemple suivant de Swift 2.2.1. Cet exemple devrait vous paraître familier si vous avez déjà passé du temps avec Swift… ou Objective-C.

parentViewController.presentViewController (newViewController, animé: true, complétion: nil)

Dans Swift 3, cet extrait de code est légèrement différent, comme vous pouvez le voir ci-dessous..

parentViewController.present (newViewController, animé: true, complétion: nil)

La communauté Swift s'est rendu compte qu'il n'était pas nécessaire d'inclure une référence à ce qui allait être présenté, cette information étant déjà incluse dans le premier paramètre. En conséquence, le nom de la méthode devient plus lisible et plus concis. Une nette amélioration si vous me demandez.

Ceci est un fil conducteur dans Swift 3. Plusieurs des propositions qui ont été acceptées et incluses dans Swift 3 sont axées sur la simplification et la suppression du langage cruel. L’API Swift était initialement fortement influencée par la nature verbeuse d’Objective-C. La lisibilité est excellente, mais Swift 3 réduit la verbosité sans compromettre la lisibilité.

La communauté Swift est d’avis que la conception d’une API doit toujours prendre en compte l’utilisation de cette dernière, ce qui est clairement visible dans les modifications introduites dans Swift 3. Je suis sûr que vous êtes d’accord pour dire que la nouvelle version de l’API lit-super.

Paramètres d'étiquetage

Un autre changement important, bien accueilli par les développeurs, est la signature cohérente des fonctions et méthodes en incluant le premier libellé de paramètre par défaut. Voici à quoi ressemble une fonction typique dans Swift 2.2.1. Par défaut, le premier libellé de paramètre est omis lorsque la fonction est appelée..

func setupView (vue: UIView, avecConfiguration configuration: Configuration) //… setupView (vue, avecConfiguration: configuration)

Cela n’est plus vrai dans Swift 3. Le premier paramètre n’est plus traité de manière particulière, ce qui est un changement très bienvenu..

func setupView (vue: UIView, avecConfiguration configuration: Configuration) //… setupView (vue: vue, avecConfiguration: configuration)

En raison de ce changement, vous pouvez améliorer l’exemple ci-dessus en omettant la référence à la vue dans le nom de la fonction..

func setup (vue: UIView, withConfiguration configuration: Configuration) //… setup (vue: vue, avecConfiguration: configuration)

Importer en tant que membre

Travailler avec des API C à Swift a toujours semblé maladroit. Les fonctions Core Graphics, par exemple, sont importées en tant que fonctions globales, ce qui n’est pas une excellente solution et, par conséquent, l’utilisation de Core Graphics dans Swift n’est pas très agréable..

La même chose s'applique à Grand Central Dispatch. Dans l'exemple suivant, nous utilisons Grand Central Dispatch pour distribuer de manière asynchrone une tâche dans une file d'attente en arrière-plan..

dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) //…

Dans Swift 3, l’API ressemble beaucoup plus à une API Swift native. Les fonctions sont importées en tant que méthodes, ce qui donne la syntaxe suivante dans Swift 3.

DispatchQueue.global (attributs: .qosBackground) .async //…

Supprimer des fonctionnalités

La communauté Swift a également convenu de supprimer un certain nombre de fonctionnalités, dont certaines ont suscité quelques discussions houleuses. Je voudrais souligner quatre d'entre eux.

C-Style pour Boucles

Cela vous semble familier?

pour (var i = 0; i < 5; i++)  print(i) 

C-style pour les boucles ne sont plus disponibles dans Swift 3. Attendez. Quoi? Pourquoi? C'est une très bonne question. Vous pouvez lire la proposition soumise par Erica Sadun sur GitHub. Cela nous amène au prochain changement controversé.

Dire au-revoir à ++ et --

Peu de temps après l’ouverture du sourcing Swift, Chris Lattner, le créateur de Swift, a soumis une proposition visant à supprimer les opérateurs d’incrémentation et de décrémentation de la langue. Dans sa proposition, il mentionne que ces opérateurs ont été ajoutés "sans grande considération" au début du développement de Swift. Nettoyer l'API Swift et éviter toute confusion, ++ et -- ne sont plus disponibles dans Swift.

var a = 0 a++

Ne paniquez pas, cependant. La solution est simple Pas besoin de s'inquiéter.

var a = 0 a + = 1

Pas plus var Paramètres

Si vous connaissez bien les fonctions de Swift, vous savez que les paramètres d’une fonction sont constants par défaut. Vous pouvez modifier ce comportement en ajoutant un nom de paramètre au début avec var mot-clé. Pour les paramètres variables, une copie variable du paramètre est transmise à la fonction..

Mais en quoi est-ce différent des paramètres marqués comme inout? Droite. C’est exactement ce que beaucoup d’entre nous se demandaient et c’est la motivation pour supprimer des paramètres variables du langage..

Du point de vue de la fonction, il n'y a pas de différence, c'est-à-dire que la fonction reçoit une copie locale modifiable de la valeur du paramètre. Comme son nom l’indique, cependant, un paramètre marqué comme inout réécrit sa valeur dans la variable d'origine.

Pour éviter toute confusion, var paramètres ne sont plus disponibles dans Swift 3. Heureusement, inout les paramètres sont là pour rester.

En parlant de inout paramètres, dans Swift 3, le inout mot-clé est intégré dans la syntaxe de type des paramètres de fonction. Regardez les exemples suivants pour mieux comprendre ce changement.

// Swift 2 func combineStrings (inout first: String, seconde: String) //… // Swift 3 func combineStrings (first: inout String, second: String) //…

Comportement implicite de splat de tuple

Bien que Swift soit encore très jeune, il existe de nombreuses fonctionnalités assez avancées. Saviez-vous que vous pouvez transmettre un tuple à une fonction au lieu d'une liste de paramètres? Il n'y a aucun besoin d'encourager, cependant. Cette fonctionnalité va être supprimée dans Swift 3.

// Arguments passés en tant qu'arguments séparés let view = UIView () let configuration = Configuration () setupView (view, withConfiguration: configuration) // Arguments passés en tant que partie de tuple let tuple = (vue, withConfiguration: configuration) setupView (tuple)

Chris Lattner qualifie ce comportement de "mignon" dans sa proposition de suppression de la fonctionnalité. Bien que ce comportement puisse être utile de temps en temps, il semble avoir plusieurs conséquences. Cette proposition a pour but de mettre en évidence l'objectif principal de l'équipe principale, à savoir la simplification de la syntaxe et de l'API du langage..

Je peux voir à quel point cette fonctionnalité avait l'air soignée au début, mais, à mesure que le langage devenait de plus en plus complexe et que de plus en plus de gens l'utilisaient, de telles fonctionnalités ajoutent une valeur limitée au langage en échange de ce qui semble être une liste de complications. , y compris les problèmes de performances lors de la compilation et la complexité du vérificateur de types qui pourraient être évités en omettant la fonctionnalité.

Quel est le problème avec Swift 2.3?

La semaine dernière, j'ai écrit sur Xcode 8. Dans cet article, j'ai mentionné que Xcode 8 prend en charge Swift 2.3 et Swift 3. Mais qu'est-ce que Swift 2.3 et comment se compare-t-il à Swift 2.2??

Swift 2.3 est une mise à jour mineure mais importante de Swift. La principale différence avec Swift 2.2.1, la version incluse dans Xcode 7.3.1, réside dans la compatibilité avec les SDK des nouveaux systèmes d'exploitation Apple, iOS 10, tvOS 10, watchOS 3 et macOS Sierra (10.12)..

Cela signifie que vous pouvez utiliser et utiliser les nouveaux kits SDK sans passer à Swift 3. Avec Xcode 8, vous pouvez envoyer des applications sur l'App Store à l'aide de Swift 2.3 ou Swift 3. L'équipe Swift sait et comprend que la migration vers 3 a un impact significatif sur les projets existants incluant Swift. Swift 2.3 vous permet de migrer vos projets quand bon vous semble.

Outils

Ce que j'aime aussi dans le projet Swift, c'est que les outils sont développés parallèlement au langage. Cela signifie que les outils reçoivent également une mise à jour substantielle lorsque Swift 3 sera publié plus tard cette année..

Documentation

Au cours de la WWDC, nous avions déjà aperçu les modifications apportées à la documentation. Bien que cela puisse sembler trivial, avez-vous déjà réfléchi au temps que vous passiez à parcourir la documentation? J'ai un faible pour les détails comme celui-ci et j'apprécie les efforts déployés par l'équipe pour rendre la documentation plus accessible. Les changements sont encore plus dramatiques dans Xcode 8, comme je l’ai écrit la semaine dernière..

Xcode

Pour le moment, la grande majorité des développeurs Swift utilisent Xcode comme outil de travail. Cela pourrait changer à l'avenir, à mesure que le langage gagnera en popularité sur d'autres plateformes. Google n'avait-il pas l'intention d'utiliser Swift sur Android??

Dans Xcode 8, l'intégration de Swift est bien améliorée. La navigation dans la bibliothèque standard, par exemple, est plus intuitive. Dans l'une des sessions de WWDC 2016, Ewa Matejska a montré comment les interfaces synthétisées sont désormais plus intuitives et plus faciles à comprendre. Cela rend la navigation dans la bibliothèque standard moins intimidante.

Cela nous amène à la compilation et à l'optimisation. Vous avez peut-être entendu parler de l'optimisation de tout le module. Cette fonctionnalité est maintenant activée par défaut dans Xcode. Cela influe sur les performances des applications et Apple recommande d'activer cette fonctionnalité en production. Si vous voulez en savoir plus sur l'optimisation de modules entiers, je vous recommande de lire cet article de Keith Harrison.

Bien que l'optimisation de l'ensemble du module augmente le temps de compilation lors de la création initiale d'un projet, les résultats en valent la peine. Les compilations ultérieures sont moins impactées grâce à la compilation incrémentale.

Conclusion

Swift 3 est une étape majeure pour toutes les personnes impliquées dans la communauté Swift. Même si personne n'aime interrompre les changements, la direction prise par le langage devient de plus en plus claire, ce qui rend la plate-forme plus robuste et prête pour les modifications futures sans compromettre la compatibilité de la source..

Dans cet article, j'ai souligné quelques-uns des changements les plus importants auxquels vous pouvez vous attendre dans Swift 3. Pour une liste complète des changements, je vous encourage à consulter le guide de migration sur le site Web de Swift..

Vous pouvez également visiter le projet d’évolution de Swift sur GitHub pour en savoir plus sur les propositions acceptées et sur celles en cours d’élaboration. N'aie pas peur. Les propositions sont souvent faciles à comprendre. En fait, l’objectif du projet d’évolution rapide est que chacun puisse s’ajouter à la discussion. Qu'est-ce qui t'arrête?