Lançamento do uutils 0.11, uma alternativa GNU Coreutils em Rust

Foi lançado o projeto uutils coreutils 0.11.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 do Coreutils que seja multiplataforma, capaz de operar em sistemas Windows, Redox e Fuchsia.

Rust Coreutils é utilizado por padrão na versão Ubuntu 25.10 e parcialmente na Ubuntu 26.04. Rust Coreutils também é aplicado nas distribuições AerynOS (Serpent OS) e Apertis (desenvolvido pela Collabora). Ao contrário do GNU Coreutils, a implementação em Rust é licenciada sob uma licença permissiva MIT, em vez de uma licença copyleft GPL. Além disso, a mesma equipe de desenvolvedores está criando versões escritas em Rust para os conjuntos de utilitários util-linux, diffutils, findutils, procps e acl, assim como os programas sed e login.

Na nova versão do Rust Coreutils:

  • O nível de compatibilidade com o conjunto padrão de testes do GNU Coreutils foi de 95,33% (anteriormente 94,44%). Foram realizados com sucesso 653 testes, o que é 8 a mais do que na versão anterior (645). 22 testes falharam (antes eram 29), e 15 testes foram ignorados (mantido o mesmo número).
  • Um novo mecanismo para diagnosticar problemas foi integrado, baseado na biblioteca ariadne, e fornece relatórios visuais de erros ao executar utilitários no terminal, destacando os argumentos da linha de comando que causaram o problema. A visualização de erros foi implementada nos utilitários chmod, mkdir, mkfifo, mknod, install, tr, expr, sort, numfmt, cut, env, head, tail, truncate, split, shred, stdbuf, od, seq, dd, stat, join, csplit, ls, df e du. Para desabilitar os relatórios de diagnóstico, foi sugerida a variável de ambiente UUTILS_DIAG.
  • Durante a construção das versões, foram ativadas otimizações baseadas nos resultados da profilação de código (PGO - Profile-guided optimization), permitindo gerar código mais otimizado com base na análise das características de execução do programa. Os desenvolvedores estimam que o aumento de desempenho em algumas operações pode chegar a 31%.
  • Foi realizada a otimização de desempenho dos utilitários cp (+32,93%), join (2,5 vezes mais rápido do que GNU, por meio da desativação de comparações desnecessárias de localidade), od, ptx (+4%), nl, tail, expand, unexpand, numfmt e sort. Situações onde a execução de operações foi notavelmente mais lenta do que no GNU Coreutils passaram a ser consideradas como erros.
  • Foram resolvidas discrepâncias individuais no comportamento dos utilitários pr, numfmt, join, id, mkdir, fold, sort, stat, od e date em relação ao GNU Coreutils.
  • Implementadas opções específicas do GNU Coreutils: «uname -A», «uname —all-labeled», «cut -F», «cut —whitespace-delimited», «pr —columns», «pr —join-lines», «pr -f».
  • Nas utilidades mv, cp, rm, chmod e stdbuf, foram realizadas melhorias de segurança para prevenir vulnerabilidades causadas por condições de corrida, permitindo a alteração de dados entre a verificação de validade e a execução da operação, como trocar um arquivo por um link simbólico entre a conclusão da verificação e o início da operação. No contexto do uso das utilidades cp, chmod e mv em scripts de sistema executados com privilégios de root, tais vulnerabilidades permitem copiar ou sobrescrever arquivos arbitrários.
  • Realizadas correções para evitar falhas nas utilidades split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who.
  • Foram implementadas versões das utilidades kill e uptime para Windows.
  • O uso dos pacotes byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (recentemente comprometido), exacl e dns-lookup foi descontinuado, em favor das funções das bibliotecas std, rustix e windows-sys.
  • Adicionada suporte a propriedades de localidade «collation» nas utilidades ls e comm, permitindo comparações que consideram o significado dos caracteres (por exemplo, ao comparar, o acento pode ser ignorado).
  • Aprimorada a manipulação de caracteres multibyte nas utilidades nl e cut.

Adicionalmente, a Canonical publicou duas imagens experimentais de contêineres com ambiente para desenvolvimento de programas em Rust, de acordo com a especificação Dev Container. A primeira imagem inclui Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (um interpretador para detectar comportamento indefinido), cargo-auditable (auditoria de compilações), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfine, Bacon, xh e curl. A segunda imagem, além disso, contém pacotes para desenvolvimento no Ubuntu: git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster