LLVM 3.7 als OpenSource erschienen

LLVM 3.7 mit neuen APIs und Funktionen

Moritz Hoffmann

(c) Shutterstock / agsandrew

Nach einem halben Jahr Entwicklungsarbeit steht ein neues LLVM-Release bereit. Das Projekt, dessen Markenname einmal für „Low Level Virtual Machine“ stand, wird mittlerweile vor allem als gemeinsame Infrastruktur für die Implementierung einer ganzen Reihe von statischen und über die Laufzeit kompilierten Sprachen genutzt. In dieser Funktion hat LLVM eine Vielzahl von speziellen Compilern ersetzt, darunter die Laufzeit-Engine für Apple’s OpenGL Stack. LLVM 3.7 liefert Entwicklern nun weitere Updates und Optimierungen.

LLVM 3.7 enthält vollwertigen Support für das OpenMP-API in Version 3.1. Ebenso im Release enthalten ist mit On Request Compilation (ORC) ein neues C++ JIT API, das auf dem JIT-API MCJIT aufbaut, jedoch besser test- und erweiterbar als dieses sein soll. Im Bestreben, Pointer-Typen in LLVM auf lange Sicht gänzlich überflüssig zu machen, wurden die LLVM-Zwischenschicht (IR) und die LLVM-APIs modifiziert.

Integriert wurde auch ein neues Backend für den Berkely Paket Filter (BPF), der sich nach den Worten des Kernel-Entwicklers Jonathan Corbet mit dem Release von Linux 3.18 Ende letzten Jahres zu einer „universellen virtuellen Maschine“ entwickelt hat. Diese Eigenschaft dürfte auch der Grund dafür sein, dass das BPF-Target nun standardmäßig zur Verfügung steht und eBPF in LLVM 3.7 als Backend genutzt werden kann.

LLVM 3.7 wird die letzte Version sein, die auf Windows XP oder Vista läuft, ab LLVM 3.8 wird Windows 7 die Mindestanforderung sein. Weitere Details zum Release sind, wie auch die zahlreichen Bugfixes, in den Release Notes angegeben. Der Download ist über die LLVM-Seite möglich.

LLVM eine Infrastruktur für die Kompilierung

LLVM wurde in C++ geschrieben und folgt im Design der Idee, unter Nutzung der Zwischenschicht sowohl die Kompilierungszeit, als auch die Verbindungs- und die Laufzeit von Programmen verschiedenster Sprachen zu optimieren. LLVM kann die Middle Layer eines kompletten Compiler-Systems bereitstellen: Code wird in Form von Intermediate Forms (IFs) dem Compiler entnommen und als optimierte IFs wieder ausgegeben. Diese neuen IFs können anschließend in maschinenabhängigen Assemblercode für die jeweilige Zielplattform umgewandelt werden. LLVM kann zudem auch verschiebbaren Maschinencode während der Kompilierungs- oder Linkzeit bzw. binären Maschinencode während der Laufzeit generieren.

Unter Anleitung von Vikram Adve und Chris Lattner wurde LLVM im Jahr 2000 als akademisches Forschungsprojekt an der University of Illinois gegründet und unter der entsprechenden NCSA-OpenSource-Lizenz veröffentlicht. Im Jahr 2005 formte Apple ein Team um Chris Lattner, um die LLVM-Funktionen für die Entwicklungswerkzeuge der neuesten iOS-Produkte zu nutzen. Auch Sony nutzt den C-Compiler in LLVM für das SDK der Playstation 4. Im letzten Jahr hat sich das Projekt unter dem Namen LLVM Foundation konstituiert und wurde zuletzt als gemeinnütziger Verein nach US-Recht anerkannt.

Aufmacherbild: Fractal Realms series von Shutterstock / Urheberrecht: agsandrew

Verwandte Themen:

Geschrieben von
Moritz Hoffmann
Moritz Hoffmann
Moritz Hoffmann hat an der Goethe Universität Soziologie sowie Buch- und Medienpraxis studiert. Er lebt seit acht Jahren in Frankfurt am Main und arbeitet in der Redaktion von Software und Support Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: