Foi lançado o pacote uutils coreutils 0.0.12, que desenvolve uma alternativa ao pacote GNU Coreutils, reescrito na linguagem Rust. O coreutils inclui mais de cem utilitários, incluindo sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls. Simultaneamente, foi lançado o pacote uutils findutils 0.3.0 com a implementação em Rust dos utilitários do conjunto GNU Findutils (find, locate, updatedb e xargs).
A razão para a criação do projeto e o uso da linguagem Rust é o desejo de criar uma implementação alternativa e multiplataforma do Coreutils e Findutils, capaz de funcionar também em plataformas Windows, Redox e Fuchsia. Outra diferença importante do uutils é a distribuição sob a licença permissiva MIT, em vez da licença copyleft GPL.
Atualmente, a implementação de 88 utilitários está totalmente paritária com o GNU Coreutils. Algumas deficiências são notadas 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 pelo conjunto de testes do projeto GNU Coreutils, 214 testes são executados com sucesso, mas 313 testes da versão em Rust ainda não são aprovados. No entanto, a intensidade de desenvolvimento do projeto aumentou consideravelmente — são adicionados de 400 a 470 patches por mês de 20 a 50 desenvolvedores, em comparação com 30 a 60 de 3 a 8 desenvolvedores há um ano.

Entre as últimas conquistas, destaca-se a otimização de desempenho — atualmente, muitos utilitários, como head e cut, superam significativamente em desempenho as versões do GNU Coreutils. A cobertura do conjunto de testes foi ampliada de 55% para 75% de todo o código (a meta é de 80%). Foi realizado um refatoramento do código para simplificar a manutenção, por exemplo, a manipulação de erros foi unificada em diferentes programas, e em chgrp e chown, o código para gerenciar permissões foi consolidado. Várias mudanças foram adicionadas para melhorar a compatibilidade com o GNU Coreutils.
Entre os planos futuros estão a implementação da ferramenta stty, a continuidade do trabalho para melhorar a compatibilidade com o GNU Coreutils, a adição de otimizações para reduzir o tamanho dos arquivos executáveis, além da continuação dos experimentos com a utilização das ferramentas uutils em Debian e Ubuntu, em substituição ao GNU Coreutils e ao GNU Findutils (um dos principais desenvolvedores do uutils já trabalhou no projeto de construção do Debian GNU/Linux usando o compilador Clang). Adicionalmente, está em preparo o pacote uutils-coreutils para macOS, experimentos para substituir o 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 uutils para o Redox OS.
Fonte: opennet.ru
