La nouvelle version de LLVM et de Clang est sortie. Alors que LLVM fournit l'infrastructure générique d'un compilateur, Clang fait l'interface avec du code C, C++ et Objective-C. Cette version apporte notamment une implémentation finalisée de la génération de code pour RISC-V, l'architecture libre de processeur — auparavant, elle était marquée comme expérimentale. LLVM étant très utilisé pour développer des interpréteurs et compilateurs pour des langages divers et variés (comme Julia), le projet se doit d'avoir une excellente interface de programmation : outre deux nouveaux points d'extension pour l'optimisation du code lors de l'édition des liens (LTO), l'interface ORCJIT a été révisée. La version actuelle reste disponible, mais son emploi est découragé, au profit de la nouvelle version, largement améliorée pour une utilisation parallèle.
Au niveau des plateformes, le code assembleur peut désormais directement accéder à de nombreuses instructions ARM supplémentaires : SVE2 (scalable vector extension) et MVE (M-profile vector extension) pour l'exécution en simultané d'une même instruction sur plusieurs données, MTE (memory tagging extension) pour indiquer quelles parties de la mémoire peuvent être écrites et ainsi limiter les risques de sécurité. LLVM intègre aussi un modèle plus complet du processeur Cortex-M4, pour générer du code plus performant.
Au niveau des langages, Clang s'ouvre aux versions futures de C et de C++, avec l'inclusion d'un mode C2x ; le mode C++2a active par défaut les modules. Côté OpenCL, on peut désormais utiliser toutes les fonctionnalités de C++17 en conjonction avec OpenCL 2.0, grâce à des améliorations au niveau des attributs concernant l'espace d'adressage. Cette implémentation est cependant toujours expérimentale.
Le point mineur le plus important est cependant l'implémentation des instructions ASM GOTO. Ce petit détail a toute son importance, puisque désormais Clang peut compiler avec succès le noyau Linux pour des processeurs x86_64, après des années de travail acharné pour y arriver (Clang 4 arrivait déjà à compiler Linux pour un certain nombre d'architectures, comme ARM ou PowrePC). Android et ChromeOS sont déjà en train d'effectuer la transition depuis GCC.
Sources : notes de version de LLVM et Clang.
Sortie de LLVM et Clang 9.0 avec une implémentation finalisée de la génération de code pour RISC-V
L'architecture libre de processeur
Sortie de LLVM et Clang 9.0 avec une implémentation finalisée de la génération de code pour RISC-V
L'architecture libre de processeur
Le , par dourouc05
Une erreur dans cette actualité ? Signalez-nous-la !