Canonical financia projeto para automatizar migração de C para Rust
Notícias

Canonical financia projeto para automatizar migração de C para Rust

Acesse nossos conteúdos exclusivos!

A Canonical está financiando uma nova pesquisa para desenvolver uma tecnologia capaz de converter grandes projetos escritos em C para Rust de forma automatizada. O projeto será realizado em parceria com a Universidade de Bristol, no Reino Unido, terá duração de três anos e deve começar ainda em 2026.

A proposta é criar uma plataforma capaz de lidar com repositórios que chegam a centenas de milhares de linhas de código, produzindo uma implementação em Rust que seja segura, mantenha o comportamento original e possa ser mantida por desenvolvedores da linguagem.

O desafio de converter grandes projetos

A migração de C para Rust é considerada uma das possibilidades para reduzir problemas relacionados à segurança de memória em softwares de sistemas. O problema está na quantidade de código C já existente.

Projetos maduros acumulam anos de correções, otimizações, adaptações para diferentes plataformas e decisões de engenharia. Reescrever tudo manualmente exige muito tempo e também pode introduzir novos problemas.

Ferramentas de conversão automática já conseguem transformar partes consideráveis de código C, mas geralmente mantêm a estrutura original de maneira muito próxima. Isso pode resultar em um código-fonte em Rust que utiliza muitos recursos unsafe e preserva padrões característicos do C.

Modelos de linguagem conseguem produzir Rust mais idiomático em exemplos pequenos, porém enfrentam dificuldades para compreender o contexto de repositórios muito grandes. Além disso, produzir um código que parece correto não garante que ele mantenha exatamente o comportamento do programa original.

IA combinada com análise de código

A pesquisa pretende combinar modelos de aprendizado de máquina com técnicas tradicionais de análise de programas, testes e métodos formais. A abordagem é descrita como neurosimbólica. O primeiro passo será dividir os grandes repositórios em partes que possam ser traduzidas separadamente, preservando informações importantes sobre tipos, dependências e comportamento.

A tradução utilizará modelos de linguagem treinados ou ajustados com exemplos de conversões conhecidas entre C e Rust. A intenção é produzir código que utilize recursos próprios do Rust, em vez de simplesmente reproduzir a estrutura do programa original em uma nova sintaxe.

Depois disso, o código gerado será submetido a processos de validação para verificar se continua apresentando o mesmo comportamento do projeto em C. A pesquisa também pretende explorar fuzzing e técnicas de verificação de equivalência.

Quando forem encontradas diferenças, outra etapa do sistema deverá identificar possíveis problemas na tradução e tentar corrigi-los automaticamente.

AppArmor e snap-confine serão usados como estudos de caso

A Canonical pretende testar a tecnologia em projetos reais, utilizando AppArmor e snap-confine como estudos de caso.

Os dois componentes são importantes para a segurança do Ubuntu e oferecem um cenário muito mais complexo do que pequenos programas utilizados em demonstrações de tradução automática. Eles permitirão avaliar como a abordagem lida com grandes bases de código, dependências, particularidades de sistemas operacionais e outros elementos comuns em software de longa duração.

A Canonical ressalta que isso não significa necessariamente que as versões públicas do AppArmor ou snap-confine serão reescritas em Rust. Os projetos serão utilizados para avaliar a tecnologia desenvolvida durante a pesquisa.

Mais um passo na adoção do Rust pelo Ubuntu

O projeto também faz parte da crescente adoção do Rust no ecossistema Ubuntu. A Canonical cita o uutils coreutils e o sudo-rs como exemplos de implementações em Rust que já alcançaram maturidade suficiente para serem utilizadas na distribuição.

Agora, a empresa pretende investigar se técnicas automatizadas podem reduzir o custo necessário para levar esse processo a projetos C muito maiores.

A pesquisa será conduzida pelo professor Meng Wang, com Cristina David e Jonathan Riddell, da Canonical, como co-supervisores. O trabalho contará ainda com apoio equivalente do UK Research and Innovation (UKRI).

Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter.

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!
2652 posts

Sobre o Autor
Redator, além de estudante de engenharia e computação.
Artigos