Komplett neu in Rust: Mold 3.0 wirft C++ über Bord
Die neue Hauptversion 3.0.0 des Hochgeschwindigkeits-Linkers ist zugleich die erste Version, die komplett in Rust geschrieben ist. Mit der 3.x-Reihe wollen die Entwickler um Mold- und lld-Erfinder Rui Ueyama die letzten Kompatibilitätslücken zu GNU ld schließen, insbesondere bei der Unterstützung von Linker-Skripten, und den Weg dafür ebnen, dass Mold künftig zum Standard-Linker in Linux-Distributionen avanciert.
Dort ist als /usr/bin/ld bislang meist noch GNU ld voreingestellt, das für manche Link-Vorgänge Sekunden oder gar Minuten braucht, die Mold in wenigen Hundert Millisekunden erledigen kann.
Mold 3.0 ist als direkter Ersatz für Version 2.42.1 gedacht, die noch auf C++ basiert. Die Rust-Version unterstützt laut Release Notes unter anderem dieselben Kommandozeilenoptionen und dieselben Zielarchitekturen. Auch bei der Link-Geschwindigkeit herrscht Gleichstand. Zudem erzeugt Mold 3.0 dieselbe Ausgabe wie 2.42.1. Zur Prüfung der Kompatibilität haben die Entwickler unter anderem sämtliche Gentoo-Pakete gebaut und dabei keine Regressionen gefunden.
Der Wechsel zu Rust soll Mold robuster gegenüber beschädigten Eingabedateien machen. In der C++-Version konnte es bei solchen Dateien zu Speicherzugriffen außerhalb der gültigen Grenzen kommen, was einen Absturz mit einem Segmentation Fault zur Folge hatte. Mold 3.0 prüft diese Zugriffe auf Array- und Speichergrenzen, sodass der Linker an der fehlerhaften Stelle stattdessen kontrolliert mit einem Panic abbricht.
Mold 3.0 nutzt Cargo statt CMake als Build-System, setzt Rust 1.95 oder neuer sowie einen C-Compiler voraus und ist nicht mehr von der oneTBB-Bibliothek abhängig. Wer Mold 3.0 selbst baut, führt zuerst cargo build --release aus und installiert den Linker anschließend mit ./install-mold.sh.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.