LLVM | |
---|---|
Autor | Chris Lattner, Vikram Adve |
Arendaja | LLVM Developer Group |
Esmaväljalase | 2003 |
Viimane väljalase | 19.1.3 / 30.10.2024 |
Kirjutatud keeles | C++ |
Litsents |
UIUC (BSD stiilis) Apache litsents 2.0 LLVM eranditega (v9.0.0 või hilisem)[1] |
Veebisait |
llvm |
LLVM on kompilaatorite ja tööriistaahelate tehnoloogiate kogumik,[2] millega on võimalik ehitada kompilaatori eesosa mistahes programmeerimiskeelele ja tagaosa mistahes käsustikuarhitektuurile. LLVM on ehitatud keelest sõltumatule vahekeelele (ingl intermediate representation või IR), mis on platvormist sõltumatu kõrgetasemeline assemblerkeel, mida saab optimeerida erinevate transformatsioonidega üle mitme läbikäimise.[3] Nimi "LLVM" tähendas algselt madalatasemelist virtuaalmasinat (ingl Low Level Virtual Machine), kuid projekti arenedes ei olnud nimi enam asjakohane ning lühend ei ole enam ametlikult tähenduslik.[4]
LLVM on kirjutatud C++ keeles ja on disainitud kompilatsiooni-, linkimis-, käitus- ja ooteajaliseks optimeerimiseks. Algselt loodud C ja C++ koodi kompileerimise jaoks, on LLVM-i keelest sõltumatu disain lubanud tekkida eesosadel paljude teiste keelte jaoks (sealhulgas keeled, mis ei kasuta LLVM-i, aga võivad kompileerida programme LLVM-i IR koodi): ActionScript, Ada, C# .NETi jaoks,[5][6][7] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[8] Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java baitkoodi, Julia, Kotlin, LabVIEW keel G,[9][10] Lua, Objective-C, OpenCL,[11] PostgreSQLi SQL ja PLpgSQL,[12] Ruby,[13] Rust,[14] Scala,[15][16] Swift, Xojo ja Zig.
'LLVM' is officially no longer an acronym. The acronym it once expanded too was confusing, and inappropriate almost from day 1. :) As LLVM has grown to encompass other subprojects, it became even less useful and meaningless.
RubyMotion transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.