Département d'informatique Jean Privat

Interface LLVM pour le langage Nit

Description du projet

LLVM est une infrastructure de compilation qui se veut indépendante des langages de programmation et des plateformes matérielles. Il permet de faciliter et optimiser la compilation et l’exécution de programmes. Son architecture abstraite permet de faciliter l'interopérabilité entre l'ensemble des langages s'en servant. Il permet également aux langages s'en servant de bénéficier d'un support amélioré des différents supports matériels. Le support natif d'un compilateur à la volée (Just-In Time) et d'un débogueur en font un atout majeur pour tout langage de programmation moderne. Initialement un projet universitaire, il est désormais maintenu et utilisé par de nombreux projets industriels et universitaires. C'est aujourd'hui une norme dans le domaine et plusieurs langages dont C, C++, Objective-C et Java sont déjà compatibles avec LLVM.

L’objectif est de développer une interface vers LLVM pour le langage Nit et de l’intégrer à sa chaîne de compilation. Ce travail permettra d’étendre la portée du projet Nit en l’intégrant avec d’autres systèmes récents ou en cours de recherche.

Rôle de l'étudiant

L'étudiant débutera le travail en se familiarisant avec l'infrastructure LLVM et le langage Nit. Son travail sera d'utiliser ses connaissances afin d'évaluer la faisabilité de l'intégration de Nit vers LLVM et la réalisation d'une interface aussi aboutie que possible pour le langage.

Une fois le travail complété, l’étudiant aura acquis une connaissance approfondie du projet Nit et de l’infrastructure LLVM. Il aura également réalisé un frontend Nit pour LLVM fonctionnel et l’aura appliqué sur des exemples pratiques.

Formation requise

L'étudiant doit avoir de bonnes aptitudes en programmation et un intérêt pour la compilation ou le développement de langages.

Références

Une belle petite introduction à LLVM est disponible à: http://dev.stephendiehl.com/numpile/#llvm-primer