XZ Utils 5.8 apresenta melhorias de desempenho no decodificador LZMA/LZMA2

XZ Utils 5.8 apresenta melhorias de desempenho no decodificador LZMA/LZMA2

A implementação C99 completa de código aberto do XZ Utils 5.8 do formato de arquivo .xz já está disponível para download com melhorias de desempenho.

O XZ Utils, uma implementação de código aberto do formato de arquivo .xz escrita em C99, recebeu hoje a atualização para a versão 5.8, trazendo melhorias de desempenho e novos recursos.

A principal novidade do XZ Utils 5.8 está na otimização da biblioteca de compactação liblzma em plataformas x86 de 32 e 64 bits. O tempo de descompactação foi aprimorado em 0 a 5% para sistemas compilados sem a exceção de biblioteca de tempo de execução do GCC e pode chegar a até 15% em sistemas que utilizam a biblioteca padrão musl libc C, especialmente ao lidar com arquivos altamente compactados.

Esta versão também acelera o codificador LZMA/LZMA2 em processadores PowerPC de 64 bits (tanto big-endian quanto little-endian) e em chips RISC-V de 64 bits que suportam acesso rápido a dados não alinhados. Além disso, foram adicionadas APIs de baixo nível para filtros RISC-V, ARM64 e x86 BCJ na biblioteca lzma/bcj.h, bem como suporte ao uso de instruções CRC32 na arquitetura LoongArch, tornando o cálculo de CRC32 mais eficiente.

Outra novidade é a introdução da opção --no-sync no utilitário xz, permitindo aos usuários desativar a sincronização antes da exclusão de arquivos. Além disso, os componentes xz, xzdec e lzmainfo foram atualizados para substituir caracteres não imprimíveis por pontos de interrogação ao exibir mensagens.

"Dessa forma, nomes de arquivos maliciosos não podem ser usados para enviar sequências de escape para um terminal. Essa mudança também se aplica aos nomes de arquivos exibidos pelo comando 'xz --robot --list'", explicaram os desenvolvedores.

A versão 5.8 também aprimora a segurança e confiabilidade ao compactar arquivos, introduzindo o suporte para sincronização do arquivo de saída e seu diretório via fsync() antes de excluir o arquivo de entrada. Isso é especialmente útil ao processar grandes quantidades de arquivos pequenos, embora possa impactar o desempenho.

Entre outras mudanças importantes, esta versão marca como obsoletos os aliases de script lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep e lzfgrep do LZMA Utils. Além disso, o código de CRC CLMUL para arquiteturas x86/x86-64/E2K foi reescrito para melhorar o desempenho, e o suporte para Landlock ABI 5 e 6 foi adicionado para xz e xzdec em sistemas Linux.

O XZ Utils 5.8 também traz várias melhorias no CMake, incluindo compatibilidade com CMake 3.20, ajustes no código CRC32 e filtros BCJ para ARM64 (AArch64), além de permitir que as versões antigas de assembly para x86 de 32 bits, CLMUL CRC e outras coexistam com a detecção em tempo de execução.

Por fim, esta atualização inclui novas traduções para croata, italiano, português e romeno, além de melhorias nas páginas de manual em alemão, italiano, coreano, romeno, sérvio e ucraniano.

O XZ Utils 5.8 já está disponível para download no site oficial.

Última atualização deste artigo: 25 de march de 2025