Durante o evento FOSDEM 2023, foi lançada uma reimplementação do GNU Coreutils feita em Rust pelo desenvolvedor Sylvestre Ledru.
GNU Coreutils é um pacote do projeto GNU que contém muitas ferramentas básicas necessárias para sistemas operacionais do tipo Unix: cp (copiar um arquivo ou diretório), mkdir (criar um diretório), etc.
Ele tem um objetivo: tornar o pacote utilizável em outros sistemas operacionais: Windows, macOS, Android, FreeBSD, etc.
Mas agora, um desenvolvedor oferece uma reimplementação do pacote, feita na linguagem Rust.
Lançada uma reimplementação do GNU Coreutils feita em Rust
Sylvestre Ledru começou a trabalhar em uma reimplementação do GNU Coreutils em Rust durante a pandemia do COVID-19 e o apresentou na semana passada no FOSDEM 2023.
O esforço chamado uutils agora é empacotado por muitas distribuições Linux e também é usado por uma famosa rede social por meio do projeto Yocto.
As comparações das linguagens Rust e C++ têm uma linha comum: destacar a superioridade do Rust sobre o C++ em termos de segurança de memória. O editor RisingWave explica por que ele reescreveu seu Cloud DBMS nativo do zero em Rust depois de deixar o projeto C++.
“Rust garante segurança de memória e thread em tempo de compilação, introduzindo regras de propriedade. Vai além do RAII, um mecanismo de gerenciamento de memória comumente usado em C++. Tem duas vantagens. A primeira é óbvia: assim que o compilador Rust validar nosso programa, não teremos nenhum erro de segmento ou condição de corrida em tempo de execução, o que exigiria dezenas de horas de depuração, especialmente em uma base de código altamente simultânea e principalmente assíncrona. A segunda é mais sutil: o compilador do Rust simplesmente restringe os tipos de falhas, o que reduz os trechos de código fortemente aninhados que podem causar tal comportamento defeituoso. A replicação de erros é significativamente aprimorada usando a execução determinística.”
A mudança vem para reavivar o debate sobre a questão de continuar iniciando novos projetos em C e C++ ou simplesmente optar pela linguagem Rust.
“A linguagem Rust oferece garantias de segurança por padrão quando se trata de gerenciamento de memória. Não é o caso de C e C++, cujo uso no Mozilla causa problemas de segurança de memória”, enfatiza Sylvestre Ledru.
No entanto, Bjarne Stroustrup discorda que as comparações entre Rust e C++ limitem a noção de proteção de software à de proteção de memória:
“Não existe uma definição única da noção de ‘segurança’ e podemos obter uma variedade de tipos de segurança por meio de uma combinação de estilos de programação, bibliotecas de suporte e alavancando a análise estática. Bjarne Stroustrup sugere assim que o que se pode obter de C++ em termos de segurança de software depende, entre outras coisas, do desenvolvedor e, em particular, do conhecimento das ferramentas que a linguagem oferece, do seu domínio do compilador, etc.”
Os engenheiros do Google, cientes das possibilidades que o C++ lhes oferece, embarcaram na criação de um verificador de empréstimos nessa linguagem. É um recurso do compilador Rust que garante a segurança da memória por meio do gerenciamento de alocação de ponteiro de memória.
A equipe do Google, cuja publicação apareceu no terceiro trimestre do ano anterior, chegou à conclusão de que o sistema do tipo C++ não se presta a tal exercício. E para que a segurança da memória em C++ possa ser alcançada com verificações durante a execução do programa.
Ou seja, é com código C++ lento que é possível atingir um nível de segurança equivalente ao do Rust.
O lançamento do editor RisingWave ocorre no momento em que Rust se destaca de outras linguagens que são apresentadas há anos como alternativas a C e C++.
Na verdade, o kernel do Linux está se tornando cada vez mais aberto à linguagem de programação de sistemas da Mozilla.