Veröffentlichung des Layout-Tools Mold 3.0, entwickelt von den Entwicklern von LLVM lld

Die Version 3.0 des Linkers Mold wurde veröffentlicht und kann als schnellere, transparente Alternative zum GNU Linker auf Linux-Systemen eingesetzt werden. Das Projekt wird von Rui Ueyama, dem Autor des LLVM lld Linkers, weiterentwickelt. Ein wesentliches Merkmal von Mold ist die extrem hohe Geschwindigkeit beim Verlinken von Objektdateien, die deutlich schneller ist als die Linker GNU gold und LLVM lld (Das Verlinken in Mold erfolgt mit einer Geschwindigkeit, die lediglich doppelt so langsam ist wie das einfache Kopieren von Dateien mit dem cp-Befehl). Der Code ist in Rust geschrieben und wird unter der MIT-Lizenz veröffentlicht.

Die Reduzierung der Verlinkungszeiten ermöglicht eine signifikante Verbesserung des Erlebnisses bei der Entwicklung großer Projekte, indem die Wartezeiten beim Erstellen von ausführbaren Dateien während der Fehlersuche und dem Testen von Änderungen verkürzt werden. Der Antrieb zur Schaffung von Mold war die Frustration über das Warten auf den Abschluss des Linkens nach jeder Codeänderung sowie die geringe Effizienz bestehender Linker auf Mehrkernsystemen und der Wunsch, eine grundsätzlich andere Linker-Architektur auszuprobieren, ohne auf übermäßig komplizierte Modelle wie inkrementelles Linken zurückgreifen zu müssen.

Die hohe Leistung beim Verlinken von ausführbaren Dateien aus einer großen Anzahl von vom Compiler vorbereiteten Objektdateien in Mold wird durch die Verwendung schnellerer Algorithmen, die aktive Parallelisierung von Operationen zwischen verfügbaren CPU-Kernen und den Einsatz effizienterer Datenstrukturen erreicht. Beispielsweise implementiert Mold eine Technik, die rechenintensive Berechnungen gleichzeitig mit dem Kopieren von Dateien erlaubt, eine Vorabladung der Objektdateien in den Speicher vornimmt, schnelle Hash-Tabellen zur Auflösung von Symbolen verwendet, die Relocation-Tabellen in einem separaten Thread scannt und die Duplizierung wiederkehrender Sektionen in verschiedenen Dateien entfernt.

Die Mold 3.0-Version zeichnet sich durch das Umschreiben der Codebasis von C++ (C++20) in die Programmiersprache Rust aus. Mold 3.0 kann als transparente Alternative zu Mold 2.42.1, der letzten Ausgabe in C++, verwendet werden und unterstützt alle zuvor verfügbaren Optionen und Zielarchitekturen. Der Wechsel zu Rust hat es ermöglicht, das Projekt vor potenziellen Problemen beim Umgang mit beschädigten Objektdateien zu schützen – in Situationen, in denen die C++-Version aufgrund von Zugriffen auf Bereiche außerhalb des Puffers abstürzte, stoppt die Rust-Version an der Grenze der Überprüfung. Die Leistung der Implementierung in Rust steht auf dem gleichen Niveau wie die Version in C++.

Neben der Migration zu Rust war ein zentrales Ziel bei der Entwicklung des Branches 3.0 die Verbesserung der Kompatibilität mit GNU ld und die Vorbereitung des Projekts für die Möglichkeit, als Standard-Linker in Linux-Distributionen verwendet zu werden. Das Build-System wurde von CMake auf Cargo umgestellt, und das Testsystem von ctest auf cargo test. Die Bibliothek oneTBB wurde aus den Abhängigkeiten entfernt.

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster