Skip to content
Tech AI Wire

La réécriture de mold en Rust vise l'éditeur de liens par défaut de Linux

Mold établit les liens 4,9 fois plus vite que LLVM lld. Son auteur le réécrit en Rust et veut que les distributions l'installent comme /usr/bin/ld.

Par Tech AI Wire Team

4 min de lecture

XLinkedIn
A terminal window showing a C++ project being linked with mold, with the elapsed link time visible in the output.

En chiffres

CPU architectures mold supports
14
contributors to the mold project
140+
commits on mold's main branch
7,853
mold's median link speedup, per its own repository
vs LLVM lld
4.9x
vs wild
1.9x

Rui Ueyama réécrit mold du C++ vers Rust. Mold est l'un des éditeurs de liens les plus rapides disponibles sous Linux. Phoronix a rapporté le 11 septembre 2026 que cette réécriture constitue le cœur de la future série 3.x. Le second objectif mérite l'attention des développeurs : mold veut que les distributions Linux l'installent comme /usr/bin/ld, l'éditeur de liens par défaut auquel chaque compilation fait appel.

Un éditeur de liens est la dernière étape d'une compilation. Le compilateur transforme chaque fichier source en fichier objet. L'éditeur de liens assemble ensuite ces objets et leurs bibliothèques en un seul programme exécutable. Sur un gros projet C++ ou Rust, cette dernière étape décide souvent du temps d'attente.

L'écart est large. Phoronix l'a décrit en termes concrets. Une tâche de liaison que mold termine en « quelques centaines de millisecondes » peut prendre « plusieurs secondes, des dizaines de secondes, voire des minutes avec l'éditeur de liens par défaut ».

Le dépôt de mold affirme établir les liens 4,9 fois plus vite que lld de LLVM en médiane, et 1,9 fois plus vite que wild. Ueyama a également écrit lld, il se mesure donc à son propre travail antérieur. Le projet est utilisé en production depuis 2021. Il prend en charge 14 architectures de processeur, dont x86-64, ARM, RISC-V, PowerPC, s390x, LoongArch et SPARC64.

Pourquoi Rust, et pourquoi maintenant

Ueyama a exposé ses raisons dans une discussion épinglée sur le dépôt GitHub de mold, ouverte le 1er septembre 2026. La sûreté mémoire vient en premier. Un éditeur de liens lit des fichiers objets qu'il n'a pas créés et manipule beaucoup de pointeurs. C'est exactement là qu'un bogue mémoire s'écrit facilement et se trouve lentement.

Il a aussi évoqué l'outillage. Rust fournit Cargo pour gérer les dépendances et simplifie la compilation croisée. Les deux comptent pour un outil qui doit être construit pour 14 architectures. C++20, le langage actuel de mold, ne lui offre ni l'un ni l'autre par défaut.

L'argument du calendrier est celui qui fera débat. Ueyama attribue aux outils de programmation assistés par IA le fait que cette réécriture soit devenue abordable. « La réécriture assistée par IA a radicalement changé le coût de ce type de travail », a-t-il écrit. « Je n'aurais probablement pas tenté cela l'an dernier, mais aujourd'hui cela demande étonnamment peu d'efforts. »

Il a présenté ce choix comme un pari de long terme : « cette décision aura davantage de sens avec le recul, dans 10 ou 20 ans, qu'elle n'en a peut-être aujourd'hui ».

D'autres projets ont pris la même voie cette année. Bun 1.4 a mis sa réécriture en Rust en production, et YSERVER 1.5, un serveur X11 écrit en Rust depuis zéro, a vu ses premiers morceaux de code écrits avec l'aide de l'IA.

Devenir /usr/bin/ld est la moitié la plus difficile

Ce n'est pas la vitesse qui empêche un éditeur de liens de devenir celui par défaut. C'est la compatibilité. GNU ld et son cousin plus rapide gold ont accumulé des décennies de comportements dont les scripts de compilation dépendent en silence. Cela va de la syntaxe des scripts d'édition de liens à des options de ligne de commande obscures.

Le projet le sait. « L'un des principaux objectifs de la série mold 3.x est de rendre mold apte à être adopté comme /usr/bin/ld par les distributions Linux », a rapporté Phoronix. Le plan après la réécriture est lent et collaboratif : « Nous mènerons ensuite des tests de compatibilité approfondis et travaillerons étroitement avec les développeurs des distributions Linux. »

ÉtapeÉtat
Réécrire mold du C++ vers RustEn cours, visant la série 3.x
Tests de compatibilité approfondisPrévus, après la réécriture
Coordination avec les développeurs de distributionsPrévue, après les tests
Livraison comme /usr/bin/ld par défautNon programmée

Aucune distribution ne s'est engagée à basculer. Aucune date n'a été donnée pour l'une de ces étapes.

Ce que cela signifie pour les développeurs

Rien ne casse aujourd'hui. mold 2.x reste en place, et la réécriture en Rust arrivera dans une future série 3.x sans date de sortie.

Si vous n'avez jamais essayé mold, c'est une bonne semaine pour mesurer ce qu'il vous ferait gagner. Sur une chaîne d'outils Linux, vous pouvez y diriger une seule compilation avec -fuse-ld=mold. Comparez ensuite l'étape de liaison avec votre outil par défaut actuel. Les projets comptant beaucoup de fichiers objets et de grandes bibliothèques statiques voient la plus grande différence ; un petit projet peut n'en voir aucune.

Si vous maintenez un système de compilation ou un paquet de distribution, c'est pendant la phase de compatibilité que votre avis compte. Les scripts d'édition de liens personnalisés, les options inhabituelles et les réglages d'optimisation à l'édition de liens sont les éléments les plus susceptibles de différer. Ueyama a dit explicitement qu'il souhaitait associer les développeurs de distributions avant tout changement de valeur par défaut.

Il y a ici un second point à remarquer, indépendant des éditeurs de liens. Le mainteneur d'un outil système largement utilisé vient de déclarer publiquement que l'aide de l'IA a changé la réécriture qu'il était prêt à entreprendre. La série 3.x répondra dans le code à la question de savoir si ce jugement tient. Mieux vaut le vérifier sur le résultat que sur l'affirmation.

Sources

  1. Mold High Speed Linker Being Rewritten In Rust, Hopes To Be The Default Linker On Linux - Phoronix
  2. Reason(s) behind the decision to rewrite mold in Rust - GitHub
  3. rui314/mold - a modern linker - GitHub

Articles liés