LLVM 18.1.0 kommt mit Supportverbesserungen, Backends und mehr

LLVM-Logo

LLVM ist ein Framework für die Entwicklung von Compilern sowie für die Erstellung neuer Programmiersprachen und die Verbesserung bestehender Sprachen.

Der Start des Projekts LLVM 18.1.0 kommt nach sechs Monaten Entwicklungszeit und bietet Verbesserungen mit GCC qSie umfassen Compiler, Optimierer und Codegeneratoren. Eine bemerkenswerte Veränderung in dieser Version ist es so neues Schema zur Generierung von Versionsnummern im LLVM-Projekt ab dem 18.x-Zweig. In Anlehnung an die Praxis von Projekten wie GCC und GDB wurde während der Entwicklung die Verwendung der Version Null („N.0“) übernommen, während die erste stabile Version die Nummer „N.1“ trägt. Diese Änderung bietet Vorteile, indem Builds, die auf dem Master-Zweig basieren, von Builds auf dem endgültigen Release-Zweig getrennt werden.

Beispielsweise wurde in Vorbereitung auf die aktuelle Version (18.1.0) die Entwicklung mit dem instabilen Zweig von LLVM 18.0 durchgeführt. Die erste stabile Version wurde dann unter der Nummer 18.1.0 veröffentlicht und markierte den Höhepunkt eines umfangreichen Entwicklungs- und Testzyklus. Darüber hinaus ermöglicht dieses neue System bei Bedarf die Erstellung von Korrekturmitteilungen alle zwei Wochen unter den Nummern 18.1.1, 18.1.2 usw.

Es ist wichtig zu beachten, dass bei Änderungen am aktuellen Zweig, die sich auf die ABI (Application Binary Interface) auswirken, das Update mit einer Änderung der zweiten Ziffer der Version, beispielsweise 18.2.0, zum Ausdruck kommt. Dies sorgt für eine konsistente und transparente Versionsverwaltung und gibt Benutzern die nötige Klarheit über Stabilität und vorgenommene Änderungen in jedem Release.

Wichtige neue Funktionen von LLVM 18.1.0

In dieser neuen Version, die von LLVM 18.1.0 vorgestellt wird, in der X86-Architektur wurden Verbesserungen der Unterstützung für ISA-Erweiterungen implementiert. Insbesondere wurde Unterstützung für die Erweiterungen USER_MSR, AVX10.1-256 und AVX10.1-512 hinzugefügt. Außerdem, Der Typ i128 wurde mit dem Typ __int128 von GCC und Clang vereinheitlicht. Dies ermöglicht eine bessere Binärkompatibilität mit externen Projekten wie Rust.

Ein weiteres Highlight in LLVM 18.1.0 war für RISC-V, da mehrere Verbesserungen vorgenommen wurden und erhebliche Ergänzungen durch Stabilisierung undl Unterstützung für Erweiterungen sowie integrierte Funktionen für Erweiterungen wurden hinzugefügt und experimentelle Unterstützung wurde für die Codegenerierung auf den Architekturen RV32E, RV64E, ilp32e und lp64e implementiert.

Im Backend der Architektur LoongArch, integrierte Funktionen wurden für LSX-Erweiterungen hinzugefügt (128-Bit-SIMD) und LASX (256-Bit-SIMD) wurde Unterstützung für neue Anweisungen hinzugefügt, die in der Spezifikation 1.10 des LoongArch-Referenzhandbuchs eingeführt wurden, und eine anfängliche Unterstützung für die automatische Vektorisierung wurde implementiert.

In AArch64, Erweiterte Unterstützung für Prozessoren wie Cortex-A520, Cortex-A720 und Cortex-X4, Außerdem wurde Unterstützung für den Stack Clash Protection-Mechanismus implementiert, der Stack-Überläufe erkennt und Angriffsmethoden basierend auf der Schnittstelle von Stack und Heap blockiert.

Zusätzlich zu diesen spezifischen Verbesserungen an den Backends verschiedener Architekturen wurden allgemeine Verbesserungen an den Backends für Architekturen wie WebAssembly, MIPS, PowerPC und AMDGPU vorgenommen. Die Fähigkeiten des LLD-Linkers wurden ebenfalls erweitert, die Unterstützung für RISC-V- und AArch64-Architekturen wurde verbessert und Aktualisierungen wurden für die Libc++-Bibliothek implementiert, um den Fähigkeiten von C++20, C++23 und C zu folgen Standards. ++26.

Schließlich Der LLDB-Debugger hat Unterstützung für das automatische Extrahieren von Symbolen und Binärdaten von externen Servern hinzugefügt die das DEBUGINFOD-Protokoll unterstützen, wodurch die Debugging-Fähigkeit auf verschiedenen Architekturen erweitert und Unterstützung für Erweiterungen wie SME und SME2 (Scalable Matrix Extension) hinzugefügt wird. Es ist wichtig zu beachten, dass in einigen Bereichen Bindungen für die Python-Sprache entfernt wurden, was möglicherweise der Fall ist erfordern Anpassungen der Entwicklungsprozesse, die auf diesen Verknüpfungen basieren.

Für die Teile der Verbesserungen, die in Clang 18 implementiert wurden, einschließlich Änderungen im Zusammenhang mit der C-Sprache:

  • Strukturen, Unions und Arrays mit dem Attribut „const“ dürfen nun analog zu GCC als konstante Ausdrücke verwendet werden.
  • Aufzählungen werden jetzt in TBAA-Metadaten (Type-Based Alias ​​​​Analysis) als ihr ursprünglicher ganzzahliger Typ widergespiegelt, anstatt als „char“-Typ behandelt zu werden.
  • Unterstützung für das Attribut „counted_by“ hinzugefügt, mit dem Sie ein Feld in einer Struktur mit einem flexiblen Array angeben können, um die Anzahl der Elemente im flexiblen Array zu bestimmen, wodurch die Effizienz der Pufferüberlaufprüfungen in Clang verbessert wird.
  • Unterstützung für den Ausdruck „requires c23“ implementiert, um Module zu verknüpfen und den C23-Standard zu unterstützen.
  • Es wurde eine experimentelle Funktion implementiert, um zusätzliche Typen untypisierter Argumente in Vorlagen zu verwenden und so die Angabe von Gleitkommawerten, Zeigern und Unterobjektreferenzen zu ermöglichen.
  • Experimentelle Unterstützung für den „Deducing this“-Mechanismus hinzugefügt, der es Ihnen ermöglicht, Parameter mit dem „this“-Attribut in einer Vorlage zu verwenden und die Kategorie des Ausdrucks zu ermitteln, für den diese Funktion aufgerufen wurde.

Wenn Sie mehr darüber erfahren möchten, können Sie die Details einsehen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.