LLVM
| LLVM | |
|---|---|
| Persoas e organizacións | |
|
Deseñador/a
| |
|
Desenvolvedor
| |
| Produción | |
|
Versións
21.1.6 versión estábel (18 de novembro de 2025)
18.1.1 versión estábel (8 de marzo de 2024) 18.1.0 versión estábel (6 de marzo de 2024) 17.0.6 versión estábel (28 de novembro de 2023) 17.0.5 versión estábel (14 de novembro de 2023) 18.1.2 versión estábel (19 de marzo de 2024) 18.1.4 versión estábel (16 de abril de 2024) 18.1.3 versión estábel (3 de abril de 2024) 18.1.6 versión estábel (18 de maio de 2024) 18.1.5 versión estábel (2 de maio de 2024) 18.1.7 versión estábel (5 de xuño de 2024) 17.0.4 versión estábel (31 de outubro de 2023) 17.0.2 versión estábel (3 de outubro de 2023) 16.0.3 versión estábel (3 de maio de 2023) 16.0.1 versión estábel (5 de abril de 2023) 16.0.0 versión estábel (18 de marzo de 2023) 17.0.3 versión estábel (17 de outubro de 2023) 16.0.4 versión estábel (17 de maio de 2023) 16.0.6 versión estábel (14 de xuño de 2023) 16.0.5 versión estábel (2 de xuño de 2023) 17.0.1 versión estábel (19 de setembro de 2023) 21.1.4 versión estábel (21 de outubro de 2025) 18.1.8 versión estábel (18 de xuño de 2024) 19.1.1 versión estábel (1 de outubro de 2024) 20.1.7 versión estábel (13 de xuño de 2025) 20.1.6 versión estábel (29 de maio de 2025) 20.1.5 versión estábel (14 de maio de 2025) 20.1.4 versión estábel (30 de abril de 2025) 20.1.8 versión estábel (9 de xullo de 2025) 21.1.1 versión estábel (10 de setembro de 2025) 21.1.0 versión estábel (26 de agosto de 2025) 21.1.3 versión estábel (7 de outubro de 2025) 21.1.2 versión estábel (24 de setembro de 2025) 19.1.0 versión estábel (17 de setembro de 2024) 20.1.3 versión estábel (16 de abril de 2025) 20.1.1 versión estábel (19 de marzo de 2025) 19.1.4 versión estábel (19 de novembro de 2024) 19.1.3 versión estábel (30 de outubro de 2024) 19.1.2 versión estábel (15 de outubro de 2024) 20.1.2 versión estábel (2 de abril de 2025) 19.1.5 versión estábel (3 de decembro de 2024) 19.1.7 versión estábel (14 de xaneiro de 2025) 19.1.6 versión estábel (17 de decembro de 2024) 20.1.0 versión estábel (4 de marzo de 2025) 15.0.7 versión estábel (12 de xaneiro de 2023) 21.1.5 versión estábel (4 de novembro de 2025) 15.0.5 versión estábel (16 de novembro de 2022) 5.0.1 versión estábel (21 de decembro de 2017) 13.0.0 versión estábel (4 de outubro de 2021) 5.0.0 versión estábel (7 de setembro de 2017) 4.0.1 versión estábel (10 de xuño de 2017) 13.0.1 versión estábel (2 de febreiro de 2022) 6.0.0 versión estábel (8 de marzo de 2018) 7.0.0 versión estábel (19 de setembro de 2018) 8.0.1 versión estábel (19 de xullo de 2019) 6.0.1 versión estábel (5 de xullo de 2018) 8.0.0 versión estábel (20 de marzo de 2019) 15.0.6 versión estábel (30 de novembro de 2022) 9.0.0 versión estábel (19 de setembro de 2019) 14.0.0 versión estábel (25 de marzo de 2022) 14.0.2 versión estábel (27 de abril de 2022) 15.0.3 versión estábel (18 de outubro de 2022) 15.0.2 versión estábel (4 de outubro de 2022) 3.9.1 versión estábel (23 de decembro de 2016) 15.0.4 versión estábel (2 de novembro de 2022) 14.0.1 versión estábel (13 de abril de 2022) 4.0.0 versión estábel (13 de marzo de 2017) 15.0.0 versión estábel (6 de setembro de 2022) 14.0.3 versión estábel (29 de abril de 2022) 15.0.1 versión estábel (20 de setembro de 2022) 14.0.5 versión estábel (11 de xuño de 2022) 14.0.6 versión estábel (25 de xuño de 2022) 9.0.1 versión estábel (20 de decembro de 2019) 16.0.0-rc1 release candidate version (en) 13.0.1-rc2 pre-release version (en) 13.0.1-rc3 pre-release version (en) 13.0.1-rc1 pre-release version (en) 14.0.4 (25 de maio de 2022) 16.0.2 (19 de abril de 2023) 3.8.1 (11 de xullo de 2016) 3.9.0 (2 de setembro de 2016) 3.7 7.1.0 (11 de maio de 2019) 10.0.0 (24 de marzo de 2020) 12.0.0 (14 de abril de 2021) 1.0 (24 de outubro de 2003) 12.0.1 (9 de xullo de 2021) 10.0.1 (22 de xullo de 2020) 11.1.0 (17 de febreiro de 2021) 11.0.0 (12 de outubro de 2020) 11.0.1 (6 de xaneiro de 2021) | |
|
Licenza
| |
| Características | |
|
Sistema operativo
| |
|
Linguaxe de programación
| |
| Datas e cronoloxía | |
|
Creación
| |
| Fontes e ligazóns | |
|
Blog oficial
| |
|
Páxina WEB
| |
|
Repositorio
| |
| Wikidata C:Commons |
LLVM, tamén chamado LLVM Core, é un optimizador e xerador de código independente.[1] Pode ser utilizado para desenvolver un frontend para calquera linguaxe de programación e un backend para calquera arquitectura de conxunto de instrucións. LLVM está deseñado arredor dunha representación intermedia (IR) independente da linguaxe que serve como un linguaxe ensambladora portátil e de alto nivel que pode ser optimizada con diversas transformacións a través de múltiples pasaxes.[2] O nome LLVM orixinalmente significaba Low Level Virtual Machine. Con todo, o proxecto ampliouse desde entón, e o nome xa non é un acrónimo senón un inicialismo orfo.[3]
LLVM está escrito en C++ e está deseñado para optimización en tempo de compilación, tempo de enlace, tempo de execución e "optimización en tempo inactivo". Inicialmente implementado para C e C++, o deseño independente da linguaxe de LLVM deu lugar desde entón a unha ampla variedade de frontends: as linguaxes con compiladores que utilizan LLVM (ou que non utilizan directamente LLVM pero poden xerar programas compilados como LLVM IR) inclúen ActionScript, Ada, C# para .NET,[4][5][6] Common Lisp,[7] PicoLisp, Crystal, CUDA, D,[8] Delphi,[9] Dylan, Forth,[10] Fortran,[11] FreeBASIC, Free Pascal, Halide, Haskell, Idris,[12] Jai (só para compilacións de liberación optimizadas), bytecode de Java, Julia, Kotlin, a linguaxe G de LabVIEW,[13][14] Objective-C, OpenCL[15], SQL e PLpgSQL[16] de PostgreSQL, Ruby,[17] Rust,[18] Scala,[19][20] Standard ML,[21] Swift, Xojo e Zig.
Historia
[editar | editar a fonte]O proxecto LLVM comezou en 2000 na Universidade de Illinois en Urbana–Champaign, baixo a dirección de Vikram Adve e Chris Lattner. LLVM foi desenvolvido inicialmente como unha infraestrutura de investigación para investigar técnicas de compilación dinámica para linguaxes de programación estáticas e dinámicas. LLVM foi liberado baixo a Licenza de Código Aberto da Universidade de Illinois/NCSA,[22] unha licenza de software libre permisiva. En 2005, Apple Inc. contratou a Lattner e formou un equipo para traballar no sistema LLVM para diversos usos dentro dos sistemas de desenvolvemento de Apple.[23] LLVM foi unha parte integral das ferramentas de desenvolvemento Xcode de Apple para macOS e iOS desde Xcode 4 en 2011.[24]
En 2006, Lattner comezou a traballar nun novo proxecto chamado Clang. A combinación do frontend Clang e do backend LLVM denomínase Clang/LLVM ou simplemente Clang.
O nome LLVM era orixinalmente un inicialismo para Low Level Virtual Machine. Con todo, o proxecto LLVM evolucionou cara a un proxecto paraguas que ten pouca relación co que a maioría dos desenvolvedores actuais consideran unha máquina virtual. Isto fixo que o inicialismo fose "confuso" e "inadecuado", e desde 2011 LLVM é "oficialmente xa non un acrónimo"[25], senón unha marca que se aplica ao proxecto paraguas de LLVM.[26] O proxecto abrangue a representación intermedia (IR) de LLVM, o depurador de LLVM, a implementación de LLVM da Biblioteca Estándar de C++ (con soporte completo para C++11 e C++14[27]), etc. LLVM é administrado pola Fundación LLVM. A enxeñeira de compiladores Tanya Lattner converteuse na súa presidenta en 2014[28].
"Para o deseño e a implementación de LLVM", a Asociación para a Maquinaria de Computación presentou a Vikram Adve, Chris Lattner e Evan Cheng co Premio ao Sistema de Software ACM 2012.[29]
O proxecto estaba orixinalmente dispoñible baixo a licenza UIUC. Despois da versión 9.0.0 lanzada en 2019,[30] LLVM foi re-licenciado baixo a Licenza Apache 2.0 con Excepcións de LLVM. A partir de novembro de 2022, aproximadamente 400 contribucións non foron re-licenciadas.[31][32]
Características
[editar | editar a fonte]LLVM pode proporcionar as capas intermedias dun sistema de compilador completo, tomando código de representación intermedia (IR) dun compilador e emitindo un IR optimizado. Este novo IR pode ser convertido e vinculado a código de linguaxe ensambladora dependente da máquina para unha plataforma de destino. LLVM pode aceptar o IR da colección de ferramentas do GNU Compiler Collection (GCC), permitindo que se utilice cunha ampla variedade de frontends de compilador existentes escritos para ese proxecto. LLVM tamén se pode compilar con gcc despois da versión 7.5.[33]
Notas
[editar | editar a fonte]- ↑ "The LLVM Compiler Infrastructure Project". Consultado o 11 de marzo de 2016.
- ↑ "LLVM Language Reference Manual". Consultado o 9 de xuño de 2019.
- ↑ "The LLVM Compiler Infrastructure Project". llvm.org. Arquivado dende o orixinal o 29 de decembro de 2024. Consultado o 13 de xaneiro de 2025.
- ↑ "Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Arquivado dende o orixinal o 12 de decembro de 2021. Consultado o 2020-09-12.
- ↑ "Mono LLVM". Consultado o 10 de marzo de 2013.
- ↑ Lattner, Chris (2011). "LLVM". En Brown, Amy; Wilson, Greg. The Architecture of Open Source Applications.
- ↑ "Clasp". Clasp Developers. Consultado o 2 de decembro de 2024.
- ↑ "Clasp". Clasp Developers. Consultado o 2 de decembro de 2024.
- ↑ "LLVM-based Delphi Compilers". Embarcadero. Consultado o 26 de novembro de 2024.
- ↑ "MovForth". GitHub. 28 de novembro de 2021.
- ↑ "The Flang Compiler". LLVM Project. Consultado o 2 de decembro de 2024.
- ↑ "Rapid". Rapid (en inglés). Consultado o 2024-11-22.
- ↑ William Wong (23 de maio de 2017). "What's the Difference Between LabVIEW 2017 and LabVIEW NXG?". Electronic Design.
- ↑ "NI LabVIEW Compiler: Under the Hood".
- ↑ Larabel, Michael (11 de abril de 2018). "Khronos Officially Announces Its LLVM/SPIR-V Translator". Phoronix.com.
- ↑ "32.1. What is JIT compilation?". PostgreSQL Documentation (en inglés). 2020-11-12. Consultado o 2021-01-25.
- ↑ "Features". RubyMotion. Scratchwork Development LLC. Consultado o 17 de xuño de 2017.
RubyMotion transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.
- ↑ "Code Generation - Guide to Rustc Development". rust-lang.org. Consultado o 2023-01-04.
- ↑ Reedy, Geoff (24 de setembro de 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Consultado o 19 de febreiro de 2013.
- ↑ "Scala Native". Consultado o 26 de novembro de 2023.
- ↑ "LLVMCodegen". MLton. Consultado o 26 de novembro de 2024.
- ↑ "University of Illinois/NCSA Open Source License". Choose a License (en inglés). 2025-04-15. Consultado o 2025-09-18.
- ↑ Adam Treat (19 de febreiro de 2005). "mkspecs and patches for LLVM compile of Qt4". Arquivado dende o orixinal o 4 de outubro de 2011. Consultado o 27 de xaneiro de 2012.
- ↑ "Developer Tools Overview". Apple Developer. Apple. Arquivado dende o orixinal o 23 de abril de 2011.
- ↑ Lattner, Chris (21 de decembro de 2011). "The name of LLVM". llvm-dev (Lista de correo). Consultado o 2 de marzo de 2016.
'LLVM' is officially no longer an acronym. The acronym it once expanded too was confusing, and inappropriate almost from day 1. :) As LLVM has grown to encompass other subprojects, it became even less useful and meaningless.
- ↑ Lattner, Chris (1 de xuño de 2011). "LLVM". En Brown, Amy; Wilson, Greg. The architecture of open source applications. Lulu.com. ISBN 978-1257638017.
The name 'LLVM' was once an acronym, but is now just a brand for the umbrella project.
- ↑ ""libc++" C++ Standard Library".
- ↑ Lattner, Chris (3 de abril de 2014). "The LLVM Foundation". LLVM Project Blog.
- ↑ "ACM Software System Award". ACM.
- ↑ Wennborg, Hans (19 de setembro de 2019). "[llvm-announce] LLVM 9.0.0 Release".
- ↑ "Relicensing Long Tail". foundation.llvm.org. 11 de novembro de 2022. Arquivado dende o orixinal o 13 de maio de 2024. Consultado o 1 de abril de 2022.
- ↑ "LLVM relicensing - long tail". LLVM Project. Consultado o 27 de novembro de 2022 – vía Google Docs.
- ↑ "⚙ D156286 [docs] Bump minimum GCC version to 7.5". reviews.llvm.org. Consultado o 2023-07-28.