Le compilateur GCC 16 utilise désormais C++20 par défaut pour la compilation C++, apportant les nouvelles fonctionnalités de C++23 et C++26, et oblige les utilisateurs des anciennes normes à mettre à jour leurs paramètres de compilationLe compilateur GCC 16 utilise désormais C++20 par défaut pour la compilation C++, intégrant les nouvelles fonctionnalités des normes C++23 et C++26. Ce changement oblige les projets s'appuyant sur des normes plus anciennes à spécifier explicitement des paramètres de compilation, comme -std=c++17. Cette version introduit également la prise en charge expérimentale d'Algol 68, ainsi que des mises à jour majeures des diagnostics GCC, notamment concernant la sortie HTML et la génération de rapports SARIF détaillés.
La GNU Compiler Collection (GCC ; anciennement GNU C Compiler) est une suite de compilateurs issue du projet GNU qui prend en charge divers langages de programmation, architectures matérielles et systèmes d'exploitation. La Free Software Foundation (FSF) distribue GCC en tant que logiciel libre sous licence GNU General Public License (GNU GPL). GCC est un composant clé de la chaîne d'outils GNU, utilisée pour la plupart des projets liés à GNU et au noyau Linux. Avec environ 15 millions de lignes de code en 2019, GCC est l'un des plus grands programmes libres existants. Il a joué un rôle important dans le développement du logiciel libre, à la fois en tant qu'outil et en tant qu'exemple.
Ce changement vient compléter une série d'améliorations du compilateur axées sur les diagnostics et la qualité du code. En octobre 2025, David Malcolm, un ingénieur de Red Hat, a révélé que GCC 16 apportait des améliorations majeures en matière de diagnostic, notamment des messages d'erreur C++ plus clairs, une sortie HTML expérimentale pour les rapports interactifs, le passage au format SARIF, ainsi qu'une analyse statique améliorée permettant de détecter les erreurs d'exécution. Selon lui, ces mises à jour visent à rationaliser le débogage et à stimuler la productivité des développeurs lors de la réalisation de projets complexes.
C++20 est une version de la norme ISO/IEC 14882 relative au langage de programmation C++. C++20 a remplacé la version précédente de la norme C++, appelée C++17, et a ensuite été remplacée par C++23. La norme a été techniquement finalisée par le WG21 lors de la réunion de Prague en février 2020, sa version préliminaire finale a été annoncée en mars 2020, elle a été approuvée le 4 septembre 2020 et publiée en décembre 2020.
Le compilateur GCC 16 utilise désormais C++20 par défaut pour la compilation C++, apportant ainsi les nouvelles fonctionnalités de C++26 et C++23, et oblige les utilisateurs qui s'appuient sur des normes plus anciennes à mettre à jour leurs paramètres de compilation.
Suite aux discussion parmi les développeurs de GCC concernant le passage à C++20 par défaut pour le compilateur GCC, en tant que norme C++ par défaut en l'absence d'autre configuration, ce changement a bel et bien été mis en œuvre. La modification qui fait désormais de C++20 (ou plutôt du dialecte GNU++20) la norme par défaut, plutôt que C++17/GNU++17, en l'absence d'autre spécification lors de la compilation de code C++, a été intégrée.
Les développeurs de GCC avaient constaté que leur propre base de code n'était pas encore entièrement compatible avec C++20, mais ils ont intégré des corrections afin que GCC 16 puisse fonctionner sans problème avec les paramètres par défaut de C++20. Le commit a permis de passer à C++20 (GNU++20) par défaut, en remplacement de C++17. D'autres corrections apportées dans le dépôt Git de GCC ont permis de résoudre les problèmes liés à C++20 dans le code source du compilateur.
Ce changement risque cependant d'entraîner des problèmes de compilation pour les bases de code C++ qui ne sont pas encore compatibles avec C++20. Si le code d'un utilisateur repose sur des versions antérieures de la norme C++, il devra soit ajouter l'option -std= à ses paramètres de compilation, soit porter son code. Il convient de noter que la prise en charge des modules C++20 est encore expérimentale et doit être activée par -fmodules. Les projets open source qui effectuent régulièrement des tests sur la branche Git de GCC disposent toutefois de quelques temps pour s'assurer que leurs bases de code sont compatibles avec C++20 ou pour ajouter par exemple l'option -std=c++17 à leur système de compilation.
GCC 16 intègre également un compilateur Algol 68 expérimental, ga68. Celui-ci vise à implémenter le langage tel qu'il est décrit dans le « Revised Report », y compris toutes les errata approuvées par le sous-comité de soutien à Algol 68 de l'IFIP WG2.1. Certaines extensions GNU ainsi qu'un prélude POSIX sont également implémentés.
Les diagnostics GCC bénéficient également de mises à jour majeures, notamment la sortie HTML et la génération de rapports SARIF détaillés. GCC peut désormais générer des rapports de diagnostic au format HTML via l'option -fdiagnostics-add-output=experimental-html. Tandis que la sortie SARIF de GCC tient maintenant compte du répertoire de sauvegarde.
Cette version apporte finalement des améliorations significatives en matière de prise en charge du langage, de compatibilité matérielle et d'API de calcul parallèle.
Source : GCC 16
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous des nouveautés proposées par cette version de GCC ? Les trouvez-vous utiles et intéressantes ?Voir aussi :
GCC 16 introduit des améliorations en matière de diagnostic, notamment des messages d'erreur C++ plus clairs, une sortie HTML expérimentale pour les rapports interactifs et une analyse statique améliorée
La version 15.1 de GCC est disponible avec un compilateur COBOL, un meilleur support pour les langages de programmation C, C++ et Rust, ainsi que de nombreuses autres améliorations
GCC 13 se dote de nouvelles fonctionnalités dans la partie frontale du langage C pour le rendre plus proche du C++, et faire en sorte que la programmation en C soit plus facile et plus sûre
Vous avez lu gratuitement 72 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.