GCC 8.2 est disponible
Cette mise à jour du compilateur libre corrige une centaine de bogues

Le , par Michael Guilloux, Chroniqueur Actualités
L'équipe GCC vient d'annoncer la sortie de GCC 8.2, la première mise à jour de GCC 8.x après la sortie de la version stable (8.1) début mai. Rappelons que GCC (GNU Compiler Collection) 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, et il est utilisé pour le développement de la plupart des logiciels libres.

Avec la version 8.1 de GCC, le front-end C++ a introduit un support expérimental de certaines fonctionnalités de la prochaine norme C++2a, avec les options -std=c++2a et -std=gnu++2a, et la bibliothèque libstdc++ a implémenté des fonctionnalités supplémentaires de C++17 et C++2a. GCC 8.1 a aussi apporté des améliorations significatives dans les diagnostics émis. Les optimisations guidées par profil (PGO) ont également été considérablement améliorées, à côté d'autres optimisations de compilateur. La liste des nouveautés de cette version majeure s'étendait, sans s'y limiter, à :

  • une amélioration du support de znver1 d'AMD : des patchs ont été apportés au compilateur GNU pour les processeurs Ryzen / Threadripper / EPYC, ce qui permet d'obtenir de meilleures performances sur ces processeurs ;

  • le support de Cannonlake, le processeur Intel de nouvelle génération succédant à Coffee Lake / Kaby Lake Refresh ;

  • un support initial pour Intel Icelake, la génération de processeurs qui va succéder à Cannonlake. Cela inclut les instructions GFNI (Galois Field Affine Transformation) et plus encore ;

  • le support d'Intel CET (Control-flow Enforcement Technology) pour une meilleure sécurité. La technologie Control-flow Enforcement vise en effet à empêcher les attaques de type return-oriented programming (ROP) et call-jump-oriented programming (COP/JOP). La ROP, par exemple, est une technique d'exploitation avancée de type dépassement de pile permettant l'exécution de code par un attaquant, et ce en s'affranchissant plus ou moins efficacement des mécanismes de protection tels que l'utilisation de zones mémoires non exécutables, l'utilisation d'un espace d'adressage aléatoire ou encore la signature de code ;

  • le support du CPU Qualcomm Saphira. Saphira est le successeur de Falkor, une microarchitecture ARM conçue par Qualcomm pour le marché des serveurs ;

  • un support initial du langage C17, qui sera bientôt disponible sous forme de mise à jour du langage de programmation C. Il s'agit plus précisément d'une « version de correction de bogue » à la norme C11. Pour préparer GCC à l'arrivée de C17, fin octobre, il a été publié un patch initial introduisant C17/GNU17 et faisant de C17/GNU17 le nouveau standard par défaut pour le front-end du compilateur C ;

  • la prise en charge de l'architecture Armv8.4-A. Elle peut être utilisée en spécifiant l'option -march=armv8.4-a ;

  • l'ajout du support pour les processeurs ARM Cortex-A75 et ARM Cortex-A55 ;

  • une implémentation complète des packages utilisateur de Go 1.10.1 ;

  • l'amélioration du support AMD HSA IL / BRIG avec de meilleures performances et plus de stabilité ;

  • la suppression du support de Cilk Plus. Intel déconseillait déjà le support multithreading de Cilk Plus avec GCC 7 et il est maintenant supprimé dans la première version stable de GCC 8 ;

  • une amélioration du back-end du compilateur Nios II pour générer du code plus optimisé ;

  • etc.


Dans la version 8.2, l'équipe GCC corrige une centaine de bogues, en plus d'apporter d'autres améliorations. Au niveau des améliorations générales, il faut noter que 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.

Il y a aussi des changements spécifiques au langage C++. Plus précisément, GCC 8.2 corrige un bogue introduit dans GCC 8.1 ; lequel bogue affecte le passage ou le retour de classes avec un constructeur de copie supprimé et un constructeur de déplacement trivial par défaut. GCC 8.2 introduit -fabi-version=13 et en fait la valeur par défaut. Rappelons que fabi-version indique au compilateur de sélectionner une implémentation ABI spécifique. Notons aussi que les incompatibilités ABI entre GCC 8.1 et 8.2 peuvent être signalées avec -Wabi=12.

Entre autres changements, soulignons encore que sur les plateformes IA-32/x86-64, la régression de performance de -mtune=native sur Intel Skylake a été corrigée.

Source : Changements dans GCC 8.2

Et vous ?

Utilisez-vous le compilateur GCC ? À quelles fins ?
Sinon, quelles alternatives utilisez-vous ? Pourquoi ?
Que pensez-vous de cette mise à jour de GCC ? Qu’attendez-vous des prochaines versions ?

Voir aussi :

GCC : la version 7.3 du compilateur libre est disponible avec des correctifs pour la vulnérabilité Spectre pour les dispositifs x86 et powerpc
GCC 8.1, la nouvelle version majeure du compilateur libre sera disponible début 2018 : un aperçu des fonctionnalités et changements attendus
Le projet GNU annonce l'intégration du langage de programmation D dans GCC, qui vient s'ajouter au C, C++, Objective-C, Java, Ada et Fortran
Sortie de GCC 7.1, le compilateur libre peut décharger du code OpenMP sur la plateforme AMD HSA et sur les cartes graphiques NVIDIA


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Contacter le responsable de la rubrique Accueil