Accueil Astuces et Informations GCC 13.1 est déjà sorti et voici ses nouveautés

GCC 13.1 est déjà sorti et voici ses nouveautés

2
3
gcc

La collection de compilateurs GNU est un ensemble de compilateurs créés par le projet GNU. GCC est un logiciel libre et est distribué par la Free Software Foundation sous la licence publique générale GPL.

Après un an de développement, la sortie a été annoncée du système de construction populaire “CCG 13.1Il s’agit de la première version importante de la nouvelle branche GCC 13.x.

Sous le nouveau schéma de numérotation des versions, la version 13.0 a été utilisée lors du développement, et peu de temps avant la sortie de GCC 13.1, la branche GCC 14.0 était déjà bifurquée, à partir de laquelle la prochaine version majeure de GCC 14.1 sera formée.

Nouvelles fonctionnalités majeures dans GCC 13.1

Dans cette nouvelle version de GCC 13.1 Il est souligné qu’une interface a été adoptée pour créer des programmes dans le langage de programmation Modula-2, qui prend en charge le code de construction conforme aux dialectes PIM2, PIM3 et PIM4, ainsi qu’à la norme ISO acceptée pour cette langue.

En plus de cela, on note également que a été ajouté à l’arborescence des sources de GCC, une interface avec l’implémentation du compilateur du langage Rust préparée par le projet gccrs (GCC Rust). Dans la vue actuelle, l’interface est marquée comme expérimentale et désactivée par défaut. Une fois l’interface prête (ce qui est attendu dans la prochaine version), la boîte à outils GCC standard peut être utilisée pour compiler des programmes Rust sans avoir besoin d’installer le compilateur rustc construit avec les versions LLVM.

Link-in-Step Optimization (LTO) ajoute la prise en charge d’un jobserver Maintenu par le projet GNU make pour optimiser l’exécution de la construction parallèle sur plusieurs threads. Dans GCC, le serveur de travaux est utilisé pour paralléliser le travail lors de l’optimisation LTO dans le contexte de l’ensemble du programme (WPA, analyse complète du programme).

Un autre changement qui se démarque est que la possibilité de générer des diagnostics au format SARIF a été implémentée basé sur JSON. la nouvelle formule peut être utilisé pour obtenir des résultats d’analyse statique (CCG -fanalyseur), ainsi que des informations sur les avertissements et les erreurs. L’activation se fait avec l’option «-fdiagnostics-format=sarif-stderr|fichier-sarif|json-stderr|json|fichier-json“, où les options avec “json» résulte en une variante spécifique à GCC du format JSON.

Certains ont été mis en œuvre caractéristiques définies dans la norme C23 C, comme la constante nullptr pour définir des pointeurs nuls, facilitant l’utilisation de listes à nombre variable d’arguments (variadiques), étendant les capacités des énumérations, l’attribut retour, permettant l’utilisation de constexpr et auto lors de la définition d’objets, typeof et typeof_unqualnouveaux mots clés alignas, alignof, bool, false, static_assert, thread_local et true, autoriser les parenthèses vides à l’initialisation.

libstdc++ a amélioré la prise en charge expérimentale des normes C++20 et C++23, comme l’ajout de la prise en charge du fichier d’en-tête et std :: format, développer les capacités du fichier d’en-tête ajouter des types à virgule flottante supplémentaires, implémenter et .

Des autres changements qui se démarquent dans cette nouvelle version :

  • Ajout de nouveaux attributs de fonction pour documenter qu’un descripteur de fichier est passé dans une variable entière : “__attribute__((fd_arg(N)))”, “__attribute__((fd_arg_read(N)))” et “__attribute__((fd_arg_write( N))) )) “.
  • Les attributs spécifiés peuvent être utilisés dans un analyseur statique (-fanalyzer) pour détecter un mauvais travail avec les descripteurs de fichiers.
  • Ajout d’un nouvel attribut ” __attribute__((assume(EXPR))) ” qui peut être utilisé pour dire au compilateur qu’une expression est vraie et le compilateur peut utiliser ce fait sans évaluer l’expression.
  • La prise en charge des processeurs STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) et Arm Cortex-M85 (cortex-m85) a été ajoutée au backend de l’architecture ARM.
  • Ajout de la prise en charge des processeurs Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids et AMD Zen 4 (znver4) au backend x86.
  • Les extensions d’architecture de jeu d’instructions proposées AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT et AMX-COMPLEX ont été implémentées dans les processeurs Intel.
  • Pour C et C++ sur des systèmes avec SSE2, le type __bf16 est fourni.
  • Le backend de génération de code pour les GPU AMD Radeon (GCN) implémente la possibilité d’utiliser les accélérateurs AMD Instinct MI200 pour améliorer les performances OpenMP/OpenACC.
  • Vectorisation améliorée à l’aide des instructions SIMD.
  • Les capacités back-end de la plate-forme LoongArch ont été considérablement étendues.
    Ajout de la prise en charge du processeur T-Head XuanTie C906 (thead-c906) sur le backend RISC-V.
  • Prise en charge implémentée des contrôleurs vectoriels définis dans la spécification RISC-V Vector Extension Intrinsic 0.11.
  • Ajout de la prise en charge de 30 extensions de spécification RISC-V.
  • La prise en charge du format de débogage DWARF est implémentée dans presque toutes les configurations.
  • Ajout de l’option “-gz=zstd” pour compresser les informations de débogage à l’aide de l’algorithme Zstandard.
  • Suppression de la prise en charge du mode de compression des informations de débogage obsolète « -gz=zlib-gnu ».

Finalement Si vous êtes intéressé à en savoir plus à ce sujetvous pouvez vérifier les détails dans le lien suivant.