Compiler LLVM 13.0 unterstützt nun auch offiziell das Fortran-Frontend Flang

Das halbjährliche Update der Compiler-Infrastruktur enthält ab sofort die Binary-Pakete für Flang und erlaubt das Konfigurieren multipler Distributionen.

In Pocket speichern vorlesen Druckansicht 27 Kommentare lesen

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

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Die Compiler-Infrastruktur LLVM ist in Version 13.0 erschienen, diesmal wieder pünktlich im halbjährlichen Releasetakt. Als Highlights heben die Herausgeber folgende Neuerungen hervor: Das Fortran-Frontend Flang hat es in die offiziellen Binary-Pakete des Projekts geschafft, in denen es ab dem aktuellen Release immer enthalten sein soll.

Das Build-System unterstützt neuerdings die Konfiguration von Multi-Distributionen, was bedeutet, dass Entwicklerinnen und Entwickler beispielsweise eine Distribution mit den Tools und eine separate für Libraries betreiben können. Neues tut sich außerdem beim Erzwingen von Kontrollabläufen: Beim Windows Control-flow Enforcement soll die Option -ehcontguard gültige unwind-Einstiegspunkte ausgeben. Das Programm validiert sie gleichzeitig mit dem Exception Handling beim Setzen des Kontexts.

Neben Flang ist auch das LLDB-Executable ab sofort in den offiziellen vorgefertigten LLVM-Binärpaketen enthalten. Es soll den Registerzugriff auf AArch64 SVE voll unterstützen sowie die Pointer-Authentifizierung unter AArch64. Damit ermöglicht LLDB laut Releasemeldung ein Stack Unwind mit signierter Rückgabeadresse. LLDB unterstützt in der neuen Version das Debuggen von Programmen auf AArch64 Linux, die ein Memory-Tagging (MTE) einsetzen.

Befehle zum Lesen und Schreiben von Speicherkennzeichen sind neu hinzugekommen (memory tag read sowie memory tag write), und der Befehl memory region soll merken, wenn das Speicher-Tagging für eine Region aktiviert ist. Synchrone und auch asynchrone Tag-Fehler soll LLDB ab sofort aufspüren können.

Wie das LLVM-Team in der Releasemeldung mitteilt, hat es das Projekt debuginfo-test umbenannt zu cross-project-tests, das nun allein für Informationen zum Debugging gedacht ist: Damit findet eine inhaltliche Differenzierung statt, zuvor hatte das Projekt das Testen von Komponenten verschiedener Projekte zusammenfassen sollen. Der neue Name kommt in LLVM_ENABLE_PROJECTS zum Tragen und ersetzt dort das vormalige "debuginfo-test". Als neues Ziel für Tests ist ergänzend check-cross-project-tests hinzugetreten. Das bereits vorhandene Ziel check-debug-info-test bleibt laut Team erhalten, offenbar reduziert auf das Ausführen von Debug-Informationstests.

Die Quellcodepakete von LLVM 13.0 umfassen zahlreiche Unterprojekte wie Clang 13, Flang 13 und libcxx 13, die sich allesamt im GitHub-Respository von LLVM 13 befinden und von dort auch herunterladen lassen. Verbesserungen für Clang hat das Team in der aktuellen Ausgabe unter anderem am Dienstprogramm Clang-format Utility und am Static Analyzer vorgenommen, und der Compiler soll die Anweisungen zur Umwandlung von Loops beherrschen, wie sie in OpenMP 5.1 festgelegt sind. Verbesserungen soll insbesondere die Kernelsprache OpenCL in Clang erfahren haben, hier gilt als Standard zurzeit die C-Version 1.2 (sofern keine andere Version angegeben ist). Mit der Dateierweiterung .clcpp soll OpenCL nun auch die Programmiersprache C++ in OpenCL-Dateien unterstützen.

Zahlreiche weitere Änderungen betreffen die C-API, die nun unter anderem ORCv2-Objektpuffer direkt einer Objektebene hinzufügen kann. Neuerdings lassen sich auch benutzerdefinierte ORCv2-MaterializationUnits erstellen und die C-API ermöglicht ihren Nutzern das Erstellen von APIs zum Abrufen der Verknüpfungsebenen einer LLJIT-Instanz. Die ausführliche Liste aller Änderungen an der C-API ist in den Release Notes enthalten. Weitere Änderungen betreffen das LLVM-Tooling, das unter anderem ab sofort ohne die Optionen --build-id-link-{dir,input,output} auskommen muss.

Als veraltet gilt der Legacy-Pass-Manager für die Optimierungspipeline, der in den kommenden Versionen laut Projekt-Team entfallen soll. Eine Reihe von Änderungen stehen erst während der weiteren Arbeit an LLVM 13 bevor – so plant das Team wohl unter anderem, Änderungen am WebAssembly-Target, am AVR-Target und am X86-Target vorzunehmen.

Weitere Informationen lassen sich der Releasemeldung zu LLVM 13 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. Wer bei der Vielzahl an Unterprojekten und Neuerungen Orientierung sucht, kann zunächst die Dokumentation zurate ziehen.

(sih)