Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
LLVM
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Compiler backend for multiple programming languages}} {{Infobox software | name = LLVM | logo = LLVM logo.png | logo caption = The LLVM logo, a stylized [[wyvern]]<ref name="logo">{{Cite web |url=https://llvm.org/Logo.html |title=LLVM Logo |website=The LLVM Compiler Infrastructure Project}}</ref> | author = [[Chris Lattner]], [[Vikram Adve]] | developer = LLVM Developer Group | released = {{start date and age|2003}} | latest release version = {{wikidata|property|preferred|references|edit|Q223490|P348|P548=Q2804309}} | latest release date = {{wikidata|qualifier|preferred|single|Q223490|P348|P548=Q2804309|P577}} | latest preview version = {{wikidata|property|preferred|references|edit|Q223490|P348|P548=Q51930650}} | latest preview date = {{wikidata|qualifier|preferred|single|Q223490|P348|P548=Q51930650|P577}} | programming language = [[C++]] | operating system = [[Cross-platform software|Cross-platform]] | genre = [[Compiler]] | license = [[Apache License 2.0]] with LLVM Exceptions (v9.0.0 or later)<ref name="License">{{cite web|url=https://releases.llvm.org/9.0.0/LICENSE.TXT|title=LICENSE.TXT|publisher=llvm.org|access-date=2019-09-24}}</ref><br> Legacy license:<ref>{{Cite web |title=LLVM Developer Policy β LLVM 20.0.0git documentation |url=https://llvm.org/docs/DeveloperPolicy.html#legacy |access-date=2024-11-09 |website=llvm.org}}</ref><!-- "The last paragraph notwithstanding, the LLVM Project is in the middle of a large effort to change licenses .. Starting on 2024-06-01 (first of June 2024), new contributions only need to be covered by the new LLVM license, i.e. Apache-2.0 WITH LLVM-exception. Before this date, the project required all contributions to be made under both the new license and the legacy license. .. A small portion of LLVM code remains exclusively covered by the legacy license. Contributions after 2024-06-01 are covered exclusively by the new license."--> [[University of Illinois/NCSA Open Source License|UIUC]] ([[BSD licenses|BSD-style]]) | website = {{URL|https://www.llvm.org}} }} '''LLVM''', also called LLVM Core, is a target-independent optimizer and code generator.<ref>{{Cite web| title = The LLVM Compiler Infrastructure Project| access-date = March 11, 2016| url = http://llvm.org/}}</ref> It can be used to develop a [[Compiler#Front end|frontend]] for any [[programming language]] and a [[Compiler#Back end|backend]] for any [[instruction set architecture]]. LLVM is designed around a [[language-independent specification|language-independent]] [[intermediate representation]] (IR) that serves as a [[Software portability|portable]], high-level [[assembly language]] that can be [[optimizing compiler|optimized]] with a variety of transformations over multiple passes.<ref name="langref">{{cite web|url=http://llvm.org/docs/LangRef.html|title=LLVM Language Reference Manual|access-date=June 9, 2019}}</ref> 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]].<ref>{{Cite web |title=The LLVM Compiler Infrastructure Project |url=https://llvm.org/|access-date=January 13, 2025 |website=llvm.org|archive-date=December 29, 2024 |archive-url=https://archive.today/20241229083604/https://llvm.org/}}</ref> LLVM is written in [[C++]] and is designed for [[compile-time]], [[Linker (computing)|link-time]], [[runtime (program lifecycle phase)|runtime]], and "idle-time" optimization. Originally implemented for [[C (programming language)|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 (programming language)|Ada]], [[C Sharp (programming language)|C#]] for [[.NET]],<ref>{{Cite web |title=Announcing LLILC - A new LLVM-based Compiler for .NET |url=https://dotnetfoundation.org/blog/2015/04/14/announcing-llilc-llvm-for-dotnet|access-date=2020-09-12 |website=dotnetfoundation.org|archive-date=December 12, 2021 |archive-url=https://web.archive.org/web/20211212184833/https://dotnetfoundation.org/blog/2015/04/14/announcing-llilc-llvm-for-dotnet |url-status=dead}}</ref><ref>{{cite web |url= http://www.mono-project.com/Mono_LLVM |title=Mono LLVM |access-date=March 10, 2013}}</ref><ref>{{cite book |last=Lattner |first=Chris |author-link=Chris Lattner |editor1-last=Brown |editor1-first=Amy |editor2-last=Wilson |editor2-first=Greg |year=2011 |title=The Architecture of Open Source Applications |url=http://www.aosabook.org/ |chapter=LLVM |chapter-url=http://www.aosabook.org/en/llvm.html}}</ref> [[Common Lisp]],<ref>{{cite web |title=Clasp |url=https://clasp-developers.github.io/ |publisher=Clasp Developers |access-date=2 December 2024}}</ref> [[PicoLisp]], [[Crystal (programming language)|Crystal]], [[CUDA]], [[D (programming language)|D]],<ref>{{cite web |title=LDC |url=https://wiki.dlang.org/LDC |website=D Wiki |access-date=2 December 2024}}</ref> [[Delphi (software)|Delphi]],<ref>{{cite web |title=LLVM-based Delphi Compilers |url=https://docwiki.embarcadero.com/RADStudio/Sydney/en/LLVM-based_Delphi_Compilers |publisher=Embarcadero |access-date=26 November 2024}}</ref> [[Dylan (programming language)|Dylan]], [[Forth (programming language)|Forth]],<ref>{{Cite web |url=https://github.com/reschivon/movForth |title=MovForth |website=[[GitHub]] |date=November 28, 2021}}</ref> [[Fortran]],<ref>{{cite web |title=The Flang Compiler |url=https://flang.llvm.org |publisher=LLVM Project |access-date=2 December 2024}}</ref> [[FreeBASIC]], [[Free Pascal]], [[Halide (programming language)|Halide]], [[Haskell]], [[Idris (programming language)|Idris]],<ref>{{Cite web |title=Rapid |url=https://rapid.sinyax.net/ |access-date=2024-11-22 |website=Rapid |language=en-gb}}</ref> [[Jai (programming language)|Jai]] (only for optimized release builds), [[Java bytecode]], [[Julia (programming language)|Julia]], [[Kotlin (programming language)|Kotlin]], [[LabVIEW]]'s G language,<ref>{{cite web|url=http://www.electronicdesign.com/test-measurement/what-s-difference-between-labview-2017-and-labview-nxg|title=What's the Difference Between LabVIEW 2017 and LabVIEW NXG?|author=William Wong|date=May 23, 2017|website=[[Electronic Design (magazine)|Electronic Design]]}}</ref><ref>{{cite web | url=https://www.ni.com/en/support/documentation/supplemental/10/ni-labview-compiler--under-the-hood.html | title=NI LabVIEW Compiler: Under the Hood }}</ref> [[Objective-C]], [[OpenCL]],<ref>{{cite news |last = Larabel |first = Michael |date = 11 April 2018 |url = https://www.phoronix.com/scan.php?page=news_item&px=SPIRV-LLVM-Translator |title = Khronos Officially Announces Its LLVM/SPIR-V Translator |work = Phoronix.com }}</ref> [[PostgreSQL]]'s SQL and PLpgSQL,<ref>{{Cite web|date=2020-11-12|title=32.1. What is JIT compilation?|url=https://www.postgresql.org/docs/11/jit-reason.html|access-date=2021-01-25 |website=PostgreSQL Documentation|language=en}}</ref> [[Ruby (programming language)|Ruby]],<ref>{{cite web|title=Features|url=http://www.rubymotion.com/tour/features/|website=RubyMotion|publisher=Scratchwork Development LLC|access-date=June 17, 2017|quote=[[RubyMotion]] transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.}}</ref> [[Rust (programming language)|Rust]],<ref>{{Cite web|url=https://rustc-dev-guide.rust-lang.org/backend/codegen.html|title=Code Generation - Guide to Rustc Development|website=rust-lang.org|access-date=2023-01-04}}</ref> [[Scala (programming language)|Scala]],<ref>{{Cite web|last=Reedy |first=Geoff |date=September 24, 2012 |title=Compiling Scala to LLVM |location=St. Louis, Missouri, United States |access-date=February 19, 2013 |url=http://www.infoq.com/presentations/Scala-LLVM}}</ref><ref>{{cite web |title=Scala Native |url=https://scala-native.org/ |access-date=26 November 2023}}</ref> [[Standard ML]],<ref>{{cite web |title=LLVMCodegen |url=http://mlton.org/LLVMCodegen |website=MLton |access-date=26 November 2024}}</ref> [[Swift (programming language)|Swift]], [[Xojo]], and [[Zig (programming language)|Zig]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)