Il est 5 fois plus rapide que LLVM lld et près de 2 fois plus rapide que Wild : l’écart de performance brute mesuré lors des derniers bancs d’essai de Mold fait forte impression. Conçu par Rui Ueyama, l’architecte originel de LLVM lld, cet outil incontournable pour réduire les temps de compilation franchit un cap historique. Avec la parution de l’annonce de Mold 3.0 sur GitHub, le projet enterre définitivement sa base de code historique en C++ au profit d’une réécriture intégrale en Rust.
💡 En résumé
- Bascule vers Rust : Mold 3.0 abandonne le C++ pour éliminer les erreurs de segmentation et sécuriser la mémoire avec Cargo et Rust 1.95.
- Performances intactes : l’outil reste 4,9 fois plus rapide que LLVM lld en médiane et valide la compilation de l’intégralité des paquets Gentoo sans régression.
- Ambition système : le support renforcé des scripts de liaison vise à remplacer le vénérable GNU ld comme éditeur de liens par défaut sur Linux.
Une métamorphose technique menée sans la moindre perte de vitesse, pensée pour hisser Mold au rang de composant système standard dans l’ensemble des distributions GNU/Linux.
💡 C’est quoi un éditeur de liens (linker) ?
Dans la chaîne de compilation d’un logiciel en C, C++ ou Rust, le travail s’effectue en deux temps. D’abord, le compilateur transforme le code source en une multitude de fichiers objets (fichiers .o). Ensuite, l’éditeur de liens intervient : il rassemble, ordonne et fusionne tous ces morceaux épars ainsi que les bibliothèques externes pour produire le fichier exécutable final. Sur les gros programmes comme un navigateur web ou un noyau, cette étape finale peut paralyser la machine pendant plusieurs minutes. Mold élimine ce goulet d’étranglement grâce à un traitement massivement parallélisé.
La sécurité mémoire de Rust
Le principal gain de cette bascule architecturale réside dans la gestion des données corrompues. Dans ses versions C++, un fichier d’entrée altéré pouvait provoquer une lecture mémoire hors limites et déclencher un plantage brutal par erreur de segmentation (segfault). Avec l’arrivée de Rust, chaque accès mémoire fait l’objet d’un contrôle strict des bornes à l’exécution : au lieu de planter silencieusement ou de risquer une exploitation de sécurité, le programme s’interrompt proprement par un mécanisme de panic.
Cette version 3.0 a été validée à grande échelle : les mainteneurs ont recompilé l’intégralité du catalogue de paquets de la distribution Gentoo sans constater la moindre régression. Côté compilation interne, CMake cède sa place à Cargo, la dépendance à la bibliothèque oneTBB d’Intel disparaît, et l’exigence minimale s’établit à Rust 1.95.
| Critère technique | Mold 2.42.1 (ancienne mouture) | Mold 3.0 (nouvelle mouture) |
|---|---|---|
| Langage principal | C++20 | Rust (requiert rustc ≥ 1.95) |
| Système de build | CMake + Make / Ninja | Cargo |
| Gestion d’entrées invalides | Risque de segmentation fault | Arrêt contrôlé (Rust panic) |
| Performance médiane vs lld | ~4,9× plus rapide | Identique (~4,9× plus rapide) |
Objectif avoué : détrôner le vénérable GNU ld
Malgré la supériorité technique démontrée par Mold et LLVM lld, la grande majorité des systèmes d’exploitation libres continuent d’expédier par défaut GNU ld, un utilitaire historique conçu il y a plusieurs décennies. La raison ne tient pas à la vitesse, mais à la compatibilité : de nombreux paquets système et composants de bas niveau s’appuient sur des scripts d’édition de liens complexes (linker scripts) que seul l’outil du projet GNU savait interpréter fidèlement.
La feuille de route de la branche 3.x s’attaque précisément à ce verrou. En intégrant la prise en charge exhaustive de ces scripts, Mold vise à pouvoir lier sans broncher le noyau Linux, les micrologiciels et le code embarqué.
🌐 L’actualité de l’open source et des technologies éthiques dans votre flux
🐘 Fediverse / Mastodon : suivez notre profil officiel @ depuis votre application ou votre instance favorite.
🦋 Bluesky (AT Protocol) : retrouvez nos actualités condensées et abonnez-vous à @goodtech.info.
