Visão geral
O LLVM é uma infraestrutura de compilador de código aberto, modular e extensível, projetada para otimizar o tempo de compilação, ligação e execução de programas. Embora o nome tenha origem na sigla para "Low Level Virtual Machine", o projeto evoluiu para uma coleção abrangente de tecnologias de compilador que não se limitam a máquinas virtuais tradicionais. É amplamente utilizado na indústria e na academia para criar linguagens de programação, ferramentas de análise estática e ambientes de execução de alto desempenho.
Contexto histórico e desenvolvimento
O projeto LLVM teve início em 2000 na Universidade de Illinois em Urbana-Champaign, sob a liderança de Vikram Adve e Chris Lattner. O objetivo original era criar uma infraestrutura de pesquisa para investigar técnicas de compilação dinâmica para linguagens estáticas e dinâmicas. Com o tempo, a Apple Inc. adotou a tecnologia, contratando Lattner para integrar o LLVM ao ecossistema de desenvolvimento do macOS e iOS. Atualmente, o LLVM é um projeto guarda-chuva que engloba diversos subprojetos, sendo licenciado sob a "Apache 2.0 License with LLVM exceptions".
Linha do tempo
- 2000: Início do projeto de pesquisa na Universidade de Illinois.
- 2005: A Apple começa a integrar o LLVM em suas ferramentas de desenvolvimento.
- 2007: Lançamento do Clang como um front-end nativo para C/C++.
- 2010s: Expansão do ecossistema com subprojetos como LLDB, MLIR e Flang.
- 2026: Continuidade do desenvolvimento com atualizações frequentes, como a versão 22.1.5.
Principais atores
- Chris Lattner: Co-criador do LLVM e figura central em seu desenvolvimento inicial.
- Vikram Adve: Co-criador e pesquisador acadêmico do projeto.
- Apple Inc.: Principal impulsionadora corporativa e usuária da tecnologia em seus sistemas operacionais.
- Comunidade Open Source: Desenvolvedores globais que mantêm e expandem os diversos subprojetos do LLVM.
Termos importantes
- LLVM IR (Intermediate Representation): Uma representação de código padronizada e independente de linguagem que permite que o LLVM otimize e gere código para diversas arquiteturas de CPU.
- Clang: Front-end do LLVM para linguagens C, C++ e Objective-C, conhecido pela velocidade e mensagens de erro precisas.
- LLDB: Depurador nativo de alto desempenho integrado à infraestrutura LLVM.
- MLIR (Multi-Level Intermediate Representation): Subprojeto focado em infraestrutura de compilador reutilizável para hardware heterogêneo.
- JIT (Just-In-Time): Técnica de compilação em tempo de execução suportada pelo LLVM para otimizar a performance de linguagens dinâmicas.
