LLVM | |
---|---|
Тип | компилятор |
Разработчики | Крис Латтнер[вд], Craig Topper[вд][3] и Simon Pilgrim[вд][3] |
Написана на | C++[4], Си[5] и язык ассемблера[5] |
Операционные системы | кроссплатформенность, NetBSD, FreeBSD, OpenBSD, Linux, Миникс 3, Windows и Illumos |
Первый выпуск | 24 октября 2003[1] |
Последняя версия | |
Репозиторий | github.com/llvm/llvm-pro… |
Лицензия | открытая лицензия Иллинойсского университета[вд][6] и Apache License v2.0 with LLVM Exceptions[вд][7] |
Сайт | llvm.org (англ.) |
![]() |
LLVM (изначальная расшифровка — англ. low level virtual machine[8]) — проект программной инфраструктуры для создания компиляторов и сопутствующих им утилит. Состоит из набора компиляторов из языков высокого уровня (так называемых «фронтендов»), системы оптимизации, интерпретации и компиляции в машинный код. В основе инфраструктуры используется RISC-подобная платформонезависимая система кодирования машинных инструкций (байткод LLVM IR), которая представляет собой высокоуровневый ассемблер, с которым работают различные преобразования.
Написан на C++, обеспечивает оптимизации на этапах компиляции, компоновки и исполнения. Изначально в проекте были реализованы компиляторы для языков Си и C++ при помощи фронтенда Clang, позже появились фронтенды для множества языков, в том числе: ActionScript, Ада, C#[9], Common Lisp, Crystal, CUDA, D, Delphi, Dylan, Fortran, Graphical G Programming Language, Halide, Haskell, Java (байткод), JavaScript, Julia, Kotlin, Lua, Objective-C, OpenGL Shading Language, Ruby, Rust, Scala, Swift, Xojo, Zig.
LLVM может создавать машинный код для множества архитектур, в том числе ARM, x86, x86-64, PowerPC, MIPS, SPARC, RISC-V и других (включая GPU от Nvidia и AMD).
Некоторые проекты имеют собственные LLVM-компиляторы (например LLVM-версия GCC), другие используют инфраструктуру LLVM[10], например таков Glasgow Haskell Compiler.
Разработка начата в 2000 году в Университете Иллинойса. К середине 2010-х годов LLVM получил широкое распространение в индустрии: использовался, в том числе, в компаниях Adobe, Apple и Google. В частности, на LLVM основана подсистема OpenGL в Mac OS X 10.5, а iPhone SDK использует препроцессор (фронтенд) GCC с бэкэндом на LLVM. Apple и Google являются одними из основных спонсоров проекта, а один из основных разработчиков — Крис Латтнер — 11 лет проработал в Apple (с 2017 года — в Tesla Motors[11], с 2020 года — в разработчике процессоров и микроконтроллеров на архитектуре RISC-V SiFive[12]).