7 points par GN⁺ 2024-09-18 | 2 commentaires | Partager sur WhatsApp
  • Cette version étend Swift à davantage de plateformes et de domaines
  • Swift est bien connu comme langage de développement d’applications, mais il est aussi excellent pour les bibliothèques, les services à l’échelle d’Internet, le code critique pour les performances, et bien d’autres usages
  • Swift 6 va plus loin grâce à de nouvelles fonctionnalités de programmation bas niveau, un sous-ensemble du langage pour l’embarqué, une prise en charge étendue de Linux et Windows, de nouvelles API cross-platform, etc.

Langage et bibliothèque standard

Concurrence

  • Swift 6 apporte, via un nouveau mode du langage, des garanties de sécurité pour empêcher les data races dans le code concurrent.
  • Le flag compilateur -strict-concurrency=complete fournit des avertissements de sécurité contre les data races.
  • Une nouvelle bibliothèque de synchronisation inclut des API de concurrence bas niveau.

Typed throws

  • Il est désormais possible d’indiquer dans la signature le type d’erreur qu’une fonction peut lever.
  • C’est utile pour transmettre le type d’erreur dans du code générique ou dans des environnements à allocation mémoire limitée.

Ownership

  • Les types non copiables introduits dans Swift 5.9 sont intégrés au système générique afin d’améliorer les performances.
  • La syntaxe ~Copyable permet de modéliser les ressources et d’optimiser les performances.

Interopérabilité C++

  • Swift 6 prend en charge les types move-only de C++, les méthodes virtuelles, les arguments par défaut, etc.
  • L’annotation SWIFT_NONCOPYABLE permet d’exposer des types C++ comme types non copiables.

Swift embarqué

  • Inclut un sous-ensemble du langage et un mode de compilation pour le développement logiciel embarqué.
  • Prend en charge les cibles bare metal ARM et RISC-V.

Entiers 128 bits

  • Ajoute des types entiers 128 bits signés et non signés.

Gains de productivité

  • Introduit plusieurs améliorations de productivité, comme count(where:).

Débogage

Résumés LLDB personnalisés avec @DebugDescription

  • La macro @DebugDescription permet de personnaliser la manière dont les objets sont affichés dans LLDB.

Amélioration des performances au démarrage grâce aux modules explicites

  • L’utilisation de builds avec modules explicites améliore fortement les performances de démarrage du débogueur.

Bibliothèques

Foundation

  • Unifie l’implémentation de Foundation sur toutes les plateformes.
  • Étend à Linux et Windows l’implémentation Swift utilisée sur macOS et iOS.

Swift Testing

  • Introduit une nouvelle bibliothèque de test appelée Swift Testing.
  • Utilise des macros pour aider à écrire et organiser les tests.

Prise en charge des plateformes

SDK entièrement statique pour Linux

  • Il est possible de construire des exécutables Linux avec liaison entièrement statique.

Nouvelles distributions Linux

  • Ajoute la prise en charge officielle de Debian, Fedora et Ubuntu 24.04.

Performances de build sur Windows

  • Fournit des toolchains précompilées pour l’architecture arm64.
  • Le gestionnaire de paquets Swift parallélise désormais les builds par défaut sur Windows.

Prochaines étapes

Télécharger Swift 6

  • Il est possible d’installer la toolchain officielle Swift 6 sur Swift.org/install.

Bien démarrer avec Swift

  • Le livre The Swift Programming Language a été mis à jour pour refléter la syntaxe et les fonctionnalités les plus récentes de Swift 6.

Explorer l’écosystème de paquets

  • Il est possible d’explorer divers paquets sur Swift.org/packages.

Participer

  • En partageant vos retours et votre expérience avec Swift 6, vous pouvez contribuer aux évolutions futures du langage, des outils, de l’écosystème de paquets et de la communauté.

Le résumé de GN⁺

  • Swift 6 est une version majeure qui étend Swift à de nombreuses plateformes et à de nombreux domaines.
  • Elle inclut plusieurs nouveautés, notamment en concurrence, en interopérabilité C++ et avec Swift embarqué.
  • Elle introduit de nouvelles bibliothèques comme Swift Testing ainsi que des améliorations de productivité.
  • Elle étend la prise en charge de Linux et Windows tout en améliorant les performances.
  • Swift 6 offre aux développeurs davantage de possibilités et d’efficacité.

2 commentaires

 
GN⁺ 2024-09-18
Avis sur Hacker News
  • Swift est en train de mourir lentement à cause de conflits inhérents à sa gouvernance

    • Il existe un conflit entre la communauté open source du Swift Working Group™ et l’entreprise Apple
    • Apple exerce une plus grande influence parce que c’est elle qui paie la majorité des salaires
    • De la dette technique, comme des exceptions de compilateur codées en dur, reste en permanence dans la base de code du compilateur
    • Apple impose sans discussion des concepts à moitié aboutis pour rendre la syntaxe de SwiftUI plus jolie
    • Cela reste un langage remarquable, mais il aura du mal à bien survivre pendant les 10 prochaines années si Apple ne le lâche pas
  • J’apprends Swift depuis peu et, jusqu’ici, je trouve ça correct

    • En utilisant SwiftUI, je tombe souvent sur l’erreur "compilation failed: the compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"
    • C’est choquant de voir le compilateur demander de l’aide
  • Avec la concurrence sûre et les throws typés, Swift commence à ressembler à un Rust plus accessible

    • Je ne pense pas l’utiliser au quotidien, car l’écosystème de packages est petit
    • J’espère que la Foundation cross-platform ira dans le sens d’une amélioration de ce point
  • Swift 6 représente un grand bond en avant pour le développement cross-platform batteries included

    • C’est un gros avantage, car Foundation fournit beaucoup de choses par défaut
    • Swift 6 semble être une tentative de remplacer à long terme C, C++, Rust, Zig, etc., grâce à suffisamment d’améliorations bas niveau et de capacités cross-platform
  • J’ai récemment commencé à apprendre Swift et SwiftUI, et j’ai été surpris par la complexité du langage

    • C’est particulièrement complexe autour des variables d’instance réactives
    • Je ne comprends pas des concepts comme @observableObject
    • Comme il y a plusieurs façons de faire, j’essaie au hasard jusqu’à ce que ça fonctionne
  • Je pensais que Swift resterait cantonné à macOS, mais c’est très intéressant

    • J’ai eu des problèmes en convertissant le compilateur Swift des paquets Ubuntu vers Debian
    • La plupart des fonctionnalités marchent, mais des choses simples comme le signal sigterm ne fonctionnent pas
    • Swift est un langage fantastique, et je pense que c’est aujourd’hui le langage le plus avancé et le plus intelligent
    • La façon dont SwiftUI est implémenté est impressionnante
    • Le langage est facile à utiliser et rempli de fonctionnalités et d’idées avancées qui prennent en compte l’usage réel des développeurs
    • En revanche, les messages d’erreur du compilateur et la documentation sont très peu accueillants
    • La plupart des bibliothèques ne fonctionnent pas encore bien sur Linux, mais si l’équilibre entre sécurité, vitesse et plaisir de développement est maintenu, l’avenir est prometteur
  • Swift doit décider ce qu’il veut être et s’y tenir

    • Il y a trop de sucre syntaxique et de concepts à moitié aboutis
  • J’ai essayé SwiftGodot, et utiliser Swift pour le développement de jeux me paraît plus intéressant que les pauses du GC de C#

    • Le partage de bibliothèques pour le développement Windows n’est pas encore pris en charge
    • Les temps de compilation sont longs
    • Le changelog mentionne des améliorations du gestionnaire de paquets Swift multithread sur Windows
  • Le fait de pouvoir migrer progressivement est très appréciable

    • Passer au mode Swift-6 peut être intimidant, notamment à cause des vérifications de sûreté contre les races de données
    • On peut utiliser les nouveaux outils tout en continuant à utiliser le langage en version 5.10
    • Le même package peut être compilé dans deux modes de langage, ce qui permet aux bibliothèques de monter de version tout en continuant à prendre en charge les clients qui ne sont pas prêts
  • Le langage Swift est devenu un monstre

 
bus710 2024-09-19

Il semble que le fait de devoir adopter l’écosystème Apple, plutôt coûteux, pour se lancer avec ce formidable langage qu’est Swift constitue une barrière non négligeable pour les développeurs.