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