Compiler LLVM 12.0 setzt auf CMake

Das halbjährliche Update der Compiler-Infrastruktur startet einen Monat später als geplant und bringt stabile Features für die x86-64-Mikroarchitektur.

In Pocket speichern vorlesen Druckansicht 33 Kommentare lesen

(Bild: Milos996 (CC BY-SA 4.0))

Lesezeit: 3 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Mit einem halben Monat Verzögerung gegenüber dem halbjährlich getakteten Releaserhythmus ist die Compiler-Infrastruktur LLVM in Version 12.0 erschienen. Diese Hauptversion gilt als stabiles Release und umfasst zahlreiche neue Features. Sie unterstützt die x86-64-Architektur und soll damit im Verhalten dem Compiler GCC und den von ihm unterstützten Features entsprechen. Wie gewohnt enthält das Release-Paket auch den C-/C++-Compiler Clang in der neuesten Version.

Die Intel-Prozessoren Alder Lake und Sapphire Rapids unterstützt der neue LLVM und soll dabei auch mit den Anweisungen HRESET, UINTR und AVXVNNI umgehen können. Außerdem unterstützt der Compiler CPUs des Typs AMD Zen 3, wobei offenbar noch weiteres Feintuning in den kommenden Versionen 12.x zu erwarten ist.

Unter der Haube hat es eine wesentliche Veränderung beim Erstellen von LLVM selbst gegeben. Das interne llvm-build-Python-Skript und die damit verbundenen LLVMBuild.txt-Dateien, die bisher die Struktur der LLVM-Komponenten beschrieben hatte, gehören der Vergangenheit an. Das Team hinter dem Compiler setzt neuerdings ganz auf CMake, wobei jede Komponente die Eigenschaften in den durch sie erstellten Targets abspeichert. Sobald sämtliche Komponenten definiert sind, lassen diese Eigenschaften sich verarbeiten, um die Library-Abhängigkeiten aufzulösen und produzieren den von der LLVM-Konfiguration (llvm-config) erwarteten Header.

Der neue LLVM festigt den Support für die Programmiersprache C++ laut Releasemeldung in einigen wesentlichen Teilen, die bei diesem Compiler bislang in der Schwebe gewesen waren. Das betrifft unter anderem die Wahrscheinlichkeits-Attribute. Die Library libc++ hat der Releasemeldung zufolge ihren C++20-Support erweitert und bereits Arbeiten an folgenden höheren Versionen aufgenommen. Die Quellcodepakete von LLVM 12.0 umfassen zahlreiche Unterprojekte wie Clang 12, Flang 12 und libcxx 12, die sich allesamt im GitHub-Respository von LLVM 12 befinden und von dort auch herunterladen lassen.

Heise-Workshops zu C++20

C++20 bringt Veränderungen in Gang, der neue Standard wird für die C++-Community auch neue Maßstäbe setzen. Mit Concepts, Coroutinen, Modulen und der Ranges-Library kommen große Neuerungen auf Entwickler zu, die das Programmieren mit Modernem C++ wohl ähnlich tiefgreifend verändern werden wie zuletzt C++11.

Zur Orientierung haben heise Developer, iX und der dpunkt.verlag mit zwei ausgewiesenen C++ Experten zwei ganztägige Workshops auf die Beine gestellt: Rainer Grimm wiederholt am 29. Juni 2021 den "Praxistag: Best Practices für Modernes C++", und Nicolai Josuttis bietet am 5. Juli 2021 erneut die Chance, sich im "C++20-Crashkurs" einen Überblick zum neuen Standard zu verschaffen.

Clang 12 bietet laut Herausgebern Verbesserungen rund um Windows auf ARM64 sowie für die Kernelsprache OpenCL. Der Memory-Bedarf für Clang soll gesunken sein, und an den PowerPC-Einstellungen hat das LLVM-Team laut Meldung Veränderungen vorgenommen, die das Erstellen des Codes betreffen und die Unterstützung von AIX erweitern. Im Bereich Backend gibt es wohl Neuerungen bei der AMDGPU zu verzeichnen. Zu guter Letzt lassen sich Anpassungen an der Mikroarchitektur nun auf x86/x86_64-Geräten nun durch die Option -mtune unabhängig von -march anfordern. Sollte -mtune nicht definiert sein, ändert sich offenbar nichts und der Compiler greift dann auf das bisherige -march-Verhalten zurück.

Weitere Informationen lassen sich der Releasemeldung entnehmen. Alle Pakete und weitere Hinweise sind auf den GitHub-Seiten des Compiler-Projekts zu finden, und für Interessierte lohnt sich auch ein Blick auf die Website und Downloadseite des Projekts.

(sih)