LLVM est, à la base, une infrastructure qui sert à faciliter la création de compilateurs. Le projet le plus connu est sûrement Clang, compilateur de langages de la famille C et C++ (Objective-C, extensions OpenMP, etc.). Flang a été récemment officialisé comme compilateur Fortran. Serait-ce bientôt le tour d'Ada ?
GNAT est l'analyseur syntaxique de GCC pour le code Ada, mais il est codé de telle sorte que la dépendance à GCC est assez légère. Il a déjà été utilisé pour générer du bytecode Java (JGNAT) ou .Net (MGNAT), pour l'écriture de preuves Why3, etc. Cette fois-ci, il s'agit de lier GNAT à LLVM, un projet connu sous le nom de GNAT LLVM, sans aucune créativité. Cela permettrait d'utiliser toute l'infrastructure de LLVM avec du code Ada, notamment l'analyse statique du code ou la compilation à la volée (JIT). Le projet remplace DragonEgg, qui proposait d'utiliser GCC pour l'analyse du code et LLVM pour la génération des exécutables, mais ce projet est abandonné depuis 2014.
Techniquement, les développeurs de GNAT LLVM utilisent l'API C de LLVM aussi directement que possible (pas l'API C++, trop mouvante). Le code proprement dit est écrit en Ada et exploite LLVM 9.
Le code est d'ores et déjà disponible sur GitHub.
Source : AdaCore.
Partager