Cpp2Rust: traductor automático de C++ a Rust seguro

Fuentes: Cpp2Rust: Automatic Translation of C++ to Safe Rust

Cpp2Rust es una herramienta de código abierto que traduce código C++ a Rust completamente seguro de forma automática. Funciona como un traductor dirigido por la sintaxis que toma como punto de partida el árbol de sintaxis abstracta (AST) generado por clang. Tras recorrer dicho AST, la herramienta emite código Rust en forma de cadenas y, cuando es necesario para reproducir la semántica de punteros crudos de C, inserta llamadas a la biblioteca de tiempo de ejecución libcc2rs. Por último, el código generado se formatea con rustfmt en un único archivo .rs. De forma predeterminada, el traductor emplea un modelo basado en conteo de referencias que produce Rust seguro en su totalidad; también está disponible un modo --model=unsafe pensado para depuración y comparativas de rendimiento.

Uno de los componentes clave es el tipo Ptr, definido en libcc2rs, que modela la semántica de los punteros en C —incluidos valores nulos, aritmética de punteros y aliasing— al tiempo que satisface el verificador de préstamos de Rust mediante comprobaciones en tiempo de ejecución. La instalación en Ubuntu requiere libclang-22-dev, clang++-22, ninja-build y cmake, y la compilación se realiza con cmake -GNinja y ninja. El uso básico consiste en invocar ./build/cpp2rust/cpp2rust --file=.cpp -o=.rs. Para proyectos completos se genera primero un compile_commands.json (en CMake con -DCMAKE_EXPORT_COMPILE_COMMANDS=ON) y después se ejecuta la herramienta con --dir= apuntando a la carpeta que contiene ese archivo.

El algoritmo está descrito en el artículo 'Cpp2Rust: Automatic Translation of C++ to Safe Rust', aceptado en PLDI 2026, lo que lo sitúa como una propuesta académica con respaldo de una conferencia de primer nivel en lenguajes de programación.