Dev & Code Aug 24, 2026Adicionar aos favoritos

Ubuntu por trás de um projeto de conversão automática C→Rust assistida por IA. O objetivo: Rust realmente seguro, não apenas código que compila sem *unsafe* por toda parte.
Parta de um bug clássico: um buffer overflow em um daemon de sistema escrito em C. Corrigível, mas que pode reaparecer de forma diferente seis meses depois porque C não pode garantir mecanicamente a ausência desse tipo de erro. Agora imagine esse mesmo código reescrito em Rust — onde o compilador torna esse bug estruturalmente impossível. Essa é a ambição que a Canonical (editora do Ubuntu) apoia financeiramente: traduzir automaticamente milhões de linhas de C em Rust seguro, com a ajuda da IA.
A tradução automática C→Rust já existe — a ferramenta c2rust faz isso há anos. O problema: ela produz Rust sintaticamente válido, mas unsafe por toda parte. O que anula exatamente o interesse do ponto de vista da segurança de memória. Mudou-se a sintaxe sem mudar as garantias.
O que o projeto apoiado pela Canonical almeja é Rust idiomático e seguro: código que aproveita o sistema de tipos do Rust (ownership, borrowing, lifetimes) para expressar e verificar os invariantes de segurança em tempo de compilação. Isso é fundamentalmente difícil porque C e Rust não compartilham os mesmos modelos mentais:
// C - correto ou use-after-free dependendo do contexto de uso
char* get_value(struct Map* m, const char* key) {
return hashmap_get(m, key); // ponteiro potencialmente inválido se m for modificado
} // Rust - o compilador impede a modificação de m durante o empréstimo
fn get_value<'a>(m: &'a HashMap<&str, String>, key: &str) -> Option<&'a String> {
m.get(key) // validade do lifetime garantida pelo compilador
} A IA deve entender que essas duas funções não são mecanicamente equivalentes — e que uma tradução ingênua produziria um bloco unsafe, não uma verdadeira migração.
Aqui ecoa diretamente o debate que agita o software livre. Linus Torvalds decidiu pelo núcleo Linux: contribuições assistidas por IA são bem-vindas, os opositores podem fazer fork. A Canonical segue a mesma lógica pragmática — a IA como ferramenta de modernização em massa, não como ameaça à integridade.
A verdadeira questão permanece a validação humana: quem revisa o Rust gerado? Quem garante que a semântica do C original foi preservada, inclusive seus comportamentos em limites? Uma ferramenta que gera 95% de Rust correto e 5% de código sutilmente incorreto é mais perigosa do que uma ferramenta 100% unsafe — porque dá uma falsa garantia.
Se o projeto cumprir suas promessas, será um avanço considerável na transição das camadas de sistema para Rust — movimento já em andamento (Android, Windows, núcleo Linux, OpenSSL). A Canonical, ao mirar no Ubuntu, afeta diretamente as camadas baixas de milhões de servidores em produção.
A Canonical apoia a tradução de C para Rust em larga escala com IA, visando Rust idiomático e seguro — não apenas sintaticamente válido como o c2rust. O desafio: demonstrar que a IA pode entender a semântica de memória, não só a sintaxe. Acompanhe se você mantém código crítico de sistema em C.
Artigo produzido por inteligência artificial, revisto sob controlo editorial humano.
IA vs libristes : la fracture s'installe dans l'open source