LLVM

LLVM
Original author(s)Chris Lattner, Vikram Adve
Developer(s)LLVM Developer Group
Initial release2003; 22 years ago (2003)
Stable release
19.1.7[2] Edit this on Wikidata / 14 January 2025
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, also called LLVM Core, is a target-independent optimizer and code generator.[5] It 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. However, the project has since expanded, and the name is no longer an acronym but an orphan initialism.[7]

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,[8][9][10] Common Lisp,[11] PicoLisp, Crystal, CUDA, D,[12] Delphi,[13] Dylan, Forth,[14] Fortran,[15] FreeBASIC, Free Pascal, Halide, Haskell, Idris[16], Jai (only for optimized release builds), Java bytecode, Julia, Kotlin, LabVIEW's G language,[17][18] Objective-C, OpenCL,[19] PostgreSQL's SQL and PLpgSQL,[20] Ruby,[21] Rust,[22] Scala,[23][24] Standard ML,[25] Swift, Xojo, and Zig.

  1. ^ "LLVM Logo". The LLVM Compiler Infrastructure Project.
  2. ^ "LLVM 19.1.7 Released!". January 14, 2025. Retrieved January 14, 2025.
  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. ^ "The LLVM Compiler Infrastructure Project". llvm.org. Archived from the original on December 29, 2024. Retrieved January 13, 2025.
  8. ^ "Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Archived from the original on December 12, 2021. Retrieved September 12, 2020.
  9. ^ "Mono LLVM". Retrieved March 10, 2013.
  10. ^ Lattner, Chris (2011). "LLVM". In Brown, Amy; Wilson, Greg (eds.). The Architecture of Open Source Applications.
  11. ^ "Clasp". Clasp Developers. Retrieved December 2, 2024.
  12. ^ "LDC". D Wiki. Retrieved December 2, 2024.
  13. ^ "LLVM-based Delphi Compilers". Embarcadero. Retrieved November 26, 2024.
  14. ^ "MovForth". GitHub. November 28, 2021.
  15. ^ "The Flang Compiler". LLVM Project. Retrieved December 2, 2024.
  16. ^ "Rapid". Rapid. Retrieved November 22, 2024.
  17. ^ William Wong (May 23, 2017). "What's the Difference Between LabVIEW 2017 and LabVIEW NXG?". Electronic Design.
  18. ^ "NI LabVIEW Compiler: Under the Hood".
  19. ^ Larabel, Michael (April 11, 2018). "Khronos Officially Announces Its LLVM/SPIR-V Translator". Phoronix.com.
  20. ^ "32.1. What is JIT compilation?". PostgreSQL Documentation. November 12, 2020. Retrieved January 25, 2021.
  21. ^ "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.
  22. ^ "Code Generation - Guide to Rustc Development". rust-lang.org. Retrieved January 4, 2023.
  23. ^ Reedy, Geoff (September 24, 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Retrieved February 19, 2013.
  24. ^ "Scala Native". Retrieved November 26, 2023.
  25. ^ "LLVMCodegen". MLton. Retrieved November 26, 2024.

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne