Developpez.com

Le Club des Développeurs et IT Pro

GNAT LLVM : un analyseur de code Ada pour LLVM

Le projet remplace DragonEgg, qui proposait d'utiliser GCC pour l'analyse du code et LLVM pour la génération des exécutables

Le 2019-10-10 04:18:45, par dourouc05, Responsable Qt & Livres
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.
  Discussion forum
1 commentaire
  • Yoratheon
    Membre du Club
    Envoyé par dourouc05
    Le projet remplace DragonEgg, qui proposait d'utiliser GCC pour l'analyse du code et LLVM pour la génération des exécutables
    Je ne pense pas que "remplacer" est le mot adapté ici. En réalité, l'idée d'utiliser DragonEgg à était étudier mais écarté, pour les raisons cité (vieux projet, et pour s'affranchir d'une couche supplémentaire avec GCC) CF le README.dragonegg.

    On pourrait voir cela comme une autre solution permettant de générer du code. Ainsi, ils se retrouvent avec deux backends bien distincts, GCC et LLVM.

    Et pour ceux qui se posent la question, cela ne change rien à l'offre GNAT Pro, qui restera basée sur GCC (cela à était annoncé à l'AdaCore tech day du 3 octobre à Paris).