Foi lançado o projeto uutils coreutils 0.7.0 (Rust Coreutils), que desenvolve 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 de Coreutils que seja cross-platform, capaz de funcionar em plataformas como Windows, Redox e Fuchsia.
Rust Coreutils é utilizado por padrão no lançamento do Ubuntu 25.10 e é aplicado 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. Além disso, a mesma equipe de desenvolvedores também está trabalhando em implementações em Rust dos conjuntos de utilitários util-linux, diffutils, findutils, procps e acl, bem como dos programas sed e login.
Na nova versão do Rust Coreutils:
- O nível de compatibilidade com o conjunto de testes de referência GNU Coreutils foi de 94,59% (era 96,28%). Foram realizados 629 testes com sucesso, que são 7 a mais do que na versão anterior (622). 23 (eram 16) testes falharam, enquanto 13 (eram 7) testes foram ignorados. A redução do nível de compatibilidade é explicada pela atualização do conjunto de testes para o estado de lançamento do GNU Coreutils 9.10, que adicionou 19 novos testes. Considerando o número total de testes, o Rust Coreutils passou em 7 testes a mais do que na versão anterior.
- O aumento mais significativo na compatibilidade foi observado para os utilitários date, fmt, kill, ptx, numfmt e cksum. Melhorias de compatibilidade menos significativas foram registradas nos utilitários cut, tac, tail, tr, uniq, od, chroot, stat, mktemp, pr, readlink, ln, kill, nproc, rm, env, sync, fmt, factor e wc.
- O suporte para a biblioteca Rust num-prime, utilizada para testes no utilitário factor, foi garantido.
- Implementações mais rápidas de hashes rustc-hash foram utilizadas em ls, du, tsort, shuf, mv, e foldhash em sort.
- A manipulação de caracteres ASCII foi otimizada nos utilitários unexpand e expand, permitindo uma aceleração de 14% na leitura com buffer.
- As operações de alocação de memória nos utilitários shuf, split, sort e du foram otimizadas, resultando numa aceleração de 3 a 6% para du e 4% para shuf.
- A conversão de números em strings no utilitário nl foi acelerada.
- O tamanho dos arquivos executáveis foi reduzido e o tempo de inicialização dos utilitários true e false foi acelerado.
- Em mais de 20 utilitários, incluindo echo, date, sort, expr, hostname, id, comm, pr e dircolors, foram resolvidos problemas que causavam falhas ao tentar escrever em stderr (redirecionamento para /dev/full).
- Em umask, mkdirat, mknod e outros utilitários, chamadas de libc não seguras foram substituídas por wrappers seguros do pacote crate nix.
- O funcionamento correto da opção "—preserve-root" no utilitário "rm" foi garantido ao especificar links simbólicos.
- O suporte a plataformas NetBSD, Windows e NixOS foi aprimorado. A construção para a arquitetura PowerPC foi melhorada.
- As funcionalidades foram ampliadas, problemas corrigidos e opções faltantes adicionadas para os utilitários cat, cksum, chroot, comm, cp, csplit, cut, date, dd, df, dircolors, du, echo, env, expand, expr, factor, false, fmt, fold, hostname, id, install, kill, ln, ls, mktemp, mknod, mv, nl, nproc, numfmt, od, paste, pr, printfm, ptx, readlink, rm, shuf, sort, split, stat, stdbuf, stty, sync, tac, tail, test, tr, true, tsort, unexpand, uniq, uptime, vdir, wc, whoami.
Fonte: opennet.ru
