LLVM | |
---|---|
Kehittäjä | LLVM-projekti |
Kehityshistoria | |
Vakaa versio | 19.1.6 ()[1] |
Tiedot | |
Ohjelmistotyyppi | Ohjelmointikielen kääntäjä |
Alusta | alustariippumaton |
Lisenssi | BSD-lisenssi |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
LLVM (alkuaan engl. Low Level Virtual Machine) on ohjelmointikielen kääntäjän kehittämiseen tarkoitettu infrastruktuuri. LLVM-järjestelmän avulla ohjelmakoodille voidaan suorittaa erilaisia optimointeja – käännöksen, linkityksen, ajon tai ohjelman joutenolon aikana. LLVM julkaistiin ennen versiota 8.0 BSD-lisenssin muunnoksella (University of Illinois/NCSA Open Source License). Uudemmat versiot käyttävät muokattua Apache 2.0 -lisenssiä.[2]
LLVM toteuttaa kääntäjien toiminnan keski- ja loppuosan, eli toimenpiteet jotka ovat lähes samoja kaikkien konekieleksi käännettävien ohjelmien osalta. LLVM:n päälle voidaan rakentaa käännösprosessin ”etupää”, eli ohjelmointikielen tulkinta. Kääntäjäohjelma kutsuu LLVM-kirjastoa, joka tuottaa IR-välikielen (engl. Intermediate Representation).[3] LLVM-infrastruktuuri optimoi välikielen. Loppuvaiheessa välikieli muunnetaan kohdejärjestelmän konekieleksi.
Lyhenne LLVM tarkoitti alun pitäen ”Low Level Virtual Machine”, mutta projektin kasvaessa nimestä luovuttiin ja lyhenne ei nykyisin tarkoita mitään. LLVM on ”kattoprojekti”, jota käytetään keskeisistä komponenteista: välikielestä (LLVM IF) ja sen käsittelystä, debuggerista (LLDB[4]) ja LLVM:n omasta C++-kirjastosta (libc++[5]).