<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=LLVM</id>
	<title>LLVM - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=LLVM"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=LLVM&amp;action=history"/>
	<updated>2026-05-23T20:59:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=LLVM&amp;diff=1380302&amp;oldid=prev</id>
		<title>imported&gt;Reztib42: /* Arbeitsweise */ Englischen Fachbegriff in Kursiv dargestellt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=LLVM&amp;diff=1380302&amp;oldid=prev"/>
		<updated>2026-04-27T05:19:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Arbeitsweise: &lt;/span&gt; Englischen Fachbegriff in Kursiv dargestellt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name= The LLVM Compiler Infrastructure&lt;br /&gt;
| Logo            = &lt;br /&gt;
| Maintainer      = Chris Lattner&amp;lt;ref name=&amp;quot;home&amp;quot;&amp;gt;[http://www.llvm.org/ The LLVM Compiler Infrastructure Project] (englisch) – offizielle Webseite&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Hersteller      = The LLVM Team&amp;lt;ref&amp;gt;[http://www.llvm.org/docs/FAQ.html llvm.org]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| AktuelleVersion = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum = &amp;lt;!-- Wikidata --&amp;gt; &lt;br /&gt;
| Betriebssystem  = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| Programmiersprache = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| Kategorie       = [[Compiler]]&lt;br /&gt;
| Lizenz          = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| Deutsch         = nein&lt;br /&gt;
| Website         = [http://www.llvm.org/ www.llvm.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LLVM&amp;#039;&amp;#039;&amp;#039; (früher &amp;#039;&amp;#039;&amp;#039;Low Level Virtual Machine&amp;#039;&amp;#039;&amp;#039;) ist ein modulares [[Compiler]]-System mit einem virtuellen [[Befehlssatz]], einem übergreifend optimierenden Übersetzungskonzept und einer [[Virtuelle Maschine|virtuellen Maschine]], die einen [[Hauptprozessor]] virtualisiert.&amp;lt;ref name=&amp;quot;llvm.org&amp;quot;&amp;gt;[http://www.llvm.org/pubs/2002-12-LattnerMSThesis.html llvm.org]&amp;lt;/ref&amp;gt; LLVM kann zur Entwicklung von Frontends für beliebige [[Programmiersprache]]n und Backends für beliebige [[Befehlssatzarchitektur]]en verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Kennzeichnend für LLVM ist unter anderem, dass sämtliche Zeitphasen eines [[Programmablauf]]s inklusive des [[Leerlaufprozess]]es&amp;lt;ref&amp;gt;[http://www.llvm.org/docs/LinkTimeOptimization.html llvm.org]&amp;lt;/ref&amp;gt; zur Optimierung herangezogen werden können.&lt;br /&gt;
&lt;br /&gt;
LLVM ist als [[freie Software]] unter der [[University of Illinois/NCSA Open Source License]] verfügbar, die der 3-Klausel-[[BSD-Lizenz]] und der [[MIT-Lizenz]] ähnelt.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Die Entwicklung von LLVM begann im Jahr 2000 unter der Leitung von [[Chris Lattner]] und [[Vikram Adve]] an der [[University of Illinois at Urbana-Champaign|Universität von Illinois]]. Das Projekt wurde ursprünglich als Forschungsarbeit zur Untersuchung dynamischer Kompilierung und Optimierungen entwickelt. Heute beheimatet es eine Vielzahl an Unterprojekten und Erweiterungen aus der aktuellen Compilerforschung und -entwicklung.&amp;lt;ref name=&amp;quot;home&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;[http://www.llvm.org/ProjectsWithLLVM/ llvm.org]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;users&amp;quot;&amp;gt;[http://www.llvm.org/Users.html &amp;#039;&amp;#039;The LLVM Users&amp;#039;&amp;#039;.] llvm.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
„LLVM“ ist heute der volle Name des Projekts und kein Akronym.&amp;lt;ref name=&amp;quot;home&amp;quot;&amp;gt;[http://www.llvm.org/ The LLVM Compiler Infrastructure Project] (englisch) – offizielle Webseite&amp;lt;/ref&amp;gt; LLVM wurde früher als „Low Level Virtual Machine“ übersetzt, was für Verwirrung sorgt. Mit der Zeit wurde LLVM ein Rahmenprojekt, in dem verschiedene Compiler- und Low-Level-Techniken enthalten sind. Inzwischen ist &amp;#039;&amp;#039;LLVM&amp;#039;&amp;#039; die Marke für das eigentliche Projekt, die LLVM-Zwischensprache (LLVM-IR), den LLVM-[[Debugger]] (LLDB), die LLVM-Standard-C++-Bibliothek (libc++) etc.&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
Herkömmliche [[Compiler]]systeme führen Optimierungsvorgänge meist beim Kompilieren durch und verbinden die kompilierten Module dann miteinander. Dieser zweite Vorgang wird Binden oder auch [[Linker (Computerprogramm)|Linken]] genannt und bietet ebenfalls Optimierungsmöglichkeiten, die bisher wenig genutzt wurden, da der Linker nur die einzelnen Module sieht und nicht das gesamte Programm. Hier setzt LLVM an, indem es einen nach Vorbild der [[Reduced Instruction Set Computer|RISC]]-Befehlssätze gestalteten virtuellen [[Bytecode]] erstellt, der während des Linkens mit dem eigenen Linker &amp;lt;code&amp;gt;lld&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;https://lld.llvm.org/ LLD – The LLVM Linker&amp;lt;/ref&amp;gt; noch einmal optimiert werden kann.&amp;lt;ref name=&amp;quot;llvm.org&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |autor=Hans-Joachim Baader |url=http://www.pro-linux.de/news/1/8162/llvm-15-freigegeben.html |titel=LLVM 1.5 freigegeben |werk=Pro-Linux |datum=2005-05-20 |sprache=en |abruf=2010-12-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Teil der Architektur von LLVM basiert auf einer virtuellen Maschine, die einen Prozessor virtualisiert. Ein Prozessor kann dabei nicht nur ein [[Prozessor|Hauptprozessor]] (CPU) sein, sondern auch ein [[Grafikprozessor]] (GPU). Die virtuelle Maschine ist in der Lage, die intern generierte Sprache (sog. [[Zwischencode|intermediate language]]) des Compilers (LLVM Assembly Language)&amp;lt;ref&amp;gt;[http://llvm.org/docs/LangRef.html#introduction llvm.org]&amp;lt;/ref&amp;gt; während der Ausführung für den Prozessor des aktuellen Systems zu übersetzen. Kennzeichnend ist hierbei, dass sie hocheffizient ist, was die Übersetzung auch &amp;#039;&amp;#039;just in time&amp;#039;&amp;#039; (also auf Anforderung, bei Bedarf) ermöglicht, und diese mit einer Größe von nur 20&amp;amp;nbsp;kB extrem kompakt ist, wodurch die Ausführung auch auf einfachen Prozessoren, älteren Grafikprozessoren (GPUs) oder Embedded-CPUs, und insbesondere sogar direkt im [[Cache]] möglich ist.&lt;br /&gt;
&lt;br /&gt;
Über ein flexibles LLVM-Backend ist es möglich, eine fast beliebige Vielzahl unterschiedlichster Prozessorarchitekturen zu unterstützen.&amp;lt;ref name=&amp;quot;features&amp;quot;&amp;gt;[http://llvm.org/Features.html &amp;#039;&amp;#039;LLVM Features&amp;#039;&amp;#039;.] llvm.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die LLVM-Bibliotheken können von Compilerprojekten, denen das Schreiben eines eigenen Codegenerators zu aufwendig wäre, eingesetzt werden, um auf einfache Weise [[Maschinencode]] (Bitcode, Microcode) zu erzeugen. Zum Beispiel muss das Compiler-Frontend [[Clang]], welches Bestandteil von LLVM ist, nur den C- bzw. C++-Code parsen und in die LLVM-Zwischensprache (LLVM Intermediate Representation, LLVM IR) übersetzen. Das Erzeugen von effizientem Maschinencode kann dem LLVM-Backend überlassen werden. Bei diesem Beispiel kommt die virtuelle Maschine nicht zum Einsatz, da LLVM hier nur als Compiler-Backend für die jeweilige Architektur (x86, PowerPC, IA64, …) agiert.&amp;lt;ref&amp;gt;[http://www.aosabook.org/en/llvm.html LLVM.] aosabook.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
Der LLVM-Compiler verwendet ab Version 2.9 primär [[Clang]] als [[Compiler#Frontend (auch „Analysephase“)|Frontend]]. Dabei eignet sich LLVM dazu, Programme, die in frei wählbaren Programmiersprachen geschrieben wurden, zu kompilieren. Derzeit kann Programmcode unter anderem in den [[Programmiersprache]]n [[C (Programmiersprache)|C]], [[C++]], [[Objective-C]], [[Swift (Programmiersprache)|Swift]], [[Java (Programmiersprache)|Java]], [[Embarcadero Delphi|Delphi]], [[Julia (Programmiersprache)|Julia]], [[D (Programmiersprache)|D]], [[Ada (Programmiersprache)|Ada]], [[Fortran]], [[Haskell (Programmiersprache)|Haskell]], [[Dylan (Programmiersprache)|Dylan]], [[Gambas (Programmiersprache)|Gambas]], [[Python (Programmiersprache)|Python]], [[Ruby (Programmiersprache)|Ruby]], [[Rust (Programmiersprache)|Rust]], [[ActionScript]], [[Vala (Programmiersprache)|Vala]], [[Zig (Programmiersprache)|Zig]], Genie  und [[OpenGL Shading Language|GLSL]] und Crystal kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Mit LLVM lassen sich [[virtuelle Maschine]]n für Sprachen wie Java, plattformspezifische Codegeneratoren und von Sprache und Plattform unabhängige Optimierer erstellen. Die LLVM-Zwischenschicht (IR) liegt zwischen sprachspezifischen Modulen und den jeweiligen Codegeneratoren und kann als eine Art plattformunabhängige Assemblersprache betrachtet werden. LLVM unterstützt weiterhin dynamische, [[Prozedurale Programmierung|interprozedurale]] Optimierung sowie statische [[Ahead-of-time-Compiler|Ahead-of-time-]] und [[Just-in-time-Kompilierung]].&amp;lt;ref name=&amp;quot;features&amp;quot; /&amp;gt; Ein Beispiel für LLVM-IR:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;llvm&amp;quot;&amp;gt;&lt;br /&gt;
; String-Konstante als globale Konstante deklarieren&lt;br /&gt;
@.str = private unnamed_addr constant [13 x i8] c&amp;quot;hello world\0A\00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Externe Deklaration der `puts()`-Funktion (enthalten in libc)&lt;br /&gt;
declare i32 @puts(i8* nocapture) nounwind&lt;br /&gt;
&lt;br /&gt;
; Definition der `main()`-Funktion&lt;br /&gt;
define i32 @main() {  ; i32()*&lt;br /&gt;
  ; Konvertiere [13 x i8]* zu i8 *... (Pointer auf i8-Elemente)&lt;br /&gt;
  %cast210 = getelementptr [13 x i8]* @.str, i64 0, i64 0&lt;br /&gt;
&lt;br /&gt;
  ; Rufe `puts()`-Funktion auf, um Text auszugeben&lt;br /&gt;
  call i32 @puts(i8* %cast210)&lt;br /&gt;
  ret i32 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
; Metadaten&lt;br /&gt;
!1 = metadata !{i32 42}&lt;br /&gt;
!foo = !{!1, null}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clang ===&lt;br /&gt;
{{Hauptartikel|Clang}}&lt;br /&gt;
Clang ist ein für LLVM entwickeltes [[Front-End und Back-End|Frontend]], das für [[C (Programmiersprache)|C]]-ähnliche Sprachen optimiert ist. Es ermöglicht gegenüber dem [[GNU Compiler Collection|GCC]]-Oberbau vor allem schnellere Übersetzungsläufe mit geringerem Speicherverbrauch und als Ergebnis oft kleinere [[ausführbare Datei]]en. Zudem verfügt es über umfangreichere und genauere statische Analysemethoden, die dem Entwickler z.&amp;amp;nbsp;B. die Fehlersuche erleichtern. Die Unterstützung der Programmiersprache [[C++]] gilt ab Version 2.7 als stabil.&amp;lt;ref&amp;gt;[http://clang.llvm.org/ &amp;#039;&amp;#039;clang: a C language family frontend for LLVM&amp;#039;&amp;#039;.] LLVM; Stand: 18.&amp;amp;nbsp;Oktober 2010.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seit September 2009 gilt Clang offiziell als stabil und produktiv verwendbar. Ab LLVM Version 2.6 befindet es sich als fester Bestandteil im LLVM-Compiler-Paket.&amp;lt;ref&amp;gt;{{Webarchiv |url=http://lists.cs.uiuc.edu/pipermail/llvm-announce/2009-October/000033.html |text=&amp;#039;&amp;#039;LLVM 2.6 Release!&amp;#039;&amp;#039;. |wayback=20120111044935}} lists.cs.uiuc.edu, 23.&amp;amp;nbsp;Oktober 2009 (englisch)&amp;lt;/ref&amp;gt; Clang lässt sich aber auch ohne LLVM als rein statisches Codeanalyse- und Debug-Werkzeug, zum Beispiel beim Einsatz mit anderen Compilern, verwenden.&amp;lt;ref&amp;gt;[http://clang.llvm.org/diagnostics.html &amp;#039;&amp;#039;Expressive Diagnostics&amp;#039;&amp;#039;.] LLVM; Stand: 27.&amp;amp;nbsp;November 2009 (englisch)&amp;lt;/ref&amp;gt; Clang ist seit 2013 zur [[Statische Code-Analyse|statischen Code-Analyse]] in die Entwicklungsumgebung &amp;#039;&amp;#039;[[Xcode]]&amp;#039;&amp;#039; von Apple für die Programmiersprachen C, Objective-C und C++ integriert.&lt;br /&gt;
&lt;br /&gt;
=== LLDB ===&lt;br /&gt;
LLDB ist ein auf Techniken des LLVM-Projektes aufbauender und für C-basierte Sprachen optimierter, modularer und hochdynamischer [[Debugger]]. Er soll besonders speichereffizient und zugleich extrem leistungsfähig und schnell sein. Er verfügt über eine Plug-in-[[Schnittstelle]] zum Beispiel für die Unterstützung anderer Programmiersprachen. Zudem lassen sich Aufgaben mit Hilfe von [[Python (Programmiersprache)|Python]] automatisieren. Zu den Zielsetzungen zählt eine umfassende Unterstützung für das Debuggen von [[Multithreading]]-Code.&amp;lt;ref&amp;gt;[http://lldb.llvm.org/goals.html &amp;#039;&amp;#039;The LLDB Debugger Goals&amp;#039;&amp;#039;.] lldb.llvm.org&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Chris Lattner: [http://blog.llvm.org/2010/06/new-lldb-debugger.html &amp;#039;&amp;#039;New “lldb” Debugger&amp;#039;&amp;#039;.] blog.llvm.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DragonEgg ===&lt;br /&gt;
Bei DragonEgg handelt es sich um ein LLVM-Plugin für die GNU Compiler Collection (ab Version 4.5).&amp;lt;ref&amp;gt;[http://dragonegg.llvm.org/ dragonegg.llvm.org]&amp;lt;/ref&amp;gt; Dieses ermöglicht es, LLVM optional als Compiler-Backend einer ungepatchten GCC-Installation zu nutzen. DragonEgg wurde zu Beginn der Entwicklung nur als „the gcc plugin“ bezeichnet. DragonEgg löst die bisher häufig verwendete LLVM-GCC-Mischkonfiguration ab.&lt;br /&gt;
&lt;br /&gt;
=== vmkit ===&lt;br /&gt;
Hierbei handelt es sich um einen modifizierten Zweig ([[Abspaltung (Softwareentwicklung)|Fork]]) der LLVM-VM, welche die direkte Ausführung von Java- und [[Common Intermediate Language|CIL]]-[[Bytecode]] ([[.Net-Framework]]/[[Mono (Software)|Mono]]) ermöglicht. Der Compiler beziehungsweise Linker kann das hochkompakte vmkit (ca. 20&amp;amp;nbsp;kB) vor den Java- oder CIL-Bytecode packen und ausführen, wodurch die Ausführung auf beliebigen Prozessorarchitekturen und auf Systemen ohne vorherige Installation von Java oder .NET möglich ist. Das Projekt wird allerdings derzeit nicht mehr offiziell unterstützt.&amp;lt;ref&amp;gt;[http://vmkit.llvm.org/ vmkit.llvm.org]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== KLEE ===&lt;br /&gt;
Mit KLEE kann man Programme [[Unüberwachtes Lernen|unüberwacht]] und automatisch auf [[Programmfehler]] untersuchen lassen. Dabei wird das Programm Schritt für Schritt ausgeführt. Statt konkreter Werte werden Eingabe und Zwischenresultate [[Symbolische Mathematik|symbolisch]] verwendet und jeweils gespeichert, welche Werte diese haben könnten. Dabei wird bei „gefährlichen Operationen“ (englisch: „dangerous operations“, zum Beispiel Divisionen oder Speicherzugriffe per Zeiger) geprüft, ob sie einen Fehler erzeugen könnten, zum Beispiel eine Division durch null oder einen Zugriff auf nicht reservierten Speicher. KLEE gibt dann aus, bei welcher Eingabe das Programm den Fehler erzeugt und welcher Pfad durch den Quellcode dabei genommen wird.&amp;lt;ref&amp;gt;Cristian Cadar, Daniel Dunbar, Dawson Engler: [http://llvm.org/pubs/2008-12-OSDI-KLEE.html KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs]. Universität Stanford, 2008.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unterstützte Architekturen ==&lt;br /&gt;
LLVM unterstützt eine große Anzahl von [[Prozessorarchitektur]]en:&lt;br /&gt;
* [[X86-Prozessor|x86]], [[AMD64]]&lt;br /&gt;
* [[PowerPC]], PowerPC 64Bit&lt;br /&gt;
* [[ARM-Architektur|ARM]], Thumb&lt;br /&gt;
* [[Sun SPARC|SPARC]]&lt;br /&gt;
* [[Alpha-Prozessor|Alpha]]&lt;br /&gt;
* [[Cell (Prozessor)|CellSPU]]&lt;br /&gt;
* PIC16 [[MIPS-Architektur|MIPS]]&lt;br /&gt;
* [[MSP430]]&lt;br /&gt;
* [[System z]]&lt;br /&gt;
* [[XMOS]] Xcore&lt;br /&gt;
* [[68k]]&lt;br /&gt;
Jedoch gibt es noch einige Einschränkungen. Das Frontend (llvm-gcc) ist noch nicht für jede Plattform lauffähig. Dies kann umgangen werden, indem die LLVM als [[Cross-Compiler]] dient. Hier sollten eventuelle Abhängigkeiten, zum Beispiel die [[Programmbibliothek]], berücksichtigt werden.&amp;lt;ref name=&amp;quot;features&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Das Projekt startete 2000 an der &amp;#039;&amp;#039;University of Illinois at Urbana–Champaign&amp;#039;&amp;#039; als Studienprojekt von Vikram Adve und Chris Lattner. Als die Firma [[Apple]] darauf aufmerksam wurde, stellte sie 2005 ein festes Entwicklerteam für die Weiterentwicklung von LLVM zusammen und stellte Chris Lattner als dessen Projektleiter an.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Adam Treat |url=http://lists.trolltech.com/qt4-preview-feedback/2005-02/msg00691.html |titel=mkspecs and patches for LLVM compile of Qt4 |werk=Qt4-preview-feedback-Mailingliste |datum=2005-02-19 |sprache=en |offline=1 |archiv-url=https://web.archive.org/web/20111004073001/http://lists.trolltech.com/qt4-preview-feedback/2005-02/msg00691.html |archiv-datum=2011-10-04 |abruf=2010-12-05}}&amp;lt;/ref&amp;gt; LLVM ist seit Juli 2008 Standardcompiler in Apples Entwicklungsumgebung [[Xcode]].&amp;lt;ref&amp;gt;[https://developer.apple.com/library/mac/#documentation/CompilerTools/Conceptual/LLVMCompilerOverview/_index.html developer.apple.com]&amp;lt;/ref&amp;gt; Ab Version 2.6 vom Oktober 2009 ist das Compiler-Frontend &amp;#039;&amp;#039;Clang&amp;#039;&amp;#039; integraler Bestandteil von LLVM.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Chris Lattner |url=http://lists.cs.uiuc.edu/pipermail/llvm-announce/2009-October/000033.html |titel=LLVM 2.6 Release! |werk=llvm-announce mailing list |datum=2009-10-23 |sprache=en |offline=1 |archiv-url=https://web.archive.org/web/20120111044935/http://lists.cs.uiuc.edu/pipermail/llvm-announce/2009-October/000033.html |archiv-datum=2012-01-11 |abruf=2010-12-05}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |autor=Hans-Joachim Baader |url=http://www.pro-linux.de/news/1/14864/llvm-26-freigegeben.html |titel=LLVM 2.6 freigegeben |werk=Pro-Linux |datum=2009-10-26 |abruf=2010-12-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2011 erhielt LLVM den [[Programming Languages Software Award]] von ACM SIGPLAN.&lt;br /&gt;
&lt;br /&gt;
== Aktuelle Entwicklung ==&lt;br /&gt;
Viele weitere Komponenten befinden sich derzeit in intensiver Entwicklung, unter anderem [[Frontend]]s für Java-[[Bytecode]], [[OpenCL]], Microsofts [[Common Intermediate Language|CIL]], [[Python (Programmiersprache)|Python]], [[Lua]], [[PHP]], [[Ruby (Programmiersprache)|Ruby]], [[Mono (Software)|Mono]]&amp;lt;ref&amp;gt;[http://www.mono-project.com/Mono_LLVM mono-project.com]&amp;lt;/ref&amp;gt; und Adobe [[ActionScript]].&amp;lt;ref name=&amp;quot;users&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Webarchiv |url=http://www.adobe.com/devnet/logged_in/abansod_iphone.html |text=&amp;#039;&amp;#039;Developing for the Apple iPhone using Flash&amp;#039;&amp;#039;. |wayback=20091219161935}} adobe.com&amp;lt;/ref&amp;gt; Der LLVM-[[Just-in-time-Kompilierung|JIT-Compiler]] kann ungenutzte statische Zweige des Programms zur Laufzeit erkennen und anschließend entfernen. Dies optimiert Programme mit einem hohen Grad an Verzweigung. Aus diesem Grund nutzt Apple seit [[macOS]] 10.5&amp;lt;ref&amp;gt;{{Webarchiv |url=http://lists.cs.uiuc.edu/pipermail/llvmdev/2006-August/006492.html |text=&amp;#039;&amp;#039;[LLVMdev] A cool use of LLVM at Apple: the OpenGL stack&amp;#039;&amp;#039;. |wayback=20061104170413}}&amp;lt;/ref&amp;gt; LLVM im [[OpenGL]]-Stack, um einerseits sich selten ändernde Verzweigungspfade zu verkürzen und andererseits [[Vertex-Shader]] optimieren zu lassen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://llvm.org/ Offizielle Webpräsenz]&lt;br /&gt;
** Chris Lattner: [http://llvm.org/pubs/2007-03-12-BossaLLVMIntro.pdf &amp;#039;&amp;#039;The LLVM Compiler System&amp;#039;&amp;#039;.] (PDF; 416 kB) März 2007&lt;br /&gt;
** Chris Lattner: [http://llvm.org/pubs/2008-05-17-BSDCan-LLVMIntro.pdf &amp;#039;&amp;#039;LLVM and Clang: Next Generation Compiler Technology&amp;#039;&amp;#039;.] (PDF; 5,8 MB) Mai 2008&lt;br /&gt;
* Chris Lattner: [http://www.aosabook.org/en/llvm.html &amp;#039;&amp;#039;The Design of LLVM&amp;#039;&amp;#039;.] 2008&lt;br /&gt;
* [https://cre.fm/cre114-llvm &amp;#039;&amp;#039;LLVM – Die ‚Low Level Virtual Machine‘ Compiler-Infrastruktur&amp;#039;&amp;#039;.] [[CRE (Podcast)|CRE Podcast]] (2009)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references responsive /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;br /&gt;
[[Kategorie:Virtualisierung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Reztib42</name></author>
	</entry>
</feed>