Foi lançado a versão 0.8.0 da biblioteca e da ferramenta de console multiplataforma. ZXC (github.com), implementando compressão multithread de alto desempenho assimétrica sem perdas e otimizado para recursos de jogos, firmwares e pacotes de aplicativos.
Declarada uma descompressão 40%+ mais rápida em comparação ao LZ4 em ARM64, com melhores taxas de compressão.
O projeto é escrito na linguagem C e é distribuído sob a licença BSD 3.
Lista de mudanças:
- A versão do formato agora é 5, "quebrando" a compatibilidade:
- Implementado um deslocamento LZ (+1) no nível do formato para eliminar potenciais vetores de ataque com deslocamento zero.
- As somas de verificação dos cabeçalhos agora utilizam o algoritmo Marsaglia xorshift.
- Uma nova estratégia de hash LZ77 e a otimização da configuração das tabelas hash proporcionam um aumento significativo no desempenho em várias arquiteturas, especialmente em altos níveis de compressão.
- Melhorias significativas para níveis de compressão 3-5, demonstrando um aumento de velocidade de compressão de 33-43% tanto em arquiteturas x86_64 quanto ARM64.
- Melhorias notáveis para níveis de compressão mais rápidos (1 e 2), com um aumento de velocidade de 10-18% em x86_64 e ~8-10% em ARM64.
- O tratamento e os códigos de erro foram reestruturados. O wrapper em Python agora fornece acesso a essas constantes de erro C para garantir relatórios de erro aprimorados e nativos.
- O tamanho ZXC_BLOCK_SIZE não é mais limitado a 1 MB. O formato de arquivo ZXC agora oficialmente suporta tamanhos de bloco de até 8 MB.
- Um modo de processamento de múltiplos arquivos foi adicionado à ferramenta de console: a opção -m (ou —multiple) permite processar vários arquivos de entrada em um único comando. Cada arquivo é processado de forma independente e os nomes dos arquivos de saída são gerados automaticamente a partir dos de entrada (por exemplo, o arquivo file.txt é comprimido em file.txt.xc, o arquivo file.txt.xc é descomprimido em file.txt).
- Um modo de processamento recursivo de diretórios também foi adicionado à ferramenta de console: a opção -r (ou —recursive) permite processar todos os arquivos nas diretórias especificadas e em suas subdiretórias.
- Outras melhorias (documentação, testes) e correções de erros.
- Na versão 0.8.1, apenas a geração da biblioteca dinâmica libzxc.so.1 foi corrigida para manter a compatibilidade com versões anteriores da biblioteca.
Fonte: linux.org.ru
