IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

GCC 16 améliore les diagnostics avec des erreurs C++ plus claires et une sortie HTML


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Communiqués de presse

    Femme Profil pro
    Traductrice Technique
    Inscrit en
    Juin 2023
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Traductrice Technique

    Informations forums :
    Inscription : Juin 2023
    Messages : 2 912
    Par défaut GCC 16 améliore les diagnostics avec des erreurs C++ plus claires et une sortie HTML
    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

    GCC 16 introduit 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 et une analyse statique améliorée pour la détection des erreurs d'exécution. Présentées par David Malcolm de Red Hat, ces mises à jour visent à rationaliser le débogage et à stimuler la productivité des développeurs dans le cadre de projets complexes.

    La GNU Compiler Collection (GCC) est une collection de compilateurs 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 qui est 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 la croissance des logiciels libres, à la fois comme outil et comme exemple.

    Dans le monde en constante évolution du développement logiciel, la GNU Compiler Collection (GCC) continue de repousser les limites, avec sa prochaine version 16 qui devrait introduire des améliorations significatives aux outils de diagnostic qui pourraient remodeler la façon dont les développeurs déboguent et optimisent le code. Selon un rapport récent, ces mises à jour s'appuient sur des années d'améliorations itératives, en mettant l'accent sur des messages d'erreur et d'avertissement plus clairs et plus exploitables. Au cœur de ces progrès se trouve David Malcolm, un ingénieur de Red Hat réputé pour ses contributions au cadre de diagnostic de GCC, qui a dévoilé les détails lors de sa présentation au GNU Tools Cauldron 2025 à Porto, au Portugal.

    Les améliorations ciblent des domaines clés tels que les diagnostics C++, où GCC 16 vise à fournir des commentaires plus précis sur les structures de code complexes, réduisant ainsi la frustration souvent associée à la programmation intensive en modèles. Il ne s'agit pas seulement de changements cosmétiques, mais aussi de doter les développeurs d'outils qui accélèrent le dépannage dans les projets à grande échelle, des applications d'entreprise aux noyaux open source.

    Nom : 1.jpg
Affichages : 10947
Taille : 67,7 Ko

    Sortie HTML : une révolution pour l'analyse visuelle

    L'une des fonctionnalités remarquables de GCC 16 est la prise en charge expérimentale de la sortie des diagnostics au format HTML, une initiative qui promet de rendre l'analyse des erreurs plus interactive et plus conviviale. Cette option permet aux compilateurs de générer des rapports richement formatés, avec des hyperliens, des surlignages codés par couleur et des extraits de code intégrés, ce qui permet aux développeurs de naviguer parmi les problèmes aussi facilement que sur une page web. Activée via un indicateur spécifique, cette sortie HTML se positionne comme une alternative supérieure pour la révision post-compilation, en particulier dans les environnements d'équipe où le partage des données de diagnostic est crucial.

    En complément, GCC 16 abandonne progressivement son ancienne sortie JSON pour les diagnostics au profit de la norme SARIF (Static Analysis Results Interchange Format), qui offre une meilleure interopérabilité avec les outils modernes d'analyse de code. Comme l'a expliqué Malcolm dans son exposé, cette évolution reflète une tendance plus large de l'industrie vers des formats standardisés et lisibles par machine qui s'intègrent de manière transparente aux pipelines d'intégration continue.

    Améliorations de l'analyse statique et au-delà

    En approfondissant la question, les mises à jour s'étendent à l'option -fanalyzer, qui alimente les capacités d'analyse statique de GCC. Les améliorations en cours dans ce domaine comprennent une meilleure détection des erreurs d'exécution potentielles, telles que les déréférencements de pointeurs nuls ou les débordements de tampon, avec des diagnostics qui intègrent désormais davantage d'informations contextuelles comme les chemins d'exécution. Ces améliorations sont particulièrement importantes pour les logiciels critiques pour la sécurité dans des secteurs tels que l'aérospatiale et l'automobile, où la détection précoce des bogues peut éviter des pannes coûteuses.

    De plus, libdiagnostics, la bibliothèque sous-jacente qui gère le rendu des sorties de GCC, bénéficie de mises à niveau qui améliorent sa flexibilité. Les développeurs peuvent s'attendre à des comportements de diagnostic plus personnalisables, permettant des flux de travail sur mesure qui s'alignent sur les besoins spécifiques des projets, qu'il s'agisse de systèmes embarqués ou de calcul haute performance.

    Nom : 2.jpg
Affichages : 2640
Taille : 67,1 Ko

    Implications pour l'écosystème des développeurs

    Pour les initiés du secteur, ces changements témoignent de la volonté de GCC de rester compétitif face à des compilateurs tels que Clang. En privilégiant la facilité d'utilisation, grâce à des fonctionnalités telles que les sorties HTML et le traitement raffiné du C++, GCC 16 pourrait réduire les obstacles pour les nouveaux venus tout en permettant aux vétérans de s'attaquer à des bases de code de plus en plus complexes. Le travail de Malcolm met en évidence l'investissement de Red Hat dans les outils open source, ce qui pourrait influencer l'évolution des diagnostics dans d'autres compilateurs.

    À l'avenir, la sortie complète de GCC 16 l'année prochaine devrait stimuler son adoption dans les distributions Linux et au-delà, favorisant ainsi un écosystème plus robuste. Bien que des défis subsistent, tels que la garantie de la rétrocompatibilité, ces révisions diagnostiques positionnent GCC comme un pilier avant-gardiste dans le domaine du génie logiciel.

    Source : David Malcolm au GNU Tools Cauldron 2025

    Et vous ?

    Pensez-vous que cette amélioration est crédible ou pertinente ?
    Quel est votre avis sur le sujet ?

    Voir aussi :

    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

    Le projet Safe C++, visant à doter le langage d'un modèle de sécurité inspiré de Rust, est mis de côté pour donner la priorité aux « Profils ». Une alternative controversée proposée par le créateur du langage

    GCC 15 arrive : COBOL et Itanium sont intégrés, tandis qu'ALGOL-68 est jugé inadapté à l'ère moderne. Les langages modernes doivent allier solidité technique et réponse aux besoins concrets
    Publication de communiqués de presse en informatique. Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 502
    Billets dans le blog
    1
    Par défaut
    Les suggestions du compilateur (en cas d'erreur ou de warning) est une fonctionnalité que j'apprécie énormément en Rust. Je trouve ça cool de retrouver la même chose en C et C++.

  3. #3
    Chroniqueur Actualités
    Avatar de Anthony
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2022
    Messages
    2 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2 215
    Par défaut Le compilateur GCC 16 utilise désormais C++20 par défaut pour la compilation C++
    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 compilation

    Le 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
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

Discussions similaires

  1. [GUI] Gestion des messages d'erreurs
    Par agent007se dans le forum C++
    Réponses: 11
    Dernier message: 28/07/2006, 20h52
  2. gestion des messages d'erreurs
    Par keibenoit dans le forum Access
    Réponses: 2
    Dernier message: 31/05/2006, 14h49
  3. chercher la signification des messages d'erreurs
    Par von_magnus dans le forum Général Python
    Réponses: 8
    Dernier message: 22/05/2006, 09h58
  4. Réponses: 4
    Dernier message: 11/05/2006, 11h28
  5. Configurer la langue des messages d'erreur
    Par Invité dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/09/2005, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo