Foi lançado o projeto uutils coreutils 0.6.0 (Rust Coreutils), que desenvolve uma alternativa ao pacote GNU Coreutils, escrito 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, que também funcione 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:
- Foi alcançado um nível de compatibilidade com o conjunto de testes de referência do GNU Coreutils de 96,28% (anteriormente 87,75%). Um total de 622 testes foi executado com sucesso, 56 a mais do que na versão anterior (566). 16 (anteriormente 55) testes falharam, e 7 (anteriormente 23) testes foram ignorados. O aumento mais significativo na compatibilidade foi observado nas utilidades sort, ls, date, cksum e tail.
- O código que utilizava a palavra-chave "unsafe" foi removido de date, sort, locale.rs e outras utilidades.
- As chamadas para a biblioteca padrão libc foram substituídas por chamadas seguras equivalentes fornecidas pelo pacote nix.
- A manipulação de erros foi aprimorada, eliminando falhas ao gravar em /dev/full.
- Na utilidade date, foi implementada a localização dos nomes dos meses e dias, levando em conta a ICU. O formato de hora e calendário foi ajustado conforme a localidade.
- Na utilidade sort, foi implementada a ordenação de números com separadores de milhar e a manipulação dos parâmetros +POS/-POS.
- Na utilidade join, foi adicionada a compatibilidade com o recurso de localidade "collation", permitindo comparações que consideram o significado dos caracteres (por exemplo, ao comparar, o acento pode ser ignorado).
- A performance das utilidades base32, base64, basenc e df foi otimizada.
- Na utilidade uniq, foi reduzido o consumo de memória ao operar sem considerar a caixa.
- Na utilidade shuf, a saída numérica foi otimizada e foi adicionada a opção "--random-seed".
- Na tsort, a carga de todos os dados de entrada na memória foi eliminada.
- Na utilidade tail, foi adicionada a flag "--debug".
- Na utilidade chmod, foram resolvidos problemas com a execução recursiva de operações e foi adicionada a opção "--preserve-root".
- Em sistemas Unix-like, a segurança ao percorrer o conteúdo de diretórios foi intensificada.
- Nas utilidades ls, id, mkdir, mkfifo e mknod, foi adicionada a compatibilidade com o mecanismo de controle de acesso obrigatório SMACK.
- No sistema de integração contínua, foi adicionada a verificação de compilação em sistemas RISC-V de 64 bits com a biblioteca musl.
- A operação no Windows foi aprimorada utilizando Cygwin.
- As funcionalidades foram expandidas, problemas foram resolvidos e opções ausentes foram adicionadas para as ferramentas arch, base64, basename, cat, chgrp, chmod, chroot, cksum, comm, cp, csplit, date, dd, df, dir, dirname, du, echo, env, expand, expr, fmt, fold, groups, hashsum, head, hostid, id, install, join, kill, ln, logname, ls, mkdir, mkfifo, mknod, mktemp, more, mv, nice, nl, nohup, nproc, numfmt, pr, printenv, printf, ptx, readlink, rm, rmdir, runcon, seq, shred, shuf, sort, split, stat, stdbuf, stty, sync, tac, tail, tee, test, timeout, touch, truncate, tsort, uname, unexpand, uniq, uptime, users, wc, yes, ucore, uucore, uudoc.
Fonte: opennet.ru
