Foi lançado o projeto uutils coreutils 0.4.0 (Rust Coreutils), uma alternativa ao pacote GNU Coreutils, escrita 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. O objetivo do projeto é criar uma implementação alternativa multiplataforma do Coreutils, capaz de operar em plataformas como Windows, Redox e Fuchsia.
Rust Coreutils está habilitado por padrão na versão Ubuntu 25.10 e é utilizado nas distribuições AerynOS (Serpent OS) e Apertis (desenvolvido pela Collabora). Ao contrário do GNU Coreutils, a implementação em Rust é distribuída sob a licença permissiva MIT, em vez da licença copyleft GPL. Adicionalmente, a mesma equipe de desenvolvedores está criando versões escritas em Rust para os conjuntos de utilitários util-linux, diffutils, findutils e procps, bem como para os programas sed e login.
Na nova versão do Rust Coreutils:
- Melhorada a compatibilidade com o conjunto de testes de referência do GNU Coreutils, passando com sucesso 544 testes, 12 a mais do que na versão anterior (532). 56 (68) testes falharam e 33 (33) testes foram ignorados. O nível de compatibilidade declarado é de 85,80% (era 83,91%).
- Na utilidade data, a compatibilidade com o GNU date foi aprimorada ao lidar com fusos horários (adicionada a possibilidade de especificar nomes abreviados de fusos horários na opção —set).
- Na utilidade factor, o pacote num_prime foi integrado para acelerar a fatoração dos tipos u64/u128.
- Na utilidade tsort, a implementação do algoritmo de busca DFS foi alterada de um método recursivo para um método iterativo para evitar estouros de pilha.
- Na utilidade cksum, foi implementado suporte para hashes sha2 e sha3. Adicionados testes para monitorar mudanças de desempenho do cksum. A funcionalidade hashsum foi transferida para o cksum.
- Na utilidade mkdir, foi corrigido um estouro de pilha que causava falhas ao criar grandes (mais de 200) números de diretórios aninhados.
- Nas utilidades stdbuf e uptime, foi implementado suporte para a plataforma OpenBSD.
- Melhorada a compilação e os testes na plataforma FreeBSD.
- Feitas melhorias gerais para aumentar a portabilidade.
- Ampliadas as funcionalidades, resolvidos problemas e adicionadas opções faltantes para as utilidades base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.
Além disso, pode-se notar uma discrepância no comportamento da ferramenta "du" dos conjuntos uutils e GNU Coreutils, surgida após a transição do Ubuntu 25.10 para uutils. Os desenvolvedores ainda não decidiram se devem interpretar essa discrepância como um erro, pois, por um lado, o comportamento de uutils faz sentido e o conjunto de testes do GNU Coreutils não revela problemas, mas, por outro lado, a incompatibilidade com o GNU Coreutils deve ser tratada como erros e o comportamento do Busybox corresponde ao GNU Coreutils.
Comportamentos diferentes são observados ao especificar vários diretórios como argumentos na ferramenta "du", quando alguns desses diretórios são subdiretórios de outros diretórios (por exemplo, /var e /var/log). Os uutils mostram o tamanho real de cada diretório individualmente, enquanto a linha total indica o tamanho combinado de todos os diretórios especificados. O GNU Coreutils apresenta na linha total o tamanho real que os diretórios especificados ocupam no disco, mas na lista separada mostra os tamanhos de cada diretório sem considerar os subdiretórios, fazendo com que seu tamanho seja menor que o real. Além disso, os valores exibidos no GNU Coreutils e no Busybox mudam dependendo da ordem em que os diretórios são especificados.
Por exemplo, ao verificar os tamanhos dos diretórios "/var/log" e "/var", cujo tamanho real é de 1540 e 35495 bytes, o GNU Coreutils exibirá: du -smc /var/log /var 1540 /var/log 33955 /var # menor que o real 35495 total du -smc /var /var/log 35495 /var # apenas /var é mostrado e /var/log não é exibido 35495 total
Nos uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # maior que o real, mas corresponde à soma de /var e /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # maior que o real, mas corresponde à soma de /var e /var/log
No Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # menor que o real 35495 total du -smc /var /var/log 35495 /var # apenas /var é mostrado e /var/log não é exibido 35495 total
Fonte: opennet.ru
