Un programador traduce línea a línea el runtime de OCaml de C a Rust con ayuda de IA

Fuentes: A line-by-line translation of the OCaml runtime from C to Rust

El programador Mark Shinwell (seudónimo bajo el alias «No Marks Shinwell were harmed») ha presentado un puerto completo del runtime de OCaml, escrito originalmente en C, a Rust. El proyecto, llamado rustcaml y disponible en GitHub, se realizó con asistencia de Claude Code (modelo Opus 4.7) y consistió en traducir archivo a archivo y línea a línea el código C existente a Rust, con un interruptor por archivo en el sistema de compilación que permitía alternar entre la versión C y la Rust. Tras cada cambio se ejecutaba la suite de pruebas oficial de OCaml sin modificar y se realizaba un commit, de modo que el compilador nunca dejó de funcionar en ningún momento del proceso.

El resultado es un runtime sin código C que supera la suite de pruebas del compilador de OCaml, es capaz de compilarse a sí mismo, compilar dune, instalar un switch de opam y generar programas tanto en bytecode como en código nativo. En rendimiento, los binarios nativos se sitúan en paridad con la versión en C (alrededor de 1,05x en el caso estable), mientras que el intérprete de bytecode es 1,44 veces más lento en Rust estable por la ausencia de computed gotos; al activar llamadas de cola explícitas en Rust nightly, el intérprete iguala o incluso supera ligeramente al original en C.

El autor subraya que el puerto no es más seguro que el original: contiene unas 2.015 instrucciones unsafe, un número difícilmente reducible por la propia naturaleza del runtime, que manipula palabras máquina sin tipos para implementar el recolector de basura y debe respetar la ABI de C. El artículo incluye además una comparación con el reciente porte de 960.000 líneas de Zig a Rust realizado por el proyecto Bun.