1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2013
    Messages
    3 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2013
    Messages : 3 709
    Points : 91 231
    Points
    91 231

    Par défaut Apple annonce la sortie officielle de Swift 4.1 pour macOS et Linux

    Apple déploie une préversion de Swift 4.1 avec la bêta de XCode 9.3,
    le langage apporte la conformité conditionnelle

    En octobre 2017, Apple a dévoilé la feuille de route de Swift 4.1, dont la version stable est attendue « dans la première moitié de 2018 » :
    • 18 octobre 2017 (branchement initial) : swift-4.1-branch sera initialement coupée du master ;
    • environ toutes les deux semaines, master va fusionner avec swift-4.1-branch jusqu'à la date finale de la branche ;
    • 4 décembre 2017 (branchement final): swift-4.1-branch aura des changements fusionnés du master une dernière fois. Après cette date finale de la branche, il y aura une période durant laquelle seules les corrections critiques choisies entreront dans la version finale (via des pull request).

    Conformément à ce calendrier, Apple a donc déployé la première préversion de Swift 4.1 dans la bêta de Xcode 9.3. Voici quelques-unes des fonctionnalités qui sont proposées.

    Support synthétisé des protocoles Equatable et Hashable

    Le protocole Equatable permet à Swift de comparer une instance d'un type à une autre. Par exemple, lorsque nous déclarons que 5 == 5, Swift comprend ce que cela signifie parce que Int se conforme à Equatable, ce qui signifie qu'il implémente une fonction décrivant ce que signifie == pour deux instances de Int.

    Implémenter Equatable dans nos propres types de valeurs leur permet de fonctionner comme les chaînes, les tableaux, les nombres de Swift, etc., et c'est généralement une bonne idée de rendre vos structures conformes à Equatable juste pour qu'elles correspondent mieux au concept des types de valeur.

    Cependant, l'implémentation de Equatable peut être contraignante. Dans le code suivant :

    Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct Person {
        var firstName: String
        var middleName: String
        var age: Int
        var city: String
    }

    Si vous avez deux instances de Person et que vous voulez vous assurer qu'elles sont identiques, vous devez comparer les quatre propriétés, comme ceci :

    Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct Person: Equatable {
        var firstName: String
        var lastName: String
        var age: Int
        var city: String
     
        static func ==(lhs: Person, rhs: Person) -> Bool {
            return lhs.firstName == rhs.firstName && lhs.lastName == rhs.lastName && lhs.age == rhs.age && lhs.city == rhs.city
        }
    }

    Vous en conviendrez, même la lecture n’est pas très agréable.

    Avec Swift 4.1, il est possible de synthétiser la conformité pour Equatable, c’est-à-dire que Swift 4.1 peut générer automatiquement une méthode ==, qui compare toutes les propriétés d'une valeur avec toutes les propriétés d'une autre, comme ci-dessus. Tout ce que vous avez à faire est simplement d'ajouter Equatable comme un protocole pour votre type, et Swift fera le reste.

    Et pour ceux qui tiennent à implémenter le == eux-mêmes, bien entendu cela reste possible. Par exemple, si votre type a un champ id qui l'identifie de manière unique, vous aurez à écrire == pour comparer cette valeur unique plutôt que de laisser Swift faire tout le travail supplémentaire.

    Swift 4.1 introduit également un support synthétisé pour le protocole Hashable, ce qui signifie qu'il va générer automatiquement une propriété hashValue pour les types conformes. Hashable demandait de toujours retourner un hachage unique (ou au moins principalement unique) pour chaque objet.

    Avant vous deviez écrire :

    Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var hashValue: Int {
        return firstName.hashValue ^ lastName.hashValue &* 16777619
    }

    Pour la plupart des cas, ce n'est plus nécessaire dans Swift 4.1.

    Conformité conditionnelle

    La Swift Evolution SE-0143 a proposé des conformations conditionnelles, et elle a maintenant été implémentée dans Swift 4.1. C'est une fonctionnalité puissante que la plupart des gens utiliseront indirectement – les choses qui n'ont pas fonctionné auparavant vont fonctionner désormais. Par exemple, le code suivant ne sera pas compilé avec Swift 4.0 :

    Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var left: [String?] = ["Andrew", "Lizzie", "Sophie"]
    var right: [String?] = ["Charlotte", "Paul", "John"]
    left == right

    C'est parce que String et [String] sont équitables, mais [String?] Ne l'était pas. La conformité conditionnelle signifie qu'il est maintenant possible d'ajouter une conformité de protocole à un type tant qu'il satisfait une condition - dans ce cas, si les éléments du tableau sont equatables, cela signifie que l'ensemble est équivalent.

    La conformité conditionnelle a été étendue au protocole Codable d'une manière qui rendra certainement les choses plus sûres. Considérez ce code :

    Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Person {
        var name = "Taylor"
    }
     
    var people = [Person()]
    var encoder = JSONEncoder()
    try encoder.encode(people)

    Cela crée un tableau avec une seule personne à l'intérieur, puis tente de l'encoder en JSON. Ce code se compile proprement sur Swift 4.0, mais renvoie une erreur fatale au moment de l'exécution, car Person n'est pas conforme à Codable. Swift 4.1 nettoie ceci : Optionnel, Array, Dictionary, et Set ne sont maintenant conformes à Codable que si leur contenu est également conforme à Codable, donc le code ci-dessus refusera de compiler.

    Source : blog Swift, HackingSwift, GitHub (1, 2)

    Et vous ?

    Quelles sont les fonctionnalités qui vous intéressent le plus ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Consultant
    Inscrit en
    juillet 2013
    Messages
    1 976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 976
    Points : 62 912
    Points
    62 912
    Billets dans le blog
    2

    Par défaut Avec Swift 4.2, Apple se prépare à la stabilisation de l’ABI Swift dans la version 5.0 du langage

    Avec Swift 4.2, Apple se prépare à la stabilisation de l’ABI Swift dans la version 5.0 du langage
    qui est prévue plus tard dans l’année

    Il y a déjà six mois qu'Apple a annoncé la disponibilité de Swift 4.0, la deuxième version majeure de son langage depuis son passage en open source en décembre 2015. Cette version du langage de programmation pour les applications iOS et macOS offre une plus grande robustesse et stabilité, et fournit une compatibilité de code source avec Swift 3. Swift 4.0 a également amélioré la bibliothèque standard et ajouté des fonctionnalités telles que l'archivage et la sérialisation.

    Les mises à jour du langage comprenaient une implémentation de String plus rapide et plus facile à utiliser avec un support pour créer, utiliser et gérer des sous-chaines de caractères. Swift 4.0 a par exemple introduit les chaines de caractères littérales multilignes dans le code source Swift ; une fonctionnalité de programmation commune qui, jusque-là, manquait encore au langage d'Apple. On notait par ailleurs l'ajout de la propriété unicodeScalars au type Character et des améliorations pour la création, l'utilisation et la gestion de types Collection, entre autres propositions d’amélioration implémentées dans Swift 4.0. À cela s'ajoutaient aussi de nouvelles fonctionnalités de flux de travail et une API plus complète pour Swift Package Manager.

    Rappelons que Swift n'a pas encore de support officiel pour Windows et que seuls Linux et macOS sont pris en charge par Apple. Et pour le développement sur les plateformes Apple, Swift est livré dans Xcode. Bien évidemment, macOS bénéficie également d'un meilleur traitement que Linux en ce qui concerne le support par Swift. Depuis plus d'un mois, Swift 4.1 est disponible en préversion, dans Xcode 9.3, dont la première bêta a été publiée fin janvier. Alors que Swift 4.1 se rapproche de sa sortie officielle, Apple avance également sur le développement de Swift 4.2, la deuxième mise à jour de Swift 4.


    Swift 4.2 est axée sur la stabilisation de l'ABI (application binary interface) du langage. Pour information, une ABI ou interface binaire-programme décrit une interface de bas niveau entre les applications et le système d'exploitation, entre une application et une bibliothèque ou entre différentes parties d’une application. Swift 4.2 sera une étape intermédiaire pour atteindre la stabilité de l'ABI dans la version 5.0 du langage qui est prévue pour la fin de l'année. La stabilité ABI permettra une compatibilité binaire entre les applications et les bibliothèques compilées avec différentes versions de Swift.

    Swift 4.2 embarquera donc de nombreux changements ABI sous le capot dans le cadre de l'effort de stabilisation de l'ABI Swift ; ce qui fait d'ailleurs que Swift 4.2 n'est pas compatible niveau binaire avec les versions précédentes du langage. Beaucoup de ces changements sont liés à la performance, et d'après l'équipe Swift, il est nécessaire de déployer les changements ABI de manière incrémentielle afin de donner suffisamment de temps aux utilisateurs pour les évaluer avant qu'ils soient inclus dans l'ABI finale. Swift 4.2 viendra également avec de nombreuses corrections de bogues, ainsi que des améliorations ciblées sur les performances de compilation.

    Si Swift 4.2 n'est pas compatible niveau binaire avec les versions précédentes du langage, la compatibilité de code source devrait quant à elle être assurée. Comme avec Swift 4.1, la grande majorité des sources construites avec le compilateur Swift 4.0 (y compris celles qui utilisent le mode de compatibilité Swift 3) devraient compiler avec le compilateur de Swift 4.2. Il y aura bien sûr des cas exceptionnels où cela ne pourra pas être une garantie absolue, mais il est prévu que la plupart des projets continuent à compiler sans changement de source. À partir du 20 avril, la branche master de Swift 4.2 n'acceptera que quelques corrections critiques sélectionnées. Sa disponibilité pourrait donc être envisagée après cette date.

    Par ailleurs, il est important de souligner que version après version, Swift gagne du terrain parmi les développeurs iOS et macOS et semble désormais aussi, voire, plus populaire qu'Objective-C au sens de RedMonk. Publiant son classement des langages populaires au premier trimestre 2018, le cabinet d'analyse RedMonk a en effet fait remarquer, pour la première fois, Swift a pu rattraper Objective-C dans son classement. « Même si Swift a évolué à un rythme incroyable, l'historique d'Objective-C l'a maintenu devant son remplaçant. Finalement, cependant, les trajectoires ont dû se croiser, ce trimestre est le premier où cela s'est produit », a expliqué RedMonk la semaine dernière. « Dans un monde où il est incroyablement difficile de se classer dans le Top 25 des langages de programmation, sans parler du Top 10, Swift a géré la tâche en moins de quatre ans. Il reste un phénomène de croissance, même si sa capacité à pénétrer le serveur n'a pas répondu aux attentes, » a-t-il ajouté.

    Source : Blog Swift

    Et vous ?

    Avez-vous déjà utilisé le langage d’Apple ? Quelles versions et quelles ont été vos impressions ?
    Qu'attendez-vous d'Apple et son langage Swift ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  3. #3
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Consultant
    Inscrit en
    juillet 2013
    Messages
    1 976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 976
    Points : 62 912
    Points
    62 912
    Billets dans le blog
    2

    Par défaut Apple annonce la sortie officielle de Swift 4.1 pour macOS et Linux

    Apple annonce la sortie officielle de Swift 4.1 pour macOS et Linux
    avec des mises à jour pour le compilateur et des progrès significatifs pour la stabilisation de l'ABI

    Après une préversion livrée dans la bêta de Xcode 9.3 fin janvier, la version stable de Swift 4.1 est officiellement disponible pour toutes les plateformes prises en charge. Dans cette version mineure, Apple apporte des améliorations à son langage de programmation comme expliqué ici. Swift 4.1 introduit également de nouvelles options de compilation.

    Pour aller un peu plus dans les détails, en ce qui concerne les mises à jour du compilateur, on peut noter que Swift 4.1 permet de mieux configurer vos builds, avec par exemple un nouveau mode d'optimisation de la taille du code. Cette version permet aussi de tester s'il est possible d'importer un module sur une plateforme avec la fonction canImport(). Son argument est donc le nom d'un module qui peut ne pas être présent sur toutes les plateformes. Si le module est présent, la fonction renvoie true ; sinon, elle renvoie false. Swift 4.1 offre également des moyens plus simples de spécifier l'environnement cible, avec par exemple la condition de plateforme targetEnvironment(simulator) qui renvoie true lorsque le code est compilé pour un simulateur ; sinon, elle renvoie false.

    Il y a aussi quelques améliorations pour le gestionnaire de paquets Swift dans cette nouvelle version du langage d'Apple. Swift Package Manager résout désormais correctement les dépendances dans les graphes de packages qui utilisent différents schémas d'URL, tels que ssh et http. Les performances ont également été significativement améliorées pour les graphes de packages qui ont des dépendances partagées.

    En outre, des progrès significatifs ont été réalisés dans le cadre de la stabilisation de l'ABI (application binary interface) du langage. Pour information, une ABI ou interface binaire-programme décrit une interface de bas niveau entre les applications et le système d'exploitation, entre une application et une bibliothèque ou entre différentes parties d’une application. La stabilité ABI permettra donc une compatibilité binaire entre les applications et les bibliothèques compilées avec différentes versions de Swift.


    Swift 4.1 est disponible pour macOS et Linux. Les binaires officiels de Swift 4.1 pour Linux (Ubuntu 14.04, Ubuntu 16.04 et Ubuntu 16.10) sont disponibles en téléchargement sur le site officiel. Pour le développement sur les plateformes d'Apple, Swift 4.1 est inclus dans Xcode 9.3.

    Cette nouvelle version est compatible niveau source avec Swift 4.0. Pour vous aider à migrer à Swift 4.1 depuis les versions précédentes de Swift, Xcode 9.3 d'Apple contient un outil de migration de code qui peut gérer automatiquement la plupart des modifications de source nécessaires. Il y a aussi un guide de migration pour vous aider pour les changements qui ne peuvent pas être gérés automatiquement.

    Source : Blog Swift

    Et vous ?

    Avez-vous déjà utilisé le langage d’Apple ? Quelles versions et quelles ont été vos impressions ?
    Que pensez-vous de cette mise à jour ?
    Qu'attendez-vous d'Apple et son langage Swift ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

Discussions similaires

  1. Apple déploie une nouvelle version de l'API WebKit dans la bêta iOS 11.2
    Par Stéphane le calme dans le forum Développement iOS
    Réponses: 1
    Dernier message: 17/02/2018, 11h32
  2. [iOS 4.x] Apple censure une nouvelle application de son AppStore
    Par Gordon Fowler dans le forum Apple
    Réponses: 215
    Dernier message: 03/12/2010, 11h52
  3. Réponses: 33
    Dernier message: 29/10/2009, 22h28
  4. [Snow Leopard] Snow Leopard : Apple publie une liste officielle d'applications incompatibles
    Par Gordon Fowler dans le forum Apple
    Réponses: 4
    Dernier message: 06/09/2009, 22h52
  5. Réponses: 0
    Dernier message: 29/08/2009, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo