Compiler backend for multiple programming languages / From Wikipedia, the free encyclopedia

Dear Wikiwand AI, let's keep it short by simply answering these key questions:

Can you list the top facts and stats about LLVM?

Summarize this article for a 10 years old


LLVM is a set of compiler and toolchain technologies[4] that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.[5] The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.

Quick facts: Original author(s), Developer(s), Initial rel...
Original author(s)Chris Lattner, Vikram Adve
Developer(s)LLVM Developer Group
Initial release2003; 20 years ago (2003)
Stable release
17.0.1[2] Edit this on Wikidata / 19 September 2023
Written inC++
Operating systemCross-platform
LicenseUIUC (BSD-style)
Apache License 2.0 with LLVM Exceptions (v9.0.0 or later)[3]

LLVM is written in C++ and is designed for compile-time, link-time, runtime, and "idle-time" optimization. Originally implemented for C and C++, the language-agnostic design of LLVM has since spawned a wide variety of frontends: languages with compilers that use LLVM (or which do not directly use LLVM but can generate compiled programs as LLVM IR) include ActionScript, Ada, C# for .NET,[6][7][8] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[9] Fortran, FreeBASIC, Free Pascal, Graphical G,[10] Halide, Haskell, Java bytecode, Julia, Kotlin, Lua, Objective-C, OpenCL,[11] PostgreSQL's SQL and PLpgSQL,[12] Ruby,[13] Rust,[14] Scala,[15] Swift, Xojo, LabVIEW (G), and Zig.