La conférence CppCon 2019 a vu une annonce de taille de la part de Microsoft, dans la suite de son mouvement de libération du code source : la bibliothèque standard de C++ livrée avec Visual C++ est désormais disponible sous une licence libre, précisément la Apache 2.0 (qui est assez permissive). En fait, Microsoft utilise une variante de cette licence, avec l’extension LLVM, qui permet d’ignorer certaines obligations dans le cas où l’on ne redistribue qu’une version compilée (obligation de donner une copie de la licence, d’indiquer les fichiers qui ont été modifiés, etc.) : libcxx, la bibliothèque standard C++ de LLVM/Clang, utilise déjà cette licence, ce qui devrait faciliter le partage de code entre les projets. Tout le code source de cette bibliothèque est disponible et d’ores et déjà compilable avec Visual C++, mais les tests ne sont pas encore inclus.
Cette implémentation de la bibliothèque standard n’envisage pas d’entrer en compétition avec les implémentations fournies par GCC ou Clang, par exemple : le projet de Microsoft n’envisage pas d’être compatible avec d’autres plateformes que celles de Microsoft. Cependant, les développeurs visent une implémentation de haute qualité : conforme avec les normes et très rapide.
La compatibilité binaire est garantie avec les versions 2015 et 2017 de Visual C++ (cette bibliothèque étant celle fournie avec la version 2019), sauf pour les fonctionnalités qui ont été implémentées avant la finalisation de la norme (working papers et technical specifications du comité de normalisation de C++). La branche WCBF02 (toujours interne à Microsoft) contient des changements incompatibles au niveau binaire, mais pas au niveau des sources (pour une mise à jour de la bibliothèque standard, il faudra donc recompiler ses projets, pas simplement changer de DLL). Cette branche contient une série d’améliorations et de corrections et devrait bientôt être disponible publiquement.
Contrairement à certains projets pourtant décrits comme libres, Microsoft encourage à signaler les défauts et à contribuer du code au projet (dans ce cas, il faudra signer un CLA pour donner à Microsoft les droits nécessaires à la redistribution des contributions, notamment au cas où la licence du projet change, une difficulté à laquelle LLVM s’est confronté pendant plusieurs années).
Dans le futur proche, Microsoft devrait ajouter sa suite de tests interne au projet. La liste des défauts remontés en interne est en cours de migration vers GitHub. Pour le moment, la compilation se passe avec MSBuild, mais une migration vers CMake est en cours. Les fonctionnalités de C++20 sont en cours d’implémentation.
On ne devrait pas voir rapidement d’autres composants de Visual C++ arriver sous licence libre. Microsoft justifie ce choix en indiquant que la bibliothèque standard C++ est assez indépendante du compilateur (contrairement à la bibliothèque standard C, par exemple) et qu’elle évolue très vite par rapport aux autres composants du compilateur.
Télécharger le code source.
Source : Open Sourcing MSVC’s STL.
Partager