⚡ Tecnología
Rust vs Zig: reescribieron 300.000 líneas de código y esto pasó
Imagina que tienes 300.000 líneas de código funcionando. El equipo que las escribió las conoce al dedillo. Todo funciona. Pero algo no termina de convencerte. ¿Las reescribes desde cero en otro lenguaje?
Suena a locura. Pero eso exactamente hizo el equipo de Roc, un lenguaje de programación funcional enfocado en rendimiento. Y los resultados son tan buenos que todo el ecosistema de desarrollo está hablando de esto.
¿Qué pasó exactamente?
El compilador de Roc estaba escrito en Rust: 300.000 líneas de código sólidas, probadas, funcionando en producción. Pero el equipo liderado por Richard Feldman tomó una decisión drástica: reescribirlo completo en Zig.
¿La razón? No era que Rust fuera malo. Era que Zig resolvía problemas específicos que Rust no podía abordar bien en su caso: tiempos de compilación, control de memoria y un ecosistema más adecuado para las necesidades particulares de un compilador.
Después de 487 días de trabajo, alcanzaron la paridad de funcionalidades. Y los números hablan solos.
Las cifras que rompieron internet
Vamos a los datos duros, porque esto es lo que realmente importa:
🔹 Compilación incremental: 35 milisegundos en Zig vs 3.4 segundos en Rust. Eso es 100 veces más rápido. Para que te des una idea: antes alcanzabas a prepararte un café mientras compilaba. Ahora es más rápido que parpadear.
🔹 Binarios la mitad del tamaño: El nuevo compilador genera WASM de 31KB contra los 62KB del original. En un mundo donde el rendimiento web importa, esto es oro.
🔹 Bugs de memoria: 21 en Rust vs 10 en Zig. Contraintuitivo, ¿verdad? Se suponía que Rust era el campeón de la seguridad de memoria. Pero aquí está el detalle: los bugs de memoria en la versión Rust no estaban en la lógica del compilador, sino en código máquina mal generado (los compiladores producen instrucciones, y a veces esas instrucciones causan corrupción de memoria en tiempo de ejecución).
🔹 Hot code loading: El nuevo compilador permite cargar cambios en caliente, algo que normalmente solo ves en lenguajes interpretados como Python. Roc compilado puede recargar código sin reiniciar el servidor.
El contraejemplo: Bun hizo lo opuesto
Para que no pienses que hay una respuesta única, el equipo de Bun (el runtime de JavaScript/TypeScript) fue en la dirección contraria: reescribieron 500.000 líneas de Zig a Rust en solo 11 días.
¿Por qué? Porque Bun necesitaba manejar lifetimes de objetos con garbage collector (JavaScript), algo donde Rust es excepcionalmente bueno. La moraleja: no hay lenguaje perfecto, hay lenguaje adecuado para cada problema.
¿Qué significa esto para los desarrolladores LATAM?
Esta historia importa porque rompe dos mitos muy extendidos:
Mito 1: "Reescribir código desde cero siempre es un error." Falso. En compiladores, las reescrituras son la norma. GCC, LLVM, Go, Rust — todos han sido reescritos al menos una vez. Lo importante es saber cuándo y por qué.
Mito 2: "Rust es siempre la respuesta para sistemas." No. Rust es increíble, pero tiene sus propias deudas técnicas: tiempos de compilación largos, ecosistema que asume un solo asignador global, y dependencia de bloques unsafe que anulan parcialmente sus garantías de seguridad.
Si trabajas en LATAM como desarrollador y estás considerando un rewrite, esta historia te da una hoja de ruta:
✅ Define métricas claras antes de empezar (tiempos de build, uso de memoria, tamaño binario)
✅ Elige el lenguaje por el problema específico, no por moda
✅ Mide antes y después con los mismos benchmarks
✅ Prepárate para 6-18 meses de trabajo intenso
✅ Ten un equipo comprometido que entienda AMBOS lenguajes
Veredicto: ni Rust ni Zig ganan, gana quien elige bien
Lo más interesante de esta historia no es que Zig sea "mejor" que Rust, o viceversa. Es que el equipo de Roc entendió su problema específico y escogió la herramienta que lo resolvía mejor.
Rust es extraordinario para ecosistemas donde la seguridad de memoria es crítica y el overhead de compilación es aceptable. Zig brilla cuando necesitas control absoluto, builds ultrarrápidos y simplicidad sin sacrificar rendimiento.
Y al final del día, ambos lenguajes están elevando el estándar de lo que significa programar sistemas de alto rendimiento. Eso es una victoria para todos.
Comparte esto con ese amigo que dice que Rust es el único lenguaje de sistemas que vale la pena. Tal vez después de leer esto, quiera darle una oportunidad a Zig.