LLVM

LLVM
Original author(s)Chris Lattner, Vikram Adve
Developer(s)LLVM Developer Group
Initial release2003 (2003)
Stable release
19.1.3[2] Edit this on Wikidata / 30 October 2024
Repository
Written inC++
Operating systemCross-platform
TypeCompiler
LicenseApache License 2.0 with LLVM Exceptions (v9.0.0 or later)[3]
Legacy license:[4] UIUC (BSD-style)
Websitewww.llvm.org

LLVM is a set of compiler and toolchain technologies[5] 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.[6] The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.

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,[7][8][9] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[10] Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java bytecode, Julia, Kotlin, LabVIEW's G language,[11][12] Lua, Objective-C, OpenCL,[13] PostgreSQL's SQL and PLpgSQL,[14] Ruby,[15] Rust,[16] Scala,[17][18] Swift, Xojo, and Zig.

  1. ^ "LLVM Logo". The LLVM Compiler Infrastructure Project.
  2. ^ "LLVM 19.1.3". October 30, 2024. Retrieved October 30, 2024.
  3. ^ "LICENSE.TXT". llvm.org. Retrieved September 24, 2019.
  4. ^ "LLVM Developer Policy — LLVM 20.0.0git documentation". llvm.org. Retrieved November 9, 2024.
  5. ^ "The LLVM Compiler Infrastructure Project". Retrieved March 11, 2016.
  6. ^ "LLVM Language Reference Manual". Retrieved June 9, 2019.
  7. ^ "Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Archived from the original on December 12, 2021. Retrieved September 12, 2020.
  8. ^ "Mono LLVM". Retrieved March 10, 2013.
  9. ^ Lattner, Chris (2011). "LLVM". In Brown, Amy; Wilson, Greg (eds.). The Architecture of Open Source Applications.
  10. ^ "MovForth". GitHub. November 28, 2021.
  11. ^ William Wong (May 23, 2017). "What's the Difference Between LabVIEW 2017 and LabVIEW NXG?". Electronic Design.
  12. ^ "NI LabVIEW Compiler: Under the Hood".
  13. ^ Larabel, Michael (April 11, 2018). "Khronos Officially Announces Its LLVM/SPIR-V Translator". Phoronix.com.
  14. ^ "32.1. What is JIT compilation?". PostgreSQL Documentation. November 12, 2020. Retrieved January 25, 2021.
  15. ^ "Features". RubyMotion. Scratchwork Development LLC. Retrieved June 17, 2017. RubyMotion transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.
  16. ^ "Code Generation - Guide to Rustc Development". rust-lang.org. Retrieved January 4, 2023.
  17. ^ Reedy, Geoff (September 24, 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Retrieved February 19, 2013.
  18. ^ "Scala Native". Retrieved November 26, 2023.

Developed by StudentB