De release van versie 0.8.0 van de bibliotheek en de cross-platform console tool is afgerond. ZXC (github.com), die hoge prestaties bieden met multithreading asymmetrische compressie verliesvrij en geoptimaliseerd voor gamebronnen, firmware en applicatiepakketten.
Er wordt een 40%+ snellere decompressie aangekondigd dan LZ4 op ARM64, met betere compressieverhoudingen.
Het project is geschreven in C en wordt verspreid onder de BSD 3-licentie.
Wijzigingenlijst:
- De versie van het formaat is nu 5, wat de compatibiliteit verbreekt:
- LZ-offset (+1) is op format-niveau geïmplementeerd om potentiële aanvalsvectoren met nul-offset te elimineren.
- Checksum voor headers gebruiken nu het Marsaglia xorshift-algoritme.
- Een nieuwe LZ77-hasherstrategie en optimalisatie van hash-tabelconfiguraties bieden aanzienlijke prestatieverbeteringen op verschillende architecturen, vooral bij hoge compressieniveaus.
- Zeer significante verbeteringen voor compressieniveaus 3-5, die een toename van de compressiesnelheid van 33-43% vertonen op zowel x86_64- als ARM64-architecturen.
- Opmerkelijke verbeteringen voor snellere compressieniveaus (1 en 2), met een snelheidstoename van 10-18% op x86_64 en ~8-10% op ARM64.
- De foutverwerking en foutcodes zijn herzien. De Python-wrapper biedt nu toegang tot deze C-foutconstanten voor verbeterde en native foutrapportage.
- De grootte van ZXC_BLOCK_SIZE is niet langer beperkt tot 1 MB. Het ZXC-bestandsformaat ondersteunt nu officieel blokgroottes tot 8 MB.
- De consoletool heeft een modus voor het verwerken van meerdere bestanden toegevoegd: de optie -m (of —multiple) maakt het mogelijk om meerdere invoerbestanden in één opdracht te verwerken. Elk bestand wordt onafhankelijk verwerkt, en de namen van uitvoerbestanden worden automatisch afgeleid van de invoerbestanden (bijvoorbeeld, bestand file.txt wordt gecomprimeerd naar file.txt.xc, bestand file.txt.xc wordt uitgepakt naar file.txt).
- De consoletool heeft ook een modus voor het recursief verwerken van mappen toegevoegd: de optie -r (of —recursive) maakt het mogelijk om alle bestanden in de opgegeven mappen en hun submappen te verwerken.
- Andere verbeteringen (documentatie, testen) en foutoplossingen.
- In versie 0.8.1 is alleen de generatie van de dynamische bibliotheek libzxc.so.1 gecorrigeerd om de mogelijkheid tot gebruik van eerdere versies van de bibliotheek te behouden.
Bron: linux.org.ru
