LLVM

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun
LLVM
Kehittäjä LLVM-projekti
Kehityshistoria
Vakaa versio 4.0.0 / 13.3.2017 [1]
Tiedot
Ohjelmistotyyppi Ohjelmointikielen kääntäjä
Alusta alustariippumaton
Lisenssi BSD-lisenssi
Verkkosivu llvm.org

LLVM (alkuaan engl. Low Level Virtual Machine) on eräs ohjelmointikielten kääntäjien kehittämiseen tarkoitetuista infrastruktuureista. LLVM-järjestelmän avulla ohjelmakoodille voidaan suorittaa erilaisia optimointeja – käännöksen, linkityksen, ajon tai ohjelman joutenolon aikana. LLVM on julkaistu BSD-lisenssin muunnoksella (University of Illinois/NCSA Open Source License).

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).[2] 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 lähinnä brändi jota käytetään keskeisistä komponenteista: välikielestä (LLVM IF) ja sen käsittelystä, debuggerista (LLDB) ja LLVM:n omasta C++-kirjastosta (libc++).

Historia[muokkaa | muokkaa wikitekstiä]

LLVM-projekti alkoi vuonna 2003 Illinois'n yliopistossa (Urbana–Champaign).

Nykyisin suurin LLVM:n kehittäjä on Apple; LLVM-järjestelmä onkin keskeinen komponentti uusimpien Mac OS X- ja iOS-järjestelmien kehitystyökaluissa. Myös Sony käyttää LLVM:ää PlayStation 4 -kehitysympäristössä. Microsoft tarjoaa Clang-kääntäjän optiona Visual Studiossa.

Monet Linux-jakelut tukevat LLVM:ää, useimmiten rinnakkaisena vaihtoehtona GCC:lle. Vastaavasti esimerkiksi FreeBSD käyttää monilla alustoilla Clangia pääasiallisena kääntäjänään.

LLVM-pohjaiset kääntäjät[muokkaa | muokkaa wikitekstiä]

LLVM oli aluksi suunniteltu GCC:n loppuvaiheiden korvaajaksi, joten monia GCC-pohjaisia kääntäjien etupäitä on muunnettu LLVM-pohjaisiksi. Monia kääntäjiä on kehitetty tukemaan suoraan LLVM-infrastruktuuria.

Clang[muokkaa | muokkaa wikitekstiä]

Clang on LLVM-projektin oma C/C++/Objective-C -kääntäjä etupää (front-end).

Clang on tuettu Applen Xcode kehitysympäristössä.[3][4]

DragonEgg[muokkaa | muokkaa wikitekstiä]

GCC:lle on kehitetty laajennos nimeltä DragonEgg, jonka avulla GCC voi tuottaa LLVM-välikieltä. GCC:tä käytetään vain käännösprosessin etupäänä.

Emscripten[muokkaa | muokkaa wikitekstiä]

Emscripten tuottaa LLVM:n avulla JavaScript-koodia asm.js-alustalle. asm.js on uusimpien selaimien tukema JavaScript-laajennos, jonka avulla JavaScript-ohjelmat voivat toimia lähes yhtä tehokkaasti kuin natiivit ohjelmistot, ja voivat käyttää HTML5:n tarjoamia selainominaisuuksia, kuten 2D/3D-grafiikkaa ja ääntä. Emscriptenin avulla C- tai C++ -ohjelmistoja voidaan kääntää suoraan selaimissa toimiviksi. Monia C/C++ -kirjastoja on sovitettu toimivaksi Emscriptenin kanssa.

Laajamittaisimmat Emscripteniin pohjautuvat projekti ovat Internet Archiven tukemat JSMESS- ja DOSBox -projektit, joiden avulla erilaisia vanhoja ohjelmistoja ja pelejä voidaan emuloida suoraan selaimissa.

Rust[muokkaa | muokkaa wikitekstiä]

Rust on ohjelmointikieli, jonka referenssikääntäjän (rustc) kehittäminen alkoi alusta alkaen LLVM:n päällä.

Alustatuki[muokkaa | muokkaa wikitekstiä]

Tuettuja käyttöjärjestelmiä ovat:

  • Linux
  • Windows
  • Mac OS
  • iOS

Tuettuja suoritinarkkitehtuureja ovat:

Lähteet[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]


Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.