Login
Newsletter
Werbung

Mi, 20. März 2019, 15:27

Software::Entwicklung

LLVM 8.0 freigegeben

Version 8.0 des Compiler-Frameworks LLVM, das unter anderem den C/C++-Compiler Clang enthält, bringt viele Verbesserungen, unter anderem bei der Code-Generierung und Optimierung. Die Unterstützung für WebAssembly ist jetzt offiziell.

llvm.org

Das LLVM-Team an der University of Illinois in Urbana-Champaign bezeichnet LLVM als eine Compilier-Strategie für effektive Optimierung, einen virtuellen Befehlssatz und eine Compiler-Infrastruktur, die auch für Forschungen im Bereich von Compilern, Architekturen, Sicherheit und Betriebssystemen verwendet wird.

LLVM definiert einen virtuellen Befehlssatz, der an RISC-Maschinen angelehnt ist, aber reichhaltige Typinformation und Datenfluss-Information zur Verfügung stellt. Dies ermöglicht zum einen ausgefeilte Transformationen des Objektcodes, andererseits kann die Information an das ausführbare Programm angehängt werden. Dies erlaubt weitere Transformationen während des Linkens, zur Laufzeit und an der ausführbaren Datei selbst, während das Programm nicht läuft.

LLVM 8.0 erscheint gegenüber dem sechsmonatigen Veröffentlichungszyklus etwas verspätet. Unter den vielen neuen Funktionen und Verbesserungen ragt die Unterstützung für profilgesteuerte Cache-Prefetches heraus. Diese komplexe Neuerung analysiert die Speicherzugriffe eines compilierten Programms und compiliert anhand dieser Informationen Instruktionen ein, die den Cache eines x86-Prozessors füllen sollen, bevor der Prozessor auf sie zugreifen muss.

Neu ist die Unterstützung der Hexagon-Architektur, während die Nios2-Architektur entfernt wurde. Änderungen bei ARM64 sollen zu besserem Schutz vor Spectre- und Meltdown-ähnlichen Problemen beitragen. Bei der MIPS-Architektur kamen neben zahlreichen weiteren Verbesserungen auch einige weitere Instruktionen hinzu. Bei PowerPC wurde das Out-of-Order-Scheduling für Power 9 implementiert, neben weiteren Verbesserungen für Power 9 und generellen Verbesserungen.

Bei X86 kam die Möglichkeit hinzu, für AMD Piledriver-CPUs zu optimieren sowie avx512vnni-Instruktionen für Intel Skylake zu generieren. Die eingebauten Funktionen zum Zugriff auf AVX512-Register wurden durch bessere ersetzt, die alten sollten nicht mehr benutzt werden, da sie in absehbarer Zeit entfernt werden. Die Unterstützung für WebAssembly, die bereits in früheren Versionen vorhanden war, wurde bereinigt und ist jetzt offiziell.

Zahlreiche Verbesserungen gab es beim Linker lld, clang-tidy und im C/C++-Compiler Clang. Letzterer hat jetzt die Möglichkeit, ein Programmprofil auf eine andere Version des Programms anzuwenden, bei der sich die Namen von Symbolen (beispielsweise Klassen oder Namensräume) geändert haben. Die zweite große Neuerung ist die Initialisierung von automatischen Variablen anhand eines vorgegebenen Musters. Standard bleibt aber, dass automatische Variablen nicht initialisiert werden, bevor es der Programmierer in irgendeiner Weise tut.

Der Download von LLVM 8.0.0 mit allen zugehörigen Werkzeugen ist von der Projektseite möglich. Es werden Quellcode-Pakete, Binärpakete und umfassende Dokumentation bereitgestellt.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung