En 2000, en la Universidad de Illinois en Urbana-Champaign, Vikram Adve y Chris Lattner iniciaron un proyecto de investigación sobre compilación dinámica. Su artículo de CGO de 2004 —«LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation»— describía una representación intermedia tipada junto con un marco de compilación cuya combinación de capacidades, según afirmaba, ningún enfoque de compilación existente ofrecía.
El movimiento decisivo fue la modularidad junto con la apertura. En lugar de un compilador monolítico, LLVM es una infraestructura basada en bibliotecas: los front ends traducen el código fuente a LLVM IR, los back ends convierten esa IR en código máquina, y las pasadas de optimización se comparten en el medio. Publicado como software libre y de código abierto, podía integrarse en productos comerciales sin fricción legal.
La adopción siguió a la economía. Apple contrató a Lattner en 2005 e hizo de LLVM una parte integral de Xcode para macOS e iOS; Intel describe LLVM como infraestructura de compilación de calidad de producción cuyos componentes reutilizan sus propios compiladores, apuntando a LLVM IR por portabilidad. Como el medio era compartido, el ecosistema dejó de reconstruirlo.
Construir compiladores como bibliotecas reutilizables, no como monolitos
La IR tipada separa los front ends de los back ends, de modo que una sola infraestructura sirve a todos los lenguajes.
Una licencia permisiva permite a las empresas integrarlo sin fricción legal.
Los componentes de biblioteca hacen que los proveedores reutilicen código probado en lugar de reescribirlo.
La adopción por parte de Apple lo situó dentro de la cadena de herramientas predeterminada de millones de desarrolladores.
Ganar el ecosistema siendo dueño del medio: un núcleo de compilador reutilizable y con licencia permisiva hace que cada front end de lenguaje y cada back end de máquina compartan el mismo motor de optimización probado.
LLVM y su front end Clang se convirtieron en la pila de compiladores predeterminada para las plataformas de Apple y para lenguajes desde Rust hasta Swift, mientras que los compiladores oneAPI de Intel están construidos sobre él: el medio reutilizable ganó el ecosistema de compiladores. Los nuevos proyectos de lenguajes ahora asumen de forma rutinaria LLVM como su objetivo.
CONSULTA LAS PRUEBAS
Las fuentes
- 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