Le framework Foundation fournit une couche de base de fonctionnalités pour les applications et les frameworks, notamment le stockage et la persistance des données, le traitement de texte, le calcul de la date et de l'heure, le tri et le filtrage, et la mise en réseau. Les classes, protocoles et types de données définis par Foundation sont utilisés dans l'ensemble des SDK macOS, iOS, watchOS et tvOS. Selon Apple, le framework Foundation est utilisé dans presque tous les projets Swift. Il fournit un grand nombre d'abstractions omniprésentes, notamment NSObject, NSString, NSArray et NSDictionary, et bien d'autres encore.
En somme, le framework Foundation est conçu avec ces objectifs en tête :
- fournir un petit ensemble de classes utilitaires de base ;
- faciliter le développement de logiciels en introduisant des conventions cohérentes ;
- prendre en charge l'internationalisation et la localisation, afin de rendre les logiciels accessibles aux utilisateurs du monde entier ;
- fournir un certain niveau d'indépendance vis-à-vis du système d'exploitation, afin d'améliorer la portabilité.
Apple a annoncé la semaine dernière la réécriture complète en Swift du framework Foundation. L'équipe chargée de la réécriture a annoncé que cette nouvelle version sera open source. Écrit à l'origine en Objective-C, et s'inspirant la de ses propriétés dynamiques, Foundation peut actuellement être utilisé dans les applications Swift qui s'exécutent sur les systèmes d'exploitation Apple grâce à l'interopérabilité de Swift avec le runtime Objective-C. Ce n'est cependant pas une option pour d'autres plateformes où Swift est pris en charge, mais où seul le runtime Objective-C original de GNUstep est disponible, comme Linux.
Pour contourner cette limitation, lorsqu'Apple a mis Swift en libre accès, il a construit swift-corelibs-foundation, un wrapper Swift autour de Core Foundation, une API C de plus bas niveau qui se trouve au cœur de Foundation et qui fournit des abstractions toll-free bridged qui correspondent à Foundation, y compris CFString, CFDictionary et ainsi de suite. Selon l'équipe, la réécriture en Swift sera l'occasion de réarchitecturer le framework Foundation. Pour l'instant, cinq paquets distincts sont conçus, dont FoundationEssentials, FoundationInternationalization, FoundationNetworking, FoundationXML et FoundationObjCCompatibility.
Cela permettra aux développeurs de n'intégrer que les dépendances dont ils ont réellement besoin pour une application spécifique. Par exemple, un u développeur qui part de zéro et qui souhaite couper tous les liens avec la couche Darwin Foundation peut se passer complètement de la couche de compatibilité Obj-C. Apple intervertit ainsi l'ordre entre les couches C, Objective-C et Swift et fait de la couche Swift la base de Foundation sur toutes les plateformes. Cela permettra de supprimer un certain nombre de fonctionnalités qui sont actuellement fournies directement par le langage et la bibliothèque standard Swift.
Il y a notamment NSCoding et NSKeyedArchiver, remplacés par Codable, ou Lock, OperationQueue. Cette réécriture également de supprimer d'autres primitives de concurrence qui sont remplacées par la concurrence structurée Swift. Ces fonctionnalités seront toutefois fournies par un paquet séparé disponible sur la plateforme Darwin afin d'assurer la compatibilité avec le code existant. Tony Parker, ingénieur chez Apple, a expliqué : « avec une implémentation native Swift de Foundation, le framework ne paie plus les coûts de conversion entre C et Swift, ce qui se traduit par des performances plus rapides ».
Il a précisé que les implémentations multiples de toute API risquent d'entraîner des comportements divergents et, au final, des bogues lors du déplacement du code entre les plateformes. Ainsi, ce nouveau package Foundation servira de noyau à une implémentation unique et canonique de Foundation, quelle que soit la plateforme. « Les projets open source sont à leur meilleur lorsque la communauté des utilisateurs peut participer et devenir une communauté de développeurs. Un nouveau processus de contribution ouvert sera disponible pour permettre à tous les développeurs de contribuer aux nouvelles API de Foundation », a-t-il déclaré.
L'annonce a suscité de nombreux commentaires sur les forums Swift, la plupart d'entre eux faisant allusion à la nécessité de repenser plusieurs API existantes et de faire en sorte que les types Swift, tels que Codable, ou la concurrence structurée soient suffisamment puissants pour remplacer entièrement les types Obj-C qui doivent être supprimés de la couche centrale de Foundation. La réécriture de Foundation est vraisemblablement un effort à moyen terme pour lequel aucun calendrier n'a encore été annoncé. Apple invite la communauté Swift à se joindre à la discussion pour définir son avenir.
Source : Apple
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi
Chris Lattner, le créateur du langage de programmation Swift utilisé par Apple, annonce son départ du projet. Il évoque un environnement de réunions toxiques avec la direction du projet
Apple publie la version 5.5 de Swift avec le mot-clé async pour corriger la "pyramide condamnée", ainsi que d'autres changements dans une "version massive"
Swift Playgrounds pour iPadOS 15 permet de créer des applications sur iPad et de les soumettre à l'App Store, il bénéficie également d'améliorations apportées aux fonctions d'accessibilité in-app
Swift System est désormais open source, d'après Apple qui annonce aussi la prise en charge de Linux pour la bibliothèque de programmation bas niveau, destinée à faire oublier certaines tares du C