GCC 12.1 est déjà sorti, découvrez son actualité et son 35e anniversaire

Logo GNU CCG

Le lancement de la nouvelle version du compilateur GCC (Collection de compilateurs GNU) 12.1 est déjà sorti et comme pour toutes les versions majeures de GCC, cette version apportera de nombreux ajouts, améliorations, corrections de bogues et nouvelles fonctionnalités, et ce mois-ci (23 mai), le projet fêtera 35 ans depuis la formation de la première version.

GCC 12 est déjà le compilateur système pour Fedora 36, ​​et GCC 12 sera également disponible sur Red Hat Enterprise Linux dans Red Hat Developer Toolset (version 7) ou Red Hat GCC Toolset (versions 8 et 9).

Les développeurs de GCC sont fiers d'annoncer une autre version majeure de GCC, 12.1.

Cette année, nous célébrons le 35e anniversaire de la première version bêta de GCC
Et ce mois-ci, nous fêterons les 35 ans de la sortie de GCC 1.0 !

Cette version supprime la prise en charge du format de débogage STABS et
introduit la prise en charge du format de débogage CTF [1]. Le C et le C++
les interfaces continuent de progresser avec une prise en charge étendue des fonctionnalités
dans les prochaines normes C2X et C++23 et la bibliothèque standard C++
améliore la prise en charge des parties expérimentales de C++20 et C++23.
L'interface Fortran est désormais entièrement conforme à la norme TS 29113 pour l'interopérabilité avec C.

Quoi de neuf dans GCC 12.1 ?

Dans cette nouvelle version Plusieurs propositions ont été mises en œuvre, comme pour les langues C et C++, ajoutés une fonction intégrée __builtin_dynamic_object_size pour déterminer la taille d'un objet, compatible avec une fonction similaire de Clang.

Ajoutée prise en charge de l'attribut "unavailable" pour les langages C et C++ (par exemple, vous pouvez marquer les fonctions qui entraîneront une erreur lorsqu'elles sont utilisées), ainsi que la prise en charge des directives de prétraitement "#elifdef" et "#elifndef" pour les langages C et C++.

On note également que le Drapeau "-Wbidi-chars" pour avertir si les caractères UTF-8 sont mal utilisés, modifiant l'ordre d'affichage bidirectionnel du texte, ainsi que l'indicateur "-Warray-compare" pour émettre un avertissement lors de la tentative de comparaison de deux opérandes faisant référence à des tableaux.

De plus, le jeImplémentation des standards OpenMP 5.0 et 5.1 (Open Multi-Processing), qui définissent des API et des méthodes pour appliquer des méthodes de programmation parallèle sur des systèmes multicœurs et hybrides (CPU + GPU / DSP) à mémoire partagée et unités de vectorisation (SIMD), a été poursuivi.

Également amélioration de la mise en œuvre de la spécification de programmation parallèle OpenACC 2.6, définir les moyens de décharger les opérations sur les GPU et les processeurs spécialisés tels que NVIDIA PTX et ajouter la prise en charge des instructions étendues Intel AVX512-FP16 et du type _Float16 au backend de génération de code x86.

Le frontal Fortran fournit un support complet pour la spécification TS 29113, qui décrit les possibilités d'assurer la portabilité entre Fortran et le code C.

Prise en charge obsolète du format de stockage des informations de débogage "STABS" créé dans les années 1980.

Ajout de la prise en charge de l'extension __builtin_shufflevector(vec1, vec2, index1, index2, …) précédemment ajoutée à Clang, qui fournit un seul appel pour effectuer des opérations de mélange et de mélange de vecteurs communs.

Lors de l'utilisation du niveau d'optimisation "-O2", la vectorisation est activée par défaut (les modes -ftree-vectorize et -fvect-cost-model=very-cheap sont activés). Le modèle "très bon marché" n'autorise la vectorisation que si le code vectoriel peut remplacer complètement le code scalaire vectorisable.

Ajout du mode "-ftrivial-auto-var-init" pour activer l'initialisation explicite des variables sur la pile afin de détecter les problèmes et de bloquer les vulnérabilités associées à l'utilisation de variables non initialisées.

Ajouté le implémentation des fonctions C intégrées au compilateur (Intrinsics) pour le chargement atomique et le stockage des données en mémoire, basé sur l'utilisation d'instructions ARM étendues (ls64). Ajout de la prise en charge de l'accélération des fonctions memcpy, memmove et memset à l'aide de l'extension ARM mopoption.

Ajoutée un nouveau mode de vérification "-fsanitize=shadow-call-stack" ( ShadowCallStack ), qui n'est actuellement disponible que pour l'architecture AArch64 et fonctionne lors de la compilation de code avec l'option "-fixed-r18". Le mode offre une protection contre la réécriture de l'adresse de retour de la fonction en cas de débordement de la mémoire tampon de la pile. L'essence de la protection est de sauvegarder l'adresse de retour dans une pile « fantôme » séparée après le transfert de contrôle à la fonction et de récupérer cette adresse avant de quitter la fonction.

source: https://gcc.gnu.org/pipermail


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.