Lors de la conférence CppCon 2019 qui se déroule actuellement, Microsoft a annoncé l'ouverture du code de sa mise en œuvre de la bibliothèque standard C++ (STL, C++ Standard Library), qui fait partie de l'ensemble d'outils MSVC et de l'environnement de développement Visual Studio. La bibliothèque met en œuvre les fonctionnalités décrites dans les normes C++14 et C++17 actuelles, et évolue également en vue du support de la future norme C++20, suivant les modifications apportées au brouillon de travail actuel. Le code est sous licence Apache 2.0 avec des exceptions pour les fichiers binaires, résolvant le problème de l'inclusion des bibliothèques d'exécution dans les fichiers exécutables générés.
Le développement de cette bibliothèque est prévu pour continuer en tant que projet ouvert sur GitHub, acceptant les demandes de fusion des développeurs tiers avec des corrections et l'implémentation de nouvelles fonctionnalités (pour participer au développement, il est nécessaire de signer un accord CLA sur le transfert de droits de propriété sur le code transmis). Il est noté que le transfert du développement de la STL sur GitHub permettra aux clients de Microsoft de suivre l'avancement du développement, d'expérimenter les dernières modifications et d'aider à examiner les demandes de nouvelles fonctionnalités.
L'ouverture du code permettra également à la communauté d'utiliser dans d'autres projets des implémentations prêtes des nouvelles normes. Par exemple, la licence du code a été choisie de manière à permettre l'échange de code avec la bibliothèque du projet LLVM. STL et libc++ diffèrent par leur représentation interne des structures de données, mais si souhaité, les développeurs de libc++ peuvent porter des fonctionnalités intéressantes de la STL (comme charconv) ou les deux projets pourront conjointement développer certaines innovations. Les exceptions ajoutées à la licence Apache annulent les exigences de mentionner l'utilisation du produit d'origine lors de la fourniture de fichiers binaires compilés avec la STL aux utilisateurs finaux.
Parmi les objectifs clés du projet, on cite la conformité complète aux spécifications, l'assurance d'une haute performance, la facilité d'utilisation (outils de débogage, de diagnostic, de détection d'erreurs) et la compatibilité au niveau du code source et de l'ABI avec les versions antérieures de Visual Studio 2015/2017. Parmi les domaines que Microsoft n'est pas intéressé à développer figurent le portage sur d'autres plateformes et l'ajout d'extensions non standard.
Source : opennet.ru
