GNU Coreutils 9.8 é lançado com suporte a SHA3, cgroups v2 e muito mais

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Descubra os novos recursos e melhorias cruciais do GNU Coreutils 9.8 para Linux.

O coração da sua linha de comando Linux acaba de receber um transplante de vitalidade. Foi anunciado o lançamento do GNU Coreutils 9.8, a mais nova versão do pacote que contém as ferramentas fundamentais como ls, cp, mv, rm e dezenas de outras que usamos todos os dias. A atualização traz uma série de novos recursos e uma longa lista de correções de bugs que tornam essas ferramentas ainda mais robustas e versáteis.

Novidades da Versão 9.8

Esta versão se destaca por introduzir funcionalidades modernas que refletem as necessidades atuais dos sistemas Linux e da computação em geral.

O utilitário cksum agora pode calcular hashes usando o moderno algoritmo SHA3, uma adição importante para a segurança e verificação de integridade de arquivos. O comando suporta as variantes SHA3-224, SHA3-256, SHA3-384 e SHA3-512, que podem ser selecionadas através da opção –length. Também foi adicionado o suporte ao argumento ‘sha2’ como uma interface mais consistente para os algoritmos SHA2 existentes.

O comando nproc, usado para verificar o número de processadores disponíveis, agora respeita as cotas de CPU configuradas via cgroups v2, tornando-o mais preciso em ambientes de contêineres e virtualização. Isso significa que em sistemas onde recursos são limitados através de cgroups — uma tecnologia amplamente usada por Docker, Kubernetes e outras plataformas de containers — o nproc retornará valores mais realistas sobre quantos processadores estão realmente disponíveis para uso.

A ferramenta fold agora é compatível com caracteres multi-byte, lidando corretamente com textos em UTF-8 e outros encodings. Isso representa um grande avanço para usuários que trabalham com textos em idiomas que utilizam caracteres especiais, emojis ou símbolos não-ASCII. A nova opção –characters (-c) também foi adicionada para quebrar texto em um número específico de caracteres, similarmente à opção –bytes em locales de byte único.

O utilitário basenc ganhou suporte à codificação Base58, popular em criptomoedas e outras aplicações que necessitam de uma representação de texto visualmente inequívoca. Base58 é um sistema de codificação que evita caracteres que podem ser confundidos visualmente, como 0 (zero), O (letra O maiúscula), l (L minúsculo) e I (i maiúsculo), tornando-se ideal para endereços de Bitcoin e outras aplicações onde a legibilidade humana é crucial.

Além disso, o comando stty agora suporta a configuração de taxas de baud arbitrárias em sistemas suportados, incluindo Hurd, Linux com glibc >= 2.42 e alguns BSDs. Em outros sistemas, o conjunto completo de taxas de baud suportadas é determinado no momento da compilação, quando possível.

Melhorias de Performance e Conformidade

Esta versão também traz importantes melhorias de performance. O utilitário factor está muito mais rápido na identificação de números primos grandes e significativamente mais eficiente em números compostos maiores que 2^128. O comando seq ganhou maior precisão com valores de início inteiros grandes.

Para usuários que trabalham com padrões, o GNU Coreutils 9.8 melhora a conformidade com POSIX.1-2024. O comando readlink agora assume comportamento verboso por padrão quando a variável de ambiente POSIXLY_CORRECT está definida, enquanto realpath ganha suporte à opção -E e tsort aceita e ignora a opção -w.

Uma funcionalidade interessante é a possibilidade de desabilitar a aceleração por hardware em comandos como cksum e wc através da variável de ambiente GLIBC_TUNABLES. Por exemplo, para desabilitar instruções AVX512 no cksum, você pode usar: export GLIBC_TUNABLES='glibc.cpu.hwcaps=-AVX512F'.

Esforço de Desenvolvimento e Correções de Bugs

Esta versão é o resultado de 348 commits de 8 desenvolvedores ao longo de 24 semanas, demonstrando o trabalho contínuo de manutenção e evolução deste projeto vital. Entre os principais contribuidores estão Paul Eggert com 179 commits, Pádraig Brady com 93 commits, e Collin Funk com 61 commits.

A versão 9.8 inclui muitas correções de bugs importantes. Por exemplo, cp, install e mv agora evitam possível corrupção de dados em sistemas glibc 2.41 e 2.42 quando copy_file_range é usado com intervalos maiores que 2GiB. O comando tail foi corrigido para não produzir linhas extras sob certas condições, e od teve correções para evitar erros de memória e manuseio incorreto de larguras enormes.

O GNU Coreutils 9.8 representa não apenas uma atualização técnica, mas um exemplo de como projetos de código aberto continuam evoluindo para atender às necessidades modernas de computação, desde containers até criptomoedas, mantendo sempre a compatibilidade e robustez que fizeram dessas ferramentas a base de praticamente todos os sistemas Unix-like do mundo.

Compartilhe este artigo