Ce qui se passe
mold, le linker rapide maintenu sur rui314/mold, sort en 3.0.0 : la première version réécrite intégralement de C++ en Rust. La 2.42.1 restera la dernière version C++. Objectif de la série 3.x : combler les derniers écarts avec GNU ld, notamment sur les scripts de linker, pour que mold puisse devenir le linker par défaut des distributions Linux.
Pour qui l'utilise
La 3.0 se présente comme un remplacement direct de la 2.42.1 : mêmes options en ligne de commande, mêmes architectures, même sortie à l'exception des corrections, performances équivalentes. Vérifications annoncées : suite de tests sur chaque cible, comparaison des sorties sur des charges réelles et diverses combinaisons d'options, recompilation de tous les paquets Gentoo. Aucune régression trouvée.
Sur un fichier objet corrompu, la version C++ pouvait lire hors des limites et finir en erreur de segmentation. En Rust, ces lectures sont vérifiées : mold s'arrête sur une panique, à l'accès fautif.
Corrections qui peuvent changer un build existant :
- les options à un seul tiret sont lues comme GNU ld :
-entry=mainétait compris-e ntry=main; - les relocations relatives à la GOT (
R_X86_64_GOTOFF64,R_ARM_REL32) vers un symbole de bibliothèque partagée produisaient silencieusement une mauvaise adresse ; elles sont désormais correctes ou signalées en erreur ; --gc-sectionsne supprime plus les fonctions passées à--initet--fini;- plusieurs sorties non déterministes corrigées (
--dependency-file,--repro,-r) ; - mold ne réserve plus 8 Gio d'espace d'adressage virtuel au démarrage : il
fonctionne sous
ulimit -v; - AArch64, PPC32, ARM32 : les appels via thunks d'extension de portée sautaient à une mauvaise adresse dans de gros binaires, comme Chromium ARM64 en debug ;
- plusieurs constructions invalides (
--defsymvers un symbole de bibliothèque partagée,--strip-allavec--emit-relocs…) sont refusées au lieu de produire un binaire cassé.
Pour qui le compile
cargo build --release
./install-mold.sh # accepte PREFIX et DESTDIR- Cargo remplace CMake, dont les options disparaissent ; il faut Rust 1.95 ou plus récent et un compilateur C.
- Bibliothèques installées hors de
$PREFIX/lib(par exemple/usr/lib64) : définirMOLD_LIBDIRà la compilation et à l'installation, sinonmold -runne trouve pasmold-wrapper.so. - oneTBB n'est plus une dépendance. mimalloc 3.5.3 reste lié statiquement
(
--features system-allocatorpour le malloc du système) ; zlib système si présente, zstd et BLAKE3 embarqués (ZSTD_SYS_USE_PKG_CONFIG=1pour le zstd du système). MOLD_TARGETSest remplacé par des features Cargo ; les distributions doivent toujours construire toutes les cibles.- Tests :
cargo test;install-build-deps.shdevientinstall-test-deps.sh, utile seulement pour les tests.
Source : mold 3.0.0, notes de version sur GitHub, remontées par Lobste.rs le 5 octobre 2026.