Canonical financia projeto que quer usar IA para converter grandes programas em C para Rust

Canonical financiará pesquisa de três anos que combina modelos de linguagem, testes e métodos formais para traduzir grandes bases de código C para Rust.

A enorme quantidade de software escrito em C é um obstáculo para empresas interessadas nas proteções de memória oferecidas pelo Rust. Reescrever manualmente projetos maduros pode levar anos e ainda introduzir novos bugs. A Canonical quer descobrir se parte desse trabalho pode ser automatizada sem sacrificar o comportamento do software original.

A desenvolvedora do Ubuntu está financiando um projeto de doutorado de três anos da Universidade de Bristol, no Reino Unido, dedicado à criação de uma plataforma capaz de traduzir repositórios com centenas de milhares de linhas de C para Rust. O financiamento terá contrapartida da UK Research and Innovation (UKRI). O objetivo é mais ambicioso do que simplesmente produzir código Rust que consiga ser compilado: a pesquisa busca gerar código seguro, de fácil manutenção e que preserve o comportamento do programa escrito em C.

Modelos de linguagem farão apenas uma parte do trabalho

A plataforma deverá dividir grandes repositórios em partes que possam ser processadas separadamente, preservando informações sobre tipos, dependências e comportamento necessárias durante a conversão.

A tradução propriamente dita recorrerá a modelos de linguagem treinados ou ajustados a partir de exemplos conhecidos de conversões de C para Rust. A intenção é evitar um dos problemas dos tradutores tradicionais: gerar código que tecnicamente é Rust, mas mantém estruturas e práticas herdadas do C, incluindo uso excessivo de operações unsafe. O código produzido pela IA, porém, será considerado não confiável até passar por verificações adicionais.

O projeto pretende combinar fuzz testing com métodos mais formais de verificação de equivalência para descobrir se a versão em Rust realmente se comporta como o programa original. Caso apareçam diferenças, outra etapa deverá localizar a provável origem do erro e tentar corrigi-la com técnicas de reparo simbólico de programas.

A abordagem, portanto, combina modelos de linguagem, análise tradicional de programas, testes e métodos formais em vez de entregar toda a migração à IA.

AppArmor e snap-confine serão usados como testes

Dois componentes ligados à segurança do Ubuntu servirão como casos de estudo: AppArmor e snap-confine. A escolha é deliberadamente difícil. São projetos maduros usados em produção, com particularidades acumuladas durante anos de desenvolvimento. Isso permitirá avaliar se a tecnologia funciona fora de pequenos programas e benchmarks preparados especificamente para pesquisas. 

A Canonical ressalta, contudo, que o experimento não significa que AppArmor ou snap-confine serão reescritos em Rust. A empresa tem interesse direto nos dois projetos e quer utilizá-los para avaliar os resultados da pesquisa. O trabalho será realizado pelo estudante Alex Wood e liderado na Universidade de Bristol pelo professor Meng Wang, com Cristina David e Jon Seager, da Canonical, como cosupervisores. Se a abordagem funcionar, o resultado poderá atacar um problema maior do que o próprio Ubuntu: como aproveitar as proteções de memória do Rust em enormes bases de código C sem assumir o custo e o risco de reescrevê-las manualmente do zero. 

Você também deve ler!

Novo patch do Linux faz Steam Deck ganhar até 31,8% em fluidez nos jogos

IA força Linux a abandonar suporte a hardwares antigos para poupar desenvolvedores

Postado por
Editor-chefe no Hardware.com.br/GameVicio Aficionado por tecnologias que realmente funcionam. Segue lá no Insta: @williamrplaza Elogios, críticas e sugestões de pauta: william@hardware.com.br
Siga em:
Compartilhe
Deixe seu comentário
Assine nossa Newsletter
Assine nossa newsletter e receba nossa seleção de conteúdo sobre tecnologia, games, IA e internet em seu email.
Veja também
Publicações Relacionadas
Img de rastreio
Localize algo no site!