2 points par GN⁺ 2026-03-28 | 1 commentaires | Partager sur WhatsApp
  • Le langage, la bibliothèque standard, le système de build et la prise en charge des plateformes s’enrichissent, avec une meilleure expérience développeur
  • Interopérabilité renforcée avec C, ajout d’un SDK officiel pour Android, améliorations pour l’embarqué et extension de l’outil de documentation DocC figurent parmi les principaux changements
  • Swift Package Manager améliore la cohérence des builds multiplateformes grâce à un moteur de build unifié et à la prise en charge de Swift Syntax précompilé
  • Swift Testing ajoute de nouvelles fonctionnalités comme l’enregistrement de problèmes au niveau avertissement, l’annulation de tests et les pièces jointes d’images, pour plus de flexibilité dans les tests
  • Le lancement officiel du SDK Android élargit le champ du développement multiplateforme de Swift et permet l’intégration avec des apps Kotlin/Java

Principales mises à jour de Swift 6.3

  • Swift 6.3 apporte des fonctionnalités étendues dans le langage, la bibliothèque standard, le système de build et la prise en charge des plateformes
  • Interopérabilité renforcée avec C, ajout d’un SDK officiel pour Android, améliorations pour l’embarqué et extension de l’outil de documentation DocC sont les changements clés
  • L’objectif est d’améliorer l’expérience développeur et de renforcer l’intégration du développement multiplateforme

Langage et bibliothèque standard

  • Interopérabilité C

    • Le nouvel attribut @c permet d’exposer des fonctions Swift ou des enum à du code C
    • La forme @c(MyLibrary_callFromC) permet de définir un nom de déclaration C personnalisé
    • L’utilisation conjointe de @c et @implementation permet d’implémenter en Swift des fonctions déclarées dans des en-têtes C
    • Dans cette configuration, Swift vérifie la correspondance avec les déclarations C existantes
  • Sélecteurs de nom de module (Module Name Selectors)

    • Lors de l’import d’API portant le même nom depuis plusieurs modules, il est possible d’effectuer un appel qualifié par module sous la forme ModuleA::getValue()
    • La syntaxe Swift::Task permet d’accéder aux API de concurrency et de traitement des chaînes
  • Contrôle des performances des API de bibliothèque

    • @specialize : fournit une implémentation spécialisée à l’avance pour des types spécifiques d’une API générique
    • @inline(always) : force l’inlining afin d’étendre le corps de la fonction au point d’appel
    • @export(implementation) : expose l’implémentation de la fonction dans les bibliothèques stables ABI pour autoriser des optimisations supplémentaires
    • Les propositions associées sont consultables sur le tableau de bord Swift Evolution

Améliorations des packages et du build

  • Swift Package Manager inclut un aperçu de l’intégration de Swift Build, offrant une expérience de build cohérente sur toutes les plateformes
    • Le moteur de build unifié renforce la cohérence du développement multiplateforme
    • Les utilisateurs peuvent tester directement avec leurs packages et signaler les problèmes
  • Principales améliorations de SwiftPM 6.3
    • Prise en charge de Swift Syntax précompilé : les bibliothèques dédiées aux macros peuvent utiliser des binaires swift-syntax précompilés
    • Contrôle flexible de l’héritage de documentation : les plugins impératifs qui génèrent des graphes de symboles peuvent contrôler l’inclusion ou non de la documentation héritée
    • Fonction d’exploration des caractéristiques du package : la commande swift package show-traits permet de vérifier les caractéristiques prises en charge par un package
    • Davantage de détails figurent dans les notes de version de SwiftPM 6.3

Mises à jour des bibliothèques cœur

  • Swift Testing

    • Enregistrement de problèmes au niveau avertissement : Issue.record(..., severity: .warning) affiche uniquement un avertissement sans faire échouer le test
    • Fonction d’annulation de test : try Test.cancel() permet d’interrompre un test en cours et ses sous-tâches
    • Prise en charge des pièces jointes d’images : il est possible de joindre des images pendant les tests sur les plateformes Apple et Windows
    • Propositions associées : ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
  • DocC

    • Prise en charge de la sortie Markdown : l’option --enable-experimental-markdown-output permet de générer des documents Markdown
    • Contenu HTML statique par page : l’insertion d’un résumé HTML dans `` améliore le référencement et l’accessibilité
    • Extension des annotations de blocs de code : de nouvelles options de format comme nocopy, highlight, showLineNumbers, wrap sont ajoutées
    • Activation possible via l’option --enable-experimental-code-block-annotations

Plateformes et environnements

  • Embedded Swift

    • Comprend de nombreuses améliorations, dont une interopérabilité C renforcée, un meilleur débogage et des avancées vers l’aboutissement du modèle de linkage
    • Les détails sont disponibles dans le blog “Embedded Swift Improvements coming in Swift 6.3”
  • Android

    • Première sortie du SDK officiel Swift pour Android
    • Permet le développement d’apps Android natives en Swift et la prise en charge du build Android pour les packages Swift
    • L’intégration avec des apps Kotlin/Java est possible via Swift Java et Swift Java JNI Core
    • Cette sortie est considérée comme une étape importante dans l’extension du développement multiplateforme de Swift
    • Le guide de démarrage est fourni dans le document “Getting Started with the Swift SDK for Android”

Étapes suivantes

  • La toolchain Swift 6.3 peut être installée depuis la page Install Swift
  • Les développeurs peuvent dès maintenant expérimenter les nouvelles fonctionnalités et envoyer leurs retours

1 commentaires

 
GN⁺ 2026-03-28
Avis sur Hacker News
  • Ça fait plaisir de voir une sortie aussi réussie pour Swift
    Je ne l’ai pas utilisé depuis la v3, mais vers 2015~17, Swift aurait pu remplacer Python
    C’était simple, rapide et bien intégré à l’écosystème C/C++. À l’époque où IBM poussait le serveur, il y avait une vraie possibilité
    Mais Apple n’a pas su suffisamment embarquer la communauté, et au final Swift est resté un langage réservé à Apple. Aujourd’hui, sa complexité est montée au niveau de celle de C++

    • À l’université, je travaillais en freelance et j’ai créé un backend web en Swift. Je l’ai déployé avec un buildpack Heroku, c’était une période assez amusante
      J’aime Swift, mais en dehors de l’écosystème Apple, j’ai toujours l’impression qu’il n’a pas encore franchi la masse critique. J’ai fini par passer à TypeScript l’an dernier
    • Même avec Swift 6.3 récent, développer hors des plateformes Apple reste pénible
      Surtout, il y a probablement très peu de gens qui veulent volontairement introduire Apple comme gatekeeper dans leur stack
    • Google avait aussi tenté à une époque de déplacer TensorFlow de Python vers Swift
      Projet TensorFlow Swift
    • Même Python 3 a mis longtemps à remplacer Python
    • Python est puissant pour le développement itératif et dans Jupyter Notebook grâce à son interpréteur interactif
      CircuitPython était aussi utile pour le prototypage embarqué. Swift n’a jamais vraiment réussi à s’imposer dans ces domaines
      En plus, Swift n’est arrivé sur Linux qu’en 2016, sur Windows en 2020, et sur FreeBSD seulement en 2025
      Au milieu des années 2010, de nouveaux langages comme Go, Julia, Rust, TypeScript et Solidity arrivaient en masse, donc la plupart des gens n’avaient le temps d’en apprendre qu’un ou deux
  • J’espérais que Swift deviendrait un langage couvrant toute la stack, mais la réalité est autre
    On a l’impression qu’Apple a gaspillé cette opportunité

    • Moi, j’utilise vraiment Swift sur toute la stack
      Par exemple, ClearSurgery est entièrement écrit en Swift, y compris les composants temps réel sous Linux
  • La semaine dernière, j’ai porté le système d’exploitation xv6-riscv vers Zig, Nim, LISP et Swift
    Grâce aux progrès de Swift embarqué, ça m’a semblé être un langage très productif. Les abstractions autour de l’accès mémoire étaient aussi élégantes
    Mais la compilation était tellement lente que j’ai fini par me concentrer sur Nim

    • Ça faisait longtemps que je n’avais pas entendu parler de Nim, je suis curieux de savoir pourquoi ce choix
    • Je demande si tu parles de McCarthy LISP
  • Je regrette qu’on ne parle pas des améliorations de vitesse de compilation de Swift
    Une compilation plus lente que Rust dégrade fortement l’expérience de développement

    • J’ai moi aussi travaillé récemment sur un projet Swift, et j’ai été surpris de voir à quel point la compilation devenait lente avec beaucoup de dépendances
      Si on est habitué aux builds rapides de Go, Swift rend vraiment le développement itératif pénible. Le langage est excellent, mais la boucle de feedback est trop lente
  • Swift 6.3 inclut pour la première fois un SDK officiel pour Android

    • Je me demande s’il en existe aussi pour Windows et Linux
      Pour Windows, il y a un billet de blog d’il y a 5 ans,
      et pour Linux, un guide pour GNOME
      Ce serait bien de pouvoir déployer sur plusieurs plateformes avec un seul développement, comme à l’époque d’OpenSTEP
    • J’ai l’impression que ce sera encore moins utilisé que Swift côté serveur
  • L’amélioration des types noncopyable est la partie la plus sous-estimée de cette release
    Il devient maintenant beaucoup plus réaliste de modéliser une propriété unique dans Swift

  • Avec l’attribut @c de Swift 6.3, il est désormais possible d’exposer des fonctions Swift au code C
    Mais je me demande pourquoi cela arrive si tard. Avoir ajouté l’interopérabilité C++ d’abord ressemble à une priorité étrange

    • En réalité, cela existait déjà auparavant sous forme d’attribut privé avec underscore
    • L’interopérabilité C++ était importante pour Apple afin d’absorber des bases de code bas niveau existantes
      En revanche, exporter Swift vers C crée facilement du spaghetti FFI, et des bugs d’ABI surviennent facilement avec les enums, la gestion de la propriété ou des valeurs nulles
      Surtout si on y mêle des closures, les conventions d’appel peuvent diverger et on peut perdre une journée entière à déboguer
    • Comme il existait déjà une fonctionnalité d’export vers ObjC, la priorité était plus basse
    • Je l’utilisais expérimentalement depuis longtemps, c’est juste devenu officiel maintenant
  • Avant, quand je créais une dylib Swift pour un programme C, je devais utiliser @cdecl, donc c’est bienvenu que ce soit désormais pris en charge officiellement

  • Les changements réels au-delà du marketing sont visibles dans le CHANGELOG et la
    liste des propositions Swift Evolution
    La 6.3 était surtout une release centrée sur le travail d’intégration — stdlib, interopérabilité C/C++, swift-java, système de build, etc.
    SPM absorbe progressivement des fonctionnalités de Xcode, et le nouveau moteur swift-build ainsi que les modules précompilés sont aussi en expérimentation
    Mais l’interaction entre SPM et Xcode reste instable, et la complexité interne continue d’augmenter
    Les avancées du langage lui-même sont discrètes, mais des travaux structurels profonds sont en cours sur le contrôle de durée de vie et la coloration de la concurrence
    Avec l’imbrication de multiples OS, appareils et environnements CI, les développeurs Swift sont toujours dans une situation où ils doivent trouver un équilibre au milieu des changements

    • Dans Swift 6.4, swift-build devrait devenir la valeur par défaut
      D’après ce post du forum officiel,
      Xcode l’utilise déjà en interne, mais les problèmes de performance sont sérieux
      Il y a aussi cette discussion associée
      Si SPM et Xcode utilisent le même moteur, cela pourrait s’améliorer, mais je n’en attends pas trop
  • Je me demande à quoi ressemble la toolchain dans les versions récentes de Swift. J’aimerais savoir si Swift Lint et Swift Format sont pris en charge
    Pour un langage moderne, il devrait y avoir un formateur intégré et des règles de lint recommandées. Ce n’est pas seulement le langage qui compte, mais tout l’écosystème

    • Les deux outils sont désormais inclus par défaut. On peut les utiliser directement avec swift format et swift format lint, sans dépendance externe