GCC 11.1 a déjà été publié, ce sont ses nouvelles et changements les plus importants

Après un an de développement, Sortie de la nouvelle version de la suite de compilateurs GCC 11.1, la première version significative de la nouvelle branche GCC 11.x. Sous le nouveau schéma de numérotation des versions, la version 11.0 a été utilisée pendant le développement, et peu de temps avant la sortie de GCC 11.1, une branche de GCC 12.0 avait déjà été fourchue pour former la prochaine version majeure de GCC 12.1.

GCC 11.1 se distingue par la transition vers le format de fichier de débogage par défaut DWARF 5, l'inclusion par défaut du standard C ++ 17 ("-std = gnu ++ 17"), améliorations significatives de la compatibilité avec le standard C ++ 20, support expérimental pour C ++ 23, améliorations liées au futur standard de le langage C (C2x), de nouvelles optimisations de performances.

Nouvelles fonctionnalités principales de GCC 11.1

Le mode par défaut du langage C ++ est modifié pour utiliser la norme C ++ 17, au lieu du C ++ 14 précédemment proposé. Il est possible de désactiver sélectivement le nouveau comportement C ++ 17 lors du traitement de modèles qui utilisent d'autres modèles comme paramètre (-fno-new-ttp-matching).

Ajout de la prise en charge de l'accélération matérielle de l'outil AddressSanitizer, qui vous permet de déterminer les faits relatifs à l'accès aux zones de mémoire libérées, au dépassement des limites de la mémoire tampon allouée et à certains autres types d'erreurs lors de l'utilisation de la mémoire. Actuellement, l'accélération matérielle n'est disponible que pour l'architecture AArch64 et se concentre sur son utilisation lors de la compilation du noyau Linux.

Une autre nouveauté qui est présentée sont les optimisations et améliorations entre les procédures, avec l'ajout d'une nouvelle passe IPA-modref (-fipa-modref) pour suivre les effets secondaires dans les appels de fonction et améliorer la précision de l'analyse. Outre aussi un amélioration de la mise en œuvre du pass IPA-ICF (-fipa-icf), ce qui réduit la consommation de mémoire de compilation et augmente le nombre de fonctions unifiées pour lesquelles des blocs de code identiques sont fusionnés.

El moteur d'optimisation basé sur les profils (OPG), mode "-fprofile-values" amélioré en gardant une trace de plus de paramètres pour les appels indirects.

Aussi La mise en œuvre continue de la norme OpenMP 5.0 est mise en évidence (Open Multi-Processing), dans lequel Ajout de la prise en charge initiale de la directive d'assignation et de la possibilité d'utiliser des boucles non uniformes dans les versions OpenMP. La variable d'environnement OMP_TARGET_OFFLOAD est désormais prise en charge.

La mise en œuvre de la spécification de programmation parallèle OpenACC 2.6 fournie pour les langages C, C ++ et Fortran, qui définit des outils de déchargement des opérations vers des GPU et des processeurs spécialisés tels que NVIDIA PTX, a été améliorée.

Pour les langages de la famille C, un nouvel attribut "no_stack_protector" a été implémenté, conçu pour marquer les fonctions pour lesquelles la protection de pile ne doit pas être activée ("-fstack-protector"). L'attribut "malloc" a été étendu avec la prise en charge de l'identification des paires d'appels à allouer et libérer de la mémoire, qui est utilisé dans l'analyseur statique pour détecter les erreurs de mémoire typiques (fuites de mémoire, utilisation après free, double appels à la fonction libre, etc.) et les avertissements du compilateur "-Wmismatched-dealloc", "-Wmismatched- new-delete" et " -Wfree-nonheap-object "signalant des opérations de désallocation et de désallocation incohérentes.

Lors de la génération des informations de débogage, le format DWARF 5 est utilisé par défaut, ce qui, par rapport aux versions précédentes, permet la génération de données de débogage 25% plus compactes. La prise en charge complète de DWARF 5 nécessite binutils au moins la version 2.35.2.

Fonctionnalités améliorées du mode ThreadSanitizer (-fsanitize = thread), puisque ouie ajoute la prise en charge des environnements d'exécution et des environnements alternatifs, ainsi que la prise en charge de l'outil de débogage Kernel Concurrency Sanitizer (KCSAN) pour détecter dynamiquement les conditions de concurrence dans le noyau Linux. De nouvelles options «–param tsan-distinguer-volatile» et «–param tsan-instrument-func-entry-exit» ont été ajoutées.

Le vectoriseur fournit la comptabilisation de tout le contenu de la fonction et le traitement supplémentaire des capacités associées aux intersections et aux références aux blocs précédents dans l'organigramme de contrôle (CFG).

L'optimiseur a la capacité de convertir une série d'opérations conditionnelles en une expression de changement, dans laquelle la même variable est comparée. À l'avenir, l'expression de changement peut être codée à l'aide d'instructions de test de bits (pour contrôler cette conversion, l'option "-fbit-tests" a été ajoutée).

Pour le C ++, une partie des changements et innovations proposés dans le standard C ++ 20 a été implémentée, notamment les fonctions virtuelles "consteval virtual", pseudo-destructeurs pour terminer le cycle de vie des objets, en utilisant la classe enum et en calculant la taille d'un tableau dans l'expression "nouveau".

Si vous voulez en savoir plus, vous pouvez vérifier les détails dans le lien suivant. 


Laisser un commentaire

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

*

*

  1. Responsable des données: Miguel Ángel Gatón
  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.