LLVM

LLVM
software
GenereCompilatore
SviluppatoreLLVM Developer Group, Università dell'Illinois (Urbana-Champaign)
Data prima versione24 ottobre 2003
Ultima versione19.1.3 (30 ottobre 2024)
Sistema operativoMultipiattaforma
Linguaggiolinguaggio assembly
C
C++
LicenzaUniversity of Illinois Open Source License
(licenza libera)
Sito webllvm.org

LLVM (in precedenza acronimo di Low Level Virtual Machine, macchina virtuale di basso livello) è un'infrastruttura di compilazione, scritta in C++, progettata per l'ottimizzazione di programmi in fase di compilazione, di linking, di esecuzione e di non utilizzo. Il progetto LLVM è stato avviato nel 2000 all'Università dell'Illinois.

LLVM attualmente supporta la compilazione di programmi in linguaggio C, C++, Objective C, Ada, Rust, Julia e Fortran, usando dei front-end derivati dalle versioni 4.0.1. e 4.2 del compilatore GNU Compiler Collection (GCC). Un front-end alternativo per linguaggi di programmazione simili al C è attualmente in sviluppo sotto il nome di clang.

Usando LLVM, il programmatore può creare una macchina virtuale per linguaggi che la richiedono (ad esempio Java), un compilatore per una architettura specifica e software di ottimizzazione del codice indipendenti dal tipo di linguaggio utilizzato o dalla piattaforma. La rappresentazione intermedia LLVM (IR) è indipendente sia dal linguaggio che dalla architettura; essa si interpone tra il codice sorgente in un dato linguaggio e un generatore di codice per una specifica architettura. LLVM include il supporto all'ottimizzazione del codice inter-procedurale e compilatori sia statici che Just-in-time.

Ha diversi componenti che si occupano delle diverse fasi di sviluppo; tra essi, si ricordano i frontend per i linguaggi bytecode di Java, CIL, Python, Julia. Il compilatore just-in-time LLVM è in grado di ottimizzare parti di programma in fase di esecuzione, ed è quindi utile nei casi in cui si voglia valutare l'efficienza di una singola funzione. Grazie a questa sua particolarità, esso viene usato nella pipeline OpenGL di Mac OS X Leopard per supportare alcune funzionalità non presenti a livello hardware.

È il compilatore di default dell'IDE Xcode a partire dalla versione 4.2.