LLVM 17.0 est déjà sorti et voici ses actualités

Logo LLVM

LLVM est un cadre pour développer des compilateurs ainsi que pour aider à créer de nouveaux langages de programmation et à améliorer les langages existants.

Après six mois de développement La nouvelle version de LLVM 17.0 a été présentée, dans lequel diverses améliorations, modifications, corrections de bugs et, surtout, divers aspects importants ont été implémentés dans Clang 17.0.

Pour ceux qui ne connaissent pas LLVM, vous devez savoir que cela est un compilateur compatible GCC (compilateurs, optimiseurs et générateurs de code) qui compile les programmes dans un bitcode intermédiaire d'instruction virtuelle de type RISC (une machine virtuelle de bas niveau avec un système d'optimisation à plusieurs niveaux).

Le pseudocode généré peut être converti par le compilateur JIT en instructions machine juste au moment de l'exécution du programme.

Nouvelles fonctionnalités majeures de LLVM 17.0

Dans cette nouvelle version de LLVM 17.0 qui est présentée, il y a différents aspects pertinents à prendre en compte, parmi lesquels sont, par exemple, le améliorations du backend X86, eh bien, il a ajoutéo prise en charge des extensions Architecture d'ensemble d'instructions ISA SHA512, ISA SM3, ISA SM4 et ISA AVX-VNNI-INT16.

En plus de cela, il met également en évidence le améliorations dans capacités backend pour l'architecture RISC-V qui se sont considérablement développés depuis ajout de la prise en charge du processeur sifive-x280.

Un autre des changements que nous pouvons trouver est le Prise en charge implémentée des extensions de processeur XTH*, ainsi que la compatibilité avec les extensions LSX, LASX, LVZ et LBT ISA au backend de l’architecture LoongArch.

Backends améliorés pour les architectures AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, capacités étendues de l'éditeur de liens LLD et ajout d'une nouvelle commande "register info" au débogueur LLDB pour afficher toutes les informations connues sur un enregistrement.

Concernant les améliorations de Clang 17.0, il convient de souligner que les fonctionnalités définies dans le futur standard C C2x ont été implémentées telles que les mots-clés bool, static_assert, aligns, alignof et thread_local, ainsi que la possibilité de spécifier des crochets vides « {} » pour initialisation aux valeurs nulles.

Le codeo C offre la possibilité de transmettre l'expression "goto" dans les blocs "asm" via des balises indirectement sélectionnées, la prise en charge a été ajoutée pour une extension C qui permet d'utiliser un type au lieu d'une expression comme premier opérande dans "_Generic", en plus de permettre aux expressions constantes en langage C d'utiliser des structures, des unions et les tableaux déclarés avec l'attribut "const".

Concernant les améliorations liées au standard C++20, il est mentionné que désormais Sur toutes les plateformes sauf Windows, il existe une prise en charge complète de Coroutines, De plus, des exigences supplémentaires pour les opérations de comparaison d'expressions constantes ont été implémentées.

Il est également souligné que désormaisL'analyse correcte des modèles lambda est garantie spécifié immédiatement après les paramètres du modèle et contenant une variable avec un type dépendant dans le bloc. Réservé l'utilisation de doubles traits de soulignement dans les littéraux utilisateur et découragé l'utilisation du mot-clé "operator" dans les définitions de fonctions avec des identifiants réservés dans le nom

Quant à la améliorations à apporter par rapport au standard C++23 , il est mentionné qu'il est en phase finale d'approbation par l'ISO, car modification de la portée du type de retour final dans les fonctions lambda regarder d'abord les crochets, puis le texte qui les entoure.

De l' autres changements qui se démarquent:

  • Ajout de la possibilité de définir des tableaux multidimensionnels à l'aide de
  • Lors de la compilation d'applications C++ en utilisant le mode d'optimisation "-O0", la génération de code pour les appels a été améliorée.
  • Ajout de la prise en charge de la variable d'environnement NO_COLOR pour désactiver la couleur de sortie.
  • Les outils d'analyse statique et de diagnostic ont été considérablement étendus, par exemple, de nouveaux contrôles de dépassement d'entier signé, la correction du modèle lambda, les expressions constexpr, les comparaisons de pointeurs nuls, l'utilisation de structures non initialisées, etc.
  • La bibliothèque Libc++ continue d'implémenter la prise en charge des capacités des standards C++20 et C++23, et les travaux ont également commencé pour fournir la prise en charge de la spécification C++26.
  • Ajout de la prise en charge de l'expression « nécessite cplusplus23 » dans les descriptions des connexions entre les fichiers d'en-tête et les modules.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans la 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 : 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.