Em 2000, na Universidade de Illinois em Urbana-Champaign, Vikram Adve e Chris Lattner iniciaram um projeto de pesquisa sobre compilação dinâmica. Seu artigo de 2004 na CGO — "LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation" — descrevia uma representação intermediária tipada somada a um framework de compilador cuja combinação de capacidades, segundo o artigo, nenhuma abordagem de compilação existente oferecia.

O movimento decisivo foi a modularidade aliada à abertura. Em vez de um compilador monolítico, o LLVM é uma infraestrutura baseada em bibliotecas: os front ends traduzem o código-fonte para a IR do LLVM, os back ends convertem essa IR em código de máquina, e as passagens de otimização são compartilhadas no meio. Distribuído como software livre e de código aberto, podia ser incorporado a produtos comerciais sem atrito jurídico.

A adoção seguiu a economia. A Apple contratou Lattner em 2005 e tornou o LLVM parte integrante do Xcode para macOS e iOS; a Intel descreve o LLVM como infraestrutura de compilador de qualidade de produção cujos componentes seus próprios compiladores reutilizam, tendo a IR do LLVM como alvo para portabilidade. Como o meio era compartilhado, o ecossistema deixou de reconstruí-lo.

Construir compiladores como bibliotecas reutilizáveis, não como monólitos

A IR tipada separa os front ends dos back ends, de modo que uma única infraestrutura atende a todas as linguagens.

Uma licença permissiva permite que empresas o incorporem sem atrito jurídico.

Os componentes em forma de biblioteca fazem com que os fornecedores reutilizem código já testado em vez de reescrevê-lo.

A adoção pela Apple o colocou dentro da cadeia de ferramentas padrão de milhões de desenvolvedores.

Vença o ecossistema dominando o meio: um núcleo de compilador reutilizável e com licença permissiva faz com que todo front end de linguagem e todo back end de máquina compartilhem o mesmo motor de otimização já testado.

O LLVM e seu front end Clang tornaram-se a pilha de compiladores padrão para as plataformas da Apple e para linguagens que vão de Rust a Swift, enquanto os compiladores oneAPI da Intel são construídos sobre ele — o meio reutilizável venceu o ecossistema de compiladores. Novos projetos de linguagem agora assumem rotineiramente o LLVM como seu alvo.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (CGO'04) LLVM Project · llvm.org
  2. Get to Know LLVM Intel · intel.com
  3. LLVM Wikipedia · en.wikipedia.org