Apple publie Swift 6.3, la dernière version de son langage de programmation open source, avec le premier SDK Android officiel, une interopérabilité améliorée avec le langage C et bien plus encore
La version 6.3 de Swift vient d'être publiée, marquant une expansion significative du langage de programmation d'Apple vers de nouveaux domaines. Cette mise à jour apporte le premier SDK Android officiel, permettant aux développeurs de créer des applications Android natives en Swift et d'intégrer du code Swift dans des projets Kotlin ou Java. Elle renforce également l'interopérabilité avec le langage C et améliore les outils multiplateformes, la prise en charge des environnements embarqués et l'optimisation de la compilation.
Swift est un langage de programmation compilé de haut niveau, polyvalent et multi-paradigme, créé par Chris Lattner en 2010 pour Apple Inc. et maintenu par la communauté open source. Swift se compile en code machine et utilise un compilateur basé sur LLVM. Swift a été lancé pour la première fois en juin 2014 et la chaîne d'outils Swift est intégrée à Xcode depuis la version 6 de ce dernier, sortie en septembre 2014.
La version 6.3 de Swift vient d'être publiée, apportant le premier SDK officiel Swift pour Android. Cela permet aux développeurs de créer des applications Android natives en Swift, d'adapter des paquets Swift pour Android et d'intégrer du code Swift dans des projets Kotlin ou Java. Cette version étend également la portée de Swift dans les environnements embarqués et les systèmes à grande échelle grâce à une prise en charge plus large des plateformes et à des améliorations au niveau de la compilation.
L'une des principales nouveautés du langage est le nouvel attribut @c, qui permet d'exposer des fonctions et des énumérations Swift au code C au sein d'un même projet. Les développeurs peuvent attribuer des noms de symboles C personnalisés et, en combinaison avec @implementation, relier des fonctions Swift à des déclarations C existantes afin d'améliorer l'interopérabilité dans les bases de code multi-langages. Swift 6.3 introduit également les sélecteurs de modules, ce qui facilite la résolution des conflits de nommage lorsque plusieurs modules importés exposent des API portant le même nom.
En matière d'outils, Swift 6.3 propose un aperçu de l'intégration de Swift Build dans Swift Package Manager, pour une expérience de compilation multiplateforme plus homogène. Il ajoute également de nouveaux contrôles d'optimisation tels que @specialize et @inline(always), ainsi que des améliorations concernant la prise en charge des bibliothèques de macros, la documentation des paquets et les tests. DocC prend désormais en charge la sortie au format Markdown et propose de nouvelles améliorations axées sur l'accessibilité pour la documentation.
Langage et bibliothèque standard
Interopérabilité avec le langage C
Swift 6.3 introduit l'attribut @c, qui permet d'exposer des fonctions et des énumérations Swift au code C au sein d'un même projet. En annotant une fonction ou une énumération avec @c, les développeurs peuvent demandez à Swift d'inclure une déclaration correspondante dans l'en-tête C généré, qu'ils pourront ensuite inclure dans leurs fichiers C/C++ :
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @c func callFromC() { ... }
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Generated C header void callFromC(void);
Les développeurs peuvent définir un nom personnalisé à utiliser pour la déclaration C générée :
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @c(MyLibrary_callFromC) func callFromC() { ... }
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Generated C header void MyLibrary_callFromC(void);
@c fonctionne également en association avec @implementation. Cela permet aux développeurs de fournir une implémentation Swift pour une fonction déclarée dans un en-tête C :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // C header void callFromC(void);
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Implementation written in Swift @c @implementation func callFromC() { ... }
Lorsque l'on utilise @c avec @implementation, Swift vérifie que la fonction Swift correspond à une déclaration préexistante dans un en-tête C, plutôt que d'inclure une déclaration C dans l'en-tête généré.
Sélecteurs de modules
Swift 6.3 introduit les sélecteurs de modules afin de préciser dans quel module importé Swift doit rechercher une API utilisée dans le code. Si un développeur importe plusieurs modules fournissant une API portant le même nom, les sélecteurs de modules permettent de déterminer clairement quelle API utiliser :
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import ModuleA import ModuleB let x = ModuleA::getValue() // Call 'getValue' from ModuleA let y = ModuleB::getValue() // Call 'getValue' from ModuleB
Swift 6.3 permet également d'utiliser le nom de module Swift pour accéder aux API des bibliothèques de concurrence et de traitement des chaînes de caractères :
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let task = Swift::Task { // async work }
Contrôle des performances pour les API de bibliothèques
Swift 6.3 introduit de nouveaux attributs qui permettent aux auteurs de bibliothèques de contrôler plus finement les optimisations du compilateur pour les clients de leurs API :
- Spécialisation des fonctions : fournit des implémentations pré-spécialisées d'une API générique pour des types concrets courants à l'aide de @specialize.
- Inlining : garantit l'inlining — une optimisation du compilateur qui développe le corps d'une fonction au point d'appel — pour les appels directs à une fonction avec @inline(always). Cet attribut ne doit être utilisé que si les avantages de l'inlining l'emportent sur l'augmentation éventuelle de la taille du code.
- Visibilité de l'implémentation d'une fonction : exposition de l'implémentation d'une fonction dans une bibliothèque ABI-stable aux clients à l'aide de @export(implementation). Cela permet à la fonction de bénéficier d'un plus grand nombre d'optimisations du compilateur.
Améliorations apportées aux paquets et à la compilation
Swift 6.3 inclut une version préliminaire de Swift Build intégrée à Swift Package Manager. Cette version préliminaire offre un moteur de compilation unifié sur toutes les plateformes prises en charge, pour une expérience de développement multiplateforme plus cohérente.
Swift 6.3 apporte également les améliorations suivantes au gestionnaire de paquets Swift :
- Syntaxe Swift précompilée pour les bibliothèques de macros partagées : extraire le code d'implémentation des macros partagées dans une bibliothèque prenant en charge les binaires précompilés Swift Syntax dans les bibliothèques utilisées exclusivement par des macros.
- Documentation héritée flexible : contrôler si la documentation héritée est incluse dans les plugins de commande qui génèrent des graphiques de symboles.
- Caractéristiques détectables des paquets : identifier les caractéristiques prises en charge par un paquet à l'aide de la nouvelle commande swift package show-traits.
Mises à jour de la bibliothèque principale
Swift Testing
Swift Testing bénéficie de plusieurs améliorations, notamment en matière d'avertissements, d'annulation des tests et de pièces jointes sous forme d'images.
- Problèmes de type « avertissement » : indiquer le niveau de gravité d'un problème de test à l'aide du nouveau paramètre severity de Issue.record. Les développeurs peuvent enregistrer un problème en tant qu'avertissement à l'aide de Issue.record("Un événement suspect s'est produit", severity: .warning). Cela apparaît dans les résultats du test, mais ne marque pas le test comme un échec.
- Annulation d'un test : annuler un test (et sa hiérarchie de tâches) après son lancement à l'aide de try Test.cancel(). Cette fonctionnalité est utile pour ignorer des arguments individuels d'un test paramétré ou pour réagir à des conditions survenant pendant un test qui indiquent qu'il ne doit pas se poursuivre.
- Pièces jointes d'images : joindre des images de formats courants pendant un test sur les plateformes Apple et Windows. Cette fonctionnalité est accessible via plusieurs nouveaux modules de superposition à importation croisée avec des frameworks d'interface utilisateur tels que UIKit.
DocC
Swift 6.3 ajoute trois nouvelles fonctionnalités expérimentales à DocC :
- Sortie Markdown : générer des versions Markdown des pages de documentation en plus du JSON standard, pour les symboles, les articles et les tutoriels. Cette fonctionnalité peut être testée en passant l'option --enable-experimental-markdown-output à la commande docc convert.
- Contenu HTML statique par page : intégrer un résumé HTML léger de chaque page — comprenant le titre, la description, la disponibilité, les déclarations et la discussion — directement dans le fichier index.html, à l'intérieur d'une balise <noscript>. Cela améliore la visibilité auprès des moteurs de recherche et l'accessibilité pour les lecteurs d'écran, sans nécessiter de JavaScript. Cette fonctionnalité peut être testée en passant les options --transform-for-static-hosting et --experimental-transform-for-static-hosting-with-content à la commande docc convert.
- Annotations des blocs de code : de nouvelles options de mise en forme pour les blocs de code sont disponibles, notamment nocopy pour désactiver la copie dans le presse-papiers, highlight pour mettre en surbrillance des lignes spécifiques par leur numéro, showLineNumbers pour afficher les numéros de ligne, et wrap pour renvoyer à la ligne les lignes trop longues en fonction de la largeur de colonne. Ces options peuvent être spécifiées sous forme de liste séparée par des virgules après le nom du langage, sur la ligne d'ouverture des accolades :
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ```swift, nocopy let config = loadDefaultConfig() ```
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ```swift, highlight=[1, 3] let name = "World" // highlighted let greeting = "Hello" print("\(greeting), \(name)!") // highlighted ```
Code Swift : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ```swift, showLineNumbers, wrap=80 func example() { /* ... */ } ```
DocC valide les indices de ligne et signale les options non reconnues. Les nouvelles annotations de blocs de code peuvent être testées avec l'option --enable-experimental-code-block-annotations.
Plateformes et environnements
Swift embarqué
Swift Embedded bénéficie de nombreuses améliorations dans Swift 6.3, allant d'une interopérabilité renforcée avec le langage C et d'une meilleure prise en charge du débogage à des avancées significatives vers un modèle de liaison complet.
Android
Swift 6.3 inclut la première version officielle du SDK Swift pour Android. Grâce à ce SDK, les développeurs peuvent commencer à créer des applications Android natives en Swift, mettre à jour leurs paquets Swift pour prendre en charge la compilation pour Android, et utiliser Swift Java et Swift Java JNI Core pour intégrer du code Swift dans des applications Android existantes écrites en Kotlin/Java. Il s'agit d'une étape importante qui ouvre de nouvelles perspectives pour le développement multiplateforme en Swift.
« Swift est conçu pour être le langage de prédilection à tous les niveaux de la pile logicielle. Que vous développiez du micrologiciel embarqué, des services à l'échelle d'Internet ou des applications mobiles complètes, Swift offre des garanties de sécurité solides, un contrôle des performances lorsque vous en avez besoin, ainsi que des fonctionnalités de langage et des API riches en expressivité. Swift 6.3 rend ces avantages plus accessibles sur l'ensemble de la pile », a déclaré l'équipe Swift.
Source : Swift 6.3
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous des nouveautés proposées par cette version de Swift ? Les trouvez-vous utiles et intéressantes ?
Voir aussi :
Apple publie Swift 6.2, la dernière version de son langage de programmation open source, avec une concurrence simplifiée, une sécurité améliorée, la prise en charge de WebAssembly et bien plus encore
Swift 6, la nouvelle version majeure du langage de programmation Swift, est disponible, avec une nouvelle bibliothèque Swift Testing et une prise en charge étendue de Linux et de Windows
En route vers Swift 6 : l'équipe en charge du développement de Swift dévoile la nouvelle feuille de route du projet









Quel est votre avis sur le sujet ?
Répondre avec citation
Partager