GCC est une collection de compilateurs créés par le projet GNU. Il s’agit plus exactement d’un logiciel libre capable de compiler divers langages de programmation, dont C, C++, Objective-C, Java, Ada et Fortran. Il faut également noter qu’il est utilisé pour le développement de la plupart des logiciels libres. La dernière version majeure du compilateur remonte à mai 2018, la version 8.1. Jakub Jelinek, développeur chez Red Hat avait expliqué que GCC 8.1 représentait une version majeure apportant de nouvelles fonctionnalités importantes non disponibles dans GCC 7.x et les versions précédentes de GCC. À ce stade, le front-end C++ a apporté un support expérimental pour certaines fonctionnalités de la norme C++2a avec les options -std=c++2a et -std=gnu++2a.
La version 8.2 a été publiée en juillet 2018 pour des raisons de correction de bogues. Dans la version 8.2, l'équipe GCC a corrigé une centaine de bogues tout en apportant d'autres améliorations. Au niveau des améliorations générales, les problèmes de performance LTO (link-time optimization ou optimisation à l'édition des liens) dus à un débordement dans l'algorithme de partitionnement lors de la création de gros fichiers binaires ont été corrigés. Les corrections ont continué dans la branche 8.x avec la sortie de la version 8.3 du compilateur en février dernier. Cette version a été une version de correction de bugs contenant des correctifs pour les régressions dans GCC 8.2 par rapport aux versions précédentes de GCC. L’équipe de GCC a lancé une nouvelle branche le 3 mai en publiant la version 9.1 de GCC qui a été présentée comme une mise à jour majeure du compilateur.
Dans cette nouvelle version, le support pour la prise en charge de C++ 17 introduite depuis la version 8.1 du compilateur n’est plus expérimental. Ainsi, la prise en charge de C++ 17 est désormais effective. Le frontal C++ implémente l’ensemble du langage C++ 17 et le support de la bibliothèque standard C++ est presque terminé. Le front-end et la bibliothèque C++ ont également de nombreuses autres fonctionnalités brouillonnes de C++ 2a. En plus, GCC a une nouvelle interface pour le langage D et prend désormais en charge partiellement OpenMP 5.0 et intègre presque complètement le support pour OpenACC 2.5. Parmi les nombreuses nouveautés de GCC 9.1, on peut citer :
- la prise en charge d’un support pour la compilation de code écrit avec le langage de programmation D ;
- un nouveau back-end ciblant les GPU AMD GCN a été ajouté à GCC. L'implémentation est actuellement limitée à la compilation de programmes autonomes à un seul thread. Les futures versions ajouteront un support pour le déchargement des noyaux multithreads via OpenMP et OpenACC ;
- LRA est maintenant activé par défaut pour la cible ARC. Cela peut être contrôlé par -mlra ;
- ajout d’un support pour les instructions de densité de code d'image et de branche et index ;
- ajout d’un nouveau back-end ciblant les processeurs C-SKY V2 a été ajouté à GCC ;
- la prise en charge d'Intel MPX (Memory Protection Extensions) a été supprimée ;
- un nouveau back-end pour la prise en charge des processeurs OpenRISC a été ajouté ;
- la prise en charge de la spécification OpenACC 2.5 est presque complète ;
- la suite interne “selftest” de GCC fonctionne maintenant pour C++ ainsi que C (dans les versions de débogage du compilateur) ;
- la prise en charge de Fortran dans GCC a également été améliorée. Elle gère désormais les E/S asynchrones et d’autres fonctionnalités ;
- optimisations interprocédures (IPO), optimisations basées sur les profils, optimisations de temps de liaison (LTO), ainsi que de nombreuses autres optimisations visant à garantir une meilleure qualité de code ;
- le temps de compilation global de Firefox 66 et LibreOffice 6.2.3 sur une machine à 8 cœurs a été réduit d’environ 5 % par rapport à GCC 8.3. La taille des fichiers d'objet LTO est réduite de 7 %. Le temps de liaison de LTO s’améliore de 11 % sur les machines à 8 cœurs et évolue considérablement pour des environnements de construction plus parallèles. L'étape en série de l'optimisation du temps de liaison est 28 % plus rapide et consomme 20 % de mémoire en moins. Parallel Stage partitionne maintenant 128 partitions au lieu de 32 et réduit l'utilisation de la mémoire pour chaque utilisateur de 30 % ;
- une nouvelle option “-fdiagnostics-format = json” a été introduite pour l'émission de diagnostics dans un format lisible par machine ;
- etc.
Pour beaucoup, GCC 9 est une version solide du compilateur qui apporte des fonctionnalités et des améliorations très importantes afin d’améliorer les performances des développeurs.
Source : GCC
Et vous ?
Que pensez-vous des nouveautés apportées dans le version 9.1 du compilateur GCC ?
Voir aussi
GCC 9 sera la première version stable du compilateur à supporter le langage D, un nouveau front-end allonge la liste
GCC 8.1 est disponible, la nouvelle version majeure du compilateur libre vient avec un support expérimental de C++2a et d'autres fonctionnalités
GCC 8.2 est disponible. Cette mise à jour du compilateur libre corrige une centaine de bogues
GCC : la version 7.3 du compilateur libre est disponible avec des correctifs pour la vulnérabilité Spectre pour les dispositifs x86 et powerpc