Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Qt & Livres

    GNAT LLVM : un analyseur de code Ada pour LLVM
    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.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre du Club
    Citation Envoyé par dourouc05 Voir le message
    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).

###raw>template_hook.ano_emploi###