Atualização para GNU Coreutils, reescrito em Rust

É apresentado o lançamento do kit de ferramentas uutils coreutils 0.0.12, dentro do qual está sendo desenvolvido um análogo do pacote GNU Coreutils, reescrito na linguagem Rust. Coreutils vem com mais de cem utilitários, incluindo sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls. Ao mesmo tempo, o pacote uutils findutils 0.3.0 foi lançado com uma implementação em Rust dos utilitários do conjunto GNU Findutils (encontrar, localizar, atualizadob e xargs).

O motivo da criação do projeto e da utilização da linguagem Rust é o desejo de criar uma implementação alternativa multiplataforma de Coreutils e Findutils, capaz de rodar nas plataformas Windows, Redox e Fuchsia, entre outras. Outra diferença importante entre uutils é que ele é distribuído sob a Licença Permissiva MIT, em vez da licença copyleft GPL.

Atualmente, a implementação de 88 utilitários foi totalmente equiparada ao GNU Coreutils. Falhas individuais são observadas em 18 utilitários, incluindo cp, dd, date, df, install, ls, more, sort, split, tail e test. Apenas o utilitário stty permanece não implementado. Ao passar no conjunto de testes do projeto GNU Coreutils, 214 testes são executados com sucesso, mas o análogo do Rust ainda não passa em 313 testes. Ao mesmo tempo, a intensidade do desenvolvimento do projeto aumentou visivelmente - 400-470 patches são adicionados por mês por 20-50 desenvolvedores, em vez de 30-60 por 3-8 desenvolvedores há um ano.

Atualização para GNU Coreutils, reescrito em Rust

Entre as conquistas mais recentes, destaca-se a otimização de desempenho - no estado atual, muitos utilitários, como head e cut, são significativamente superiores em desempenho às opções do GNU Coreutils. A cobertura do conjunto de testes foi ampliada de 55% para 75% de todo o código (80% é uma meta suficiente). O código foi refatorado para simplificar a manutenção, por exemplo, o tratamento de erros foi unificado em diferentes programas e o código para trabalhar com direitos de acesso foi combinado em chgrp e chown. Numerosas alterações foram adicionadas para melhorar a compatibilidade com GNU Coreutils.

Os planos para o futuro incluem a implementação do utilitário stty, trabalho contínuo para melhorar a compatibilidade com GNU Coreutils, adição de otimizações para reduzir o tamanho de arquivos executáveis, bem como experiências contínuas no uso de utilitários uutils no Debian e Ubuntu em vez de GNU Coreutils e GNU Findutils (um dos principais desenvolvedores de uutils trabalhou anteriormente em um projeto para construir o Debian GNU/Linux usando o compilador Clang). Além disso, são observadas a preparação do pacote uutils-coreutils para macOS, experimentos com a substituição de GNU Coreutils por uutils coreutils no NixOS, a intenção de usar uutils coreutils por padrão na distribuição Apertis e a adaptação do conjunto de uutils para Redox OS.

Fonte: opennet.ru

Adicionar um comentário