Skip to content
Tech AI Wire

La reescritura de mold en Rust aspira a ser el enlazador de Linux

Mold enlaza 4,9 veces más rápido que LLVM lld. Su autor lo está reescribiendo en Rust y quiere que las distribuciones lo instalen como /usr/bin/ld.

Por Tech AI Wire Team

4 min de lectura

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

En cifras

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 está reescribiendo mold de C++ a Rust. Mold es uno de los enlazadores más rápidos disponibles en Linux. Phoronix informó el 11 de septiembre de 2026 de que esa reescritura es el eje de la próxima serie 3.x. El segundo objetivo es el que deberían vigilar los desarrolladores: mold quiere que las distribuciones de Linux lo instalen como /usr/bin/ld, el enlazador predeterminado al que recurre cada compilación.

Un enlazador es el último paso de una compilación. El compilador convierte cada archivo fuente en un archivo objeto. El enlazador une después esos objetos y sus bibliotecas en un único programa ejecutable. En un proyecto grande de C++ o Rust, ese paso final suele decidir cuánto hay que esperar.

La diferencia es amplia. Phoronix la describió en términos concretos. Un trabajo de enlazado que mold termina en «unos pocos cientos de milisegundos» puede tardar «varios segundos, decenas de segundos o incluso minutos con el enlazador predeterminado».

El repositorio de mold afirma que enlaza 4,9 veces más rápido que lld de LLVM en la mediana, y 1,9 veces más rápido que wild. Ueyama también escribió lld, así que compite contra su propio trabajo anterior. El proyecto se usa en producción desde 2021. Admite 14 arquitecturas de procesador, entre ellas x86-64, ARM, RISC-V, PowerPC, s390x, LoongArch y SPARC64.

Por qué Rust, y por qué ahora

Ueyama expuso sus razones en una discusión fijada en el repositorio de mold en GitHub, abierta el 1 de septiembre de 2026. La seguridad de memoria fue lo primero. Un enlazador lee archivos objeto que no creó él y hace mucha aritmética de punteros. Ahí es justamente donde un fallo de memoria resulta fácil de escribir y lento de encontrar.

También señaló las herramientas. Rust incluye Cargo para gestionar dependencias y facilita la compilación cruzada. Ambas cosas importan en una herramienta que debe compilarse para 14 arquitecturas. C++20, el lenguaje actual de mold, no le da ninguna de las dos de serie.

El argumento del momento elegido será el más discutido. Ueyama atribuye a las herramientas de programación con IA el que la reescritura resulte asumible. «La reescritura asistida por IA ha cambiado drásticamente el coste de este tipo de trabajo», escribió. «Probablemente no lo habría intentado el año pasado, pero hoy exige sorprendentemente poco esfuerzo.»

Planteó la decisión como una apuesta a largo plazo: «esta decisión tendrá más sentido vista en retrospectiva dentro de 10 o 20 años que lo que pueda parecer hoy».

Otros proyectos han seguido el mismo camino este año. Bun 1.4 llevó su reescritura en Rust a producción, y YSERVER 1.5, un servidor X11 escrito desde cero en Rust, tuvo su código inicial escrito con ayuda de la IA.

Convertirse en /usr/bin/ld es la mitad más difícil

Lo que impide que un enlazador se convierta en el predeterminado no es la velocidad. Es la compatibilidad. GNU ld y su hermano más rápido, gold, acumulan décadas de comportamientos de los que los guiones de compilación dependen en silencio. Van desde la sintaxis de los guiones de enlazado hasta opciones de línea de órdenes poco conocidas.

El proyecto lo sabe. «Uno de los principales objetivos de la serie mold 3.x es hacer que mold sea apto para su adopción como /usr/bin/ld por parte de las distribuciones de Linux», informó Phoronix. El plan tras la reescritura es lento y de colaboración: «Después llevaremos a cabo pruebas de compatibilidad exhaustivas y trabajaremos estrechamente con los desarrolladores de las distribuciones de Linux.»

PasoEstado
Reescribir mold de C++ a RustEn marcha, con la serie 3.x como objetivo
Pruebas de compatibilidad exhaustivasPrevistas, tras la reescritura
Coordinación con desarrolladores de distribucionesPrevista, tras las pruebas
Distribución como /usr/bin/ld por defectoSin fecha

Ninguna distribución se ha comprometido con el cambio. No se ha dado fecha para ninguno de estos pasos.

Qué significa esto para los desarrolladores

Hoy no se rompe nada. mold 2.x sigue donde está, y la reescritura en Rust llegará en una futura serie 3.x que no tiene fecha de publicación.

Si nunca ha probado mold, esta es una buena semana para medir lo que le ahorraría. En una cadena de herramientas de Linux puede dirigir una sola compilación hacia él con -fuse-ld=mold. Después compare el paso de enlazado con su predeterminado actual. Los proyectos con muchos archivos objeto y bibliotecas estáticas grandes notan la mayor diferencia; uno pequeño puede no notar ninguna.

Si mantiene un sistema de compilación o un paquete de una distribución, la fase de compatibilidad es donde su aportación cuenta. Los guiones de enlazado propios, las opciones poco habituales y los ajustes de optimización en tiempo de enlazado son las partes con más probabilidad de diferir. Ueyama ha dicho explícitamente que quiere contar con los desarrolladores de distribuciones antes de que cambie ningún valor predeterminado.

Hay aquí un segundo detalle que merece atención, al margen de los enlazadores. El responsable de una herramienta de sistema muy utilizada acaba de decir en público que la ayuda de la IA cambió qué reescritura estaba dispuesto a intentar. Si ese juicio se sostiene es algo que la serie 3.x responderá en código. Conviene comprobarlo por el resultado y no por la afirmación.

Fuentes

  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

Artículos relacionados