La version 0.8.0 de la bibliothèque et de l'outil console multiplateforme a été publiée ZXC (github.com), réalisant une compression multi-thread à haute performance asymétrique sans perte, optimisée pour les ressources de jeu, les firmwares et les paquets d'applications. Le format a été conçu selon le principe « écrire une fois, lire plusieurs fois » (WORM). sans pertes et optimisé pour les ressources de jeu, les firmwares et les paquets d'applications.
Une décompression déclarée 40%+ plus rapide que LZ4 sur ARM64, avec de meilleurs taux de compression.
compression avec dictionnaire pré-entraîné et table de Huffman commune;
Liste des changements :
- La version du format est maintenant 5, compromettant la compatibilité :
- Un décalage LZ (+1) au niveau du format a été mis en œuvre pour éliminer les vecteurs d'attaque potentiels avec un décalage nul.
- Les sommes de contrôle des en-têtes utilisent maintenant l'algorithme Marsaglia xorshift.
- Une nouvelle stratégie de hachage LZ77 et l'optimisation de la configuration des tables de hachage permettent d'améliorer considérablement les performances sur différentes architectures, en particulier à des niveaux de compression élevés.
- Des améliorations significatives pour les niveaux de compression 3 à 5, montrant une augmentation de la vitesse de compression de 33 à 43 % tant sur les architectures x86_64 que sur ARM64.
- Des améliorations notables pour les niveaux de compression plus rapides (1 et 2), avec une augmentation de vitesse de 10 à 18 % sur x86_64 et ~8 à 10 % sur ARM64.
- Le traitement et les codes d'erreur ont été remaniés. Le wrapper Python donne désormais accès à ces constantes d'erreur C pour un rapport d'erreur amélioré et natif.
- La taille ZXC_BLOCK_SIZE n'est plus limitée à 1 Mo. Le format de fichier ZXC prend désormais officiellement en charge des tailles de blocs allant jusqu'à 8 Mo.
- Le mode de traitement de plusieurs fichiers a été ajouté à l'outil console : l'option -m (ou —multiple) permet de traiter plusieurs fichiers d'entrée en une seule commande. Chaque fichier est traité indépendamment, et les noms des fichiers de sortie sont automatiquement dérivés des fichiers d'entrée (par exemple, le fichier file.txt est compressé en file.txt.xc, le fichier file.txt.xc est décompressé en file.txt).
- Un mode de traitement récursif de répertoires a également été ajouté à l'outil console : l'option -r (ou —recursive) permet de traiter tous les fichiers dans les répertoires spécifiés et leurs sous-répertoires.
- D'autres améliorations (documentation, tests) et corrections de bogues.
- La version 0.8.1 ne corrige que la génération de la bibliothèque dynamique libzxc.so.1 pour maintenir la possibilité d'utiliser les versions antérieures de la bibliothèque.
Source : linux.org.ru
