En 2000, à l'Université de l'Illinois à Urbana-Champaign, Vikram Adve et Chris Lattner ont lancé un projet de recherche sur la compilation dynamique. Leur article CGO de 2004 — « LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation » — décrivait une représentation intermédiaire typée ainsi qu'un framework de compilateur dont la combinaison de capacités, affirmait-il, n'était fournie par aucune approche de compilation existante.
Le geste décisif fut la modularité alliée à l'ouverture. Plutôt qu'un compilateur monolithique, LLVM est une infrastructure fondée sur des bibliothèques : les front ends traduisent le code source en LLVM IR, les back ends transforment cette IR en code machine, et les passes d'optimisation sont partagées entre les deux. Diffusé comme logiciel libre et open source, il pouvait être intégré à des produits commerciaux sans friction juridique.
L'adoption a suivi l'économie. Apple a embauché Lattner en 2005 et a fait de LLVM un élément essentiel de Xcode pour macOS et iOS ; Intel décrit LLVM comme une infrastructure de compilateur de qualité production dont ses propres compilateurs réutilisent les composants, en ciblant LLVM IR pour la portabilité. Parce que le cœur était partagé, l'écosystème a cessé de le reconstruire.
Construire des compilateurs comme des bibliothèques réutilisables, et non comme des monolithes
L'IR typée sépare les front ends des back ends, de sorte qu'une seule infrastructure sert tous les langages.
Une licence permissive permet aux entreprises de l'intégrer sans friction juridique.
Les composants sous forme de bibliothèques signifient que les fournisseurs réutilisent du code éprouvé au lieu de le réécrire.
L'adoption par Apple l'a placé dans la chaîne d'outils par défaut de millions de développeurs.
Gagner l'écosystème en possédant le cœur : un noyau de compilateur réutilisable sous licence permissive signifie que chaque front end de langage et chaque back end machine partagent le même moteur d'optimisation éprouvé.
Suites
LLVM et son front end Clang sont devenus la pile de compilation par défaut pour les plateformes Apple et pour des langages allant de Rust à Swift, tandis que les compilateurs oneAPI d'Intel sont construits sur lui — le cœur réutilisable a conquis l'écosystème des compilateurs. Les nouveaux projets de langages présupposent désormais couramment LLVM comme cible.
VÉRIFIEZ LES SOURCES
Les sources
- LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (CGO'04) LLVM Project · llvm.org
- Get to Know LLVM Intel · intel.com
- LLVM Wikipedia · en.wikipedia.org