Dev & Código Aug 24, 2026Añadir a favoritos

Ubuntu detrás de un proyecto de conversión automática C→Rust asistida por IA. El objetivo: Rust realmente seguro, no solo código que compile sin *unsafe* por todas partes.
Partamos de un error clásico: un desbordamiento de búfer en un demonio del sistema escrito en C. Corregible, pero que puede reaparecer en otra forma dentro de seis meses porque C no puede garantizar mecánicamente la ausencia de este tipo de errores. Ahora imaginen ese mismo código reescrito en Rust, donde el compilador hace que este error sea estructuralmente imposible. Esta es la ambición que Canonical (editor de Ubuntu) apoya financieramente: traducir automáticamente millones de líneas de C a Rust seguro, con la ayuda de la IA.
La traducción automática de C a Rust ya existe: la herramienta c2rust lleva años haciéndolo. El problema es que produce Rust sintácticamente válido pero unsafe por todas partes. Lo que anula exactamente el interés desde el punto de vista de la seguridad de la memoria. Se cambió la sintaxis sin cambiar las garantías.
Lo que busca el proyecto apoyado por Canonical es Rust idiomático y seguro: código que aproveche el sistema de tipos de Rust (ownership, borrowing, lifetimes) para expresar y verificar los invariantes de seguridad en tiempo de compilación. Esto es fundamentalmente difícil porque C y Rust no comparten los mismos modelos mentales:
// C - correcto o use-after-free según el contexto de uso
char* get_value(struct Map* m, const char* key) {
return hashmap_get(m, key); // puntero potencialmente inválido si m se modifica
} // Rust - el compilador prohíbe modificar m durante el préstamo
fn get_value<'a>(m: &'a HashMap<&str, String>, key: &str) -> Option<&'a String> {
m.get(key) // validez del lifetime garantizada por el compilador
} La IA debe entender que estas dos funciones no son mecánicamente equivalentes y que una traducción ingenua produciría un unsafe block, no una verdadera migración.
Aquí se refleja directamente el debate que agita el software libre. Linus Torvalds se decantó por el núcleo Linux: las contribuciones asistidas por IA son bienvenidas, los detractores pueden hacer un fork. Canonical sigue la misma lógica pragmática: la IA como herramienta de modernización masiva, no como amenaza a la integridad.
La verdadera pregunta sigue siendo la validación humana: ¿quién revisa el Rust generado? ¿Quién garantiza que se preserva la semántica del C original, incluidos sus comportamientos en los límites? Una herramienta que genera un 95% de Rust correcto y un 5% de código sutilmente incorrecto es más peligrosa que una que produce un 100% de unsafe porque da una falsa garantía.
Si el proyecto cumple sus promesas, será una aceleración considerable en la transición de las capas del sistema hacia Rust, un movimiento ya en marcha (Android, Windows, núcleo Linux, OpenSSL). Al apuntar Canonical a Ubuntu, esto afecta directamente a las capas bajas de millones de servidores en producción.
Canonical apoya la traducción IA de C a Rust a gran escala, buscando Rust idiomático y seguro, no solo sintácticamente válido como c2rust. El reto: demostrar que la IA puede entender la semántica de la memoria, no solo la sintaxis. A vigilar si mantienes código crítico del sistema en C.
Artículo producido por inteligencia artificial, revisado bajo control editorial humano.
IA vs libristes : la fracture s'installe dans l'open source