O pitch
O uutils/coreutils é uma tentativa, escrita em Rust, de alcançar paridade funcional com o GNU Coreutils oferecendo uma alternativa com segurança de memória. Embora agora seja o padrão para 80 utilitários na versão atual do Ubuntu 26.04 LTS, ele continua sendo uma implementação parcial por causa de preocupações persistentes com a lógica (computingforgeeks.com, abril de 2026).
Por dentro
A paridade funcional está hoje em 94,74%, com 630 de 665 testes do GNU passando neste mês (ostechnix.com, abril de 2026). Os benchmarks de desempenho mostram vantagens consideráveis em cargas específicas: o uu-sort superou a implementação GNU legada em quase 30x no processamento de logs em grande escala em testes recentes (makeuseof.com, fevereiro de 2026).
No entanto, uma auditoria de segurança da Zellic identificou 113 problemas no total, incluindo 44 CVEs ligadas a erros de lógica e condições de corrida TOCTOU (Time-of-Check to Time-of-Use) (Ubuntu Discourse, abril de 2026).
A Canonical excluiu explicitamente cp, mv e rm da migração padrão para o uutils. Esses comandos críticos continuam a cargo do GNU para evitar riscos de destruição de dados associados a 8 condições de corrida não resolvidas que alteram o sistema de arquivos (Ubuntu Foundation, abril de 2026).
Problemas de integridade de dados persistem por causa da aplicação rígida do UTF-8. Comandos como comm e ln podem corromper silenciosamente nomes de arquivo armazenados como bytes brutos em vez de UTF-8 válido, algo que o GNU trata corretamente (Corrode.dev, abril de 2026).
A árvore de dependências também preocupa os arquitetos de backend. Enquanto o GNU coreutils depende quase exclusivamente da glibc, o uutils puxa cerca de 50 crates externos, o que amplia a superfície potencial de ataque à cadeia de suprimentos (Zellic Audit Report, 2026).
Ainda não sabemos quando a API openat será estabilizada na biblioteca padrão do Rust.
Nossa opinião
Você ainda não deveria trocar os utilitários centrais de sistema de arquivos pelo uutils nos servidores de produção. A segurança de memória do Rust é um ganho líquido, mas não corrige erros de lógica fundamentais nem condições de corrida em rm e mv que levam à perda de dados. Use a implementação em Rust em pipes de alto throughput, onde o uu-sort oferece uma vantagem clara de desempenho, mas mantenha os comandos que continuam no GNU para tudo o que realmente escreve no disco. No fim, “reescrever em Rust” é uma estratégia, não uma cura para quarenta anos de lógica de casos extremos.