NVIDIA propose officiellement f18, son compilateur libre pour Fortran, comme sous-projet LLVM
La suite de compilateurs LLVM est notamment connue pour Clang, son compilateur C et C++, mais aussi pour la kyrielle d'autres projets qui utilisent son infrastructure afin de faciliter leur développement ]comme Julia, qui utilise LLVM pour garantir une exécution extrêmement rapide).
Il y a de cela un certain temps (en 2015, précisément), NVIDIA voulait ajouter Fortran à la liste des langages implémentés par LLVM, avec le projet Flang. Il a fallu du temps avant que le projet soit vraiment officialisé. Le développement a eu lieu avec bien d'autres parties intéressées, comme ARM ou le DoE (ministère américain de l'énergie). Désormais, NVIDIA cherche à faire intégrer le code source du successeur de Flang, f18, dans le projet LLVM, au même niveau que Clang.
Pour le moment, f18 implémente une bonne partie du langage Fortran : l'analyse syntaxique gère toute la norme Fortran 2018 ainsi qu'OpenMP 4.5, même si toute l'infrastructure derrière cette analyse syntaxique n'est pas encore prête. L'objectif de ses développeurs est de soumettre le code à LLVM (y compris l'implémentation de la bibliothèque standard), puis de continuer le développement des fonctionnalités manquantes : il faut encore effectuer un certain nombre de refactorisations (notamment pour découpler la bibliothèque standard du compilateur), des choix cohérents avec le reste de l'infrastructure LLVM doivent être posés.
Le plus gros frein, selon les développeurs de f18, est l'utilisation de C++17 pour l'implémentation du compilateur, alors que LLVM est en pleine transition vers C++14 (un processus assez lent pour s'assurer que tous ceux qui utilisent LLVM ne soient pas tirés en arrière par des besoins trop évolués). Certains développeurs de LLVM trouvent que ce n'est pas un problème, puisqu'il n'y a pas de rétrocompatibilité cassée : f18 est un tout nouveau projet pour LLVM ; certains ressortent des excuses basées sur le fait que toutes les machines utilisées par le projet LLVM ne sont pas forcément assez à jour pour C++17, ce qui limiterait les possibilités en termes d'intégration continue. L'intégration des deux projets pourrait aussi être limitée par le fait que certains développeurs de LLVM pourraient souhaiter utiliser certaines fonctionnalités de f18 dans d'autres parties du projet.
Source : GitHub, LLVM Mailing list
Flang sera intégré au projet LLVM avant la version 10
Depuis quelques années, on parle de Flang comme compilateur Fortran dans l'écosystème LLVM. Après une rapide discussion sur le nom certains ont proposé f18, d'autres Fortran et l'adoption définitive de Flang, voici venu le temps de l'intégration à la distribution de LLVM. Le plan actuel est d'intégrer le code source de Flang dans le dépôt unique de LLVM courant janvier, avant le branchement de la version 10. Cela fait suite à un certain travail de réécriture de l'historique (assez compliqué) du compilateur.
Voir aussi : le dépôt actuel de Flang, l'historique réécrit, une prévisualisation du résultat de fusion entre les dépôts de Flang et de LLVM.