Saltar al contenido

Mold 3.0 lanza su reescritura en Rust como enlazador de reemplazo directo

Mold 3.0 es la primera versión escrita en Rust. Requiere Rust 1.95, prescinde de oneTBB de Intel y enlaza tan rápido como 2.42.1, la última versión en C++.

Por Tech AI Wire Team

3 min de lectura

XLinkedIn
Screenshot of the mold 3.0.0 release page on GitHub, with release notes announcing the rewrite from C++ to Rust.

En cifras

minimum Rust version needed to build mold 3.0
1.95
the last C++ release, which 3.0 replaces
2.42.1
mold's median speedup over LLVM lld, per its README
4.9x
mold's link-time speedup over LLVM lld, August 2026 tests
TensorFlow 2.21
16.1x
Chromium 145
10.1x
ClickHouse 26.1
6.7x

Mold 3.0, la primera versión escrita en Rust de este rápido enlazador para Linux, se publicó el 5 de octubre de 2026. Su autor, Rui Ueyama, reescribió todo el programa a partir de C++. Las notas de la versión prometen un cambio limpio: las mismas opciones, la misma salida y la misma velocidad que mold 2.42.1, la última versión en C++. Esto importa porque mold quiere ahora convertirse en el enlazador predeterminado de Linux.

Qué hace un enlazador y dónde encaja mold

Un enlazador es el último paso de la compilación de un programa. El compilador convierte cada archivo fuente en un archivo objeto. Después, el enlazador une esas piezas en un único programa que se puede ejecutar. En proyectos grandes este paso puede tardar muchos segundos, y se repite tras cada pequeño cambio.

La mayoría de los sistemas Linux usan por defecto GNU ld, el enlazador del proyecto GNU. El lld de LLVM es una alternativa más rápida. Mold se creó para superar a ambos. Su repositorio recoge estos tiempos de enlazado de pruebas realizadas en agosto de 2026:

ProgramamoldLLVM lldAceleración
Chromium 1451,65 s16,64 s10,1x
TensorFlow 2.213,15 s50,73 s16,1x
ClickHouse 26.10,98 s6,62 s6,7x

Esas cifras se midieron con la versión en C++. Las notas de la versión 3.0 dicen que la velocidad de enlazado «se mantiene a la par de 2.42.1», así que la versión en Rust reclama los mismos resultados. Ueyama expuso el plan por primera vez en septiembre: La reescritura de mold en Rust aspira a ser el enlazador de Linux.

Qué cambia en mold 3.0

Para quien simplemente invoca mold, nada debería parecer distinto. Según las notas de la versión en GitHub y Phoronix, mold 3.0:

  • acepta las mismas opciones de línea de comandos que 2.42.1
  • admite las mismas arquitecturas de CPU, entre ellas x86-64, AArch64, RISC-V y LoongArch
  • produce la misma salida, salvo donde se corrigieron errores
  • enlaza a la misma velocidad que 2.42.1

Los cambios reales están en cómo se compila el propio mold. Ahora usa Cargo, la herramienta de compilación estándar de Rust, en lugar de CMake. Para compilarlo se necesita Rust 1.95 o posterior.

También prescinde de oneTBB, una biblioteca de Intel que reparte el trabajo entre los núcleos del procesador. Era un paquete más que las distribuciones de Linux tenían que incluir junto a mold.

Por qué reescribir en Rust un enlazador que funciona

La razón principal es la seguridad. Un enlazador lee archivos objeto que no creó él. Después realiza sobre ellos mucho trabajo de memoria a bajo nivel.

En C++, un solo archivo de entrada defectuoso puede hacer que ese código lea memoria que nunca debería tocar. Hardware Busters informó en septiembre de que es justo ahí donde un fallo de memoria se convierte en un fallo de seguridad. Rust comprueba esas lecturas automáticamente. Según Phoronix, el resultado es que mold ahora es más seguro al manejar archivos de entrada dañados.

Lo que viene: guiones de enlazado y el puesto predeterminado

La serie 3.x tiene un objetivo claro. La meta declarada del proyecto es «cerrar las brechas de compatibilidad que quedan con GNU ld, en particular en el soporte de guiones de enlazado». También quiere «allanar el camino para que mold se adopte como enlazador predeterminado en las distribuciones de Linux».

Los guiones de enlazado son pequeños archivos que indican a un enlazador exactamente dónde colocar el código en memoria. Los núcleos de sistemas operativos, los cargadores de arranque y el firmware de dispositivos pequeños dependen de ellos. Mold no podía enlazar esos programas hasta ahora, según informó Hardware Busters. Mientras no pueda, las distribuciones no pueden convertirlo en el predeterminado del sistema.

Qué significa esto para los desarrolladores

Trate 3.0 como un reemplazo directo y después verifíquelo. Si ya usa mold, sus opciones de compilación no deberían tener que cambiar. Enlace primero un proyecto real tanto con 2.42.1 como con 3.0. Luego ejecute su conjunto completo de pruebas antes de cambiar sus máquinas de CI.

Revise su compilador si compila mold usted mismo. Se requiere Rust 1.95 o posterior, así que el Rust más antiguo que empaquetan algunas distribuciones de soporte a largo plazo puede no servir para compilarlo. Los empaquetadores pierden la dependencia de oneTBB, pero asumen una compilación con Cargo.

Mida sus propios tiempos de enlazado. Las aceleraciones de la tabla proceden del propio repositorio de mold, y se midieron antes de la reescritura. Cronometre una compilación completa y una pequeña recompilación incremental con su propio código, antes y después del cambio.

Vigile las distribuciones. Si una distribución importante convierte mold en su enlazador predeterminado, todas las compilaciones de ese sistema lo usarán sin que nadie lo pida. Esa decisión depende ahora del soporte de guiones de enlazado en la serie 3.x. Los desarrolladores de núcleos y de sistemas embebidos son el grupo al que conviene seguir primero.

Fuentes

  1. Mold 3.0 High Speed Linker Released Following Rust Rewrite - Phoronix
  2. Release mold 3.0.0 - GitHub
  3. rui314/mold - a modern linker - GitHub
  4. The Mold Linker Is Being Rewritten in Rust, and It Wants GNU ld's Job - Hardware Busters

Artículos relacionados