Die Version 0.8.0 der Bibliothek und des plattformübergreifenden Konsolenwerkzeugs wurde veröffentlicht. ZXC (github.com), das hochleistungsfähige Multithreading- asymmetrische Kompression verlustfrei und optimiert für Gaming-Ressourcen, Firmware und Anwendungs-Pakete.
Es wird eine um über 40 % schnellere Dekompression als LZ4 auf ARM64 bei besseren Kompressionsraten angegeben.
Das Projekt ist in C geschrieben und wird unter der BSD 3 Lizenz vertrieben.
Änderungsprotokoll:
- Das Format hat nun Version 5, was die Kompatibilität bricht:
- Ein LZ-Offset (+1) auf Format-Ebene wurde implementiert, um potenzielle Nullverschiebungsangriffsvektoren zu beseitigen.
- Die Prüfziffern der Header verwenden jetzt den Marsaglia-xorshift-Algorithmus.
- Eine neue LZ77-Hashing-Strategie und Optimierungen der Hash-Tabellenkonfiguration ermöglichen erhebliche Leistungssteigerungen auf verschiedenen Architekturen, insbesondere bei hohen Kompressionsleveln.
- Wesentliche Verbesserungen für die Kompressionslevel 3–5, die eine Geschwindigkeitssteigerung der Kompression um 33–43 % sowohl auf x86_64- als auch auf ARM64-Architekturen zeigen.
- Deutliche Verbesserungen für schnellere Kompressionslevel (1 und 2), mit einer Geschwindigkeitssteigerung von 10-18 % auf x86_64 und ~8-10 % auf ARM64.
- Überarbeitete Fehlerverarbeitung und Fehlercodes. Der Python-Wrap bietet jetzt Zugriff auf diese C-Fehlerkonstanten für verbesserte und native Fehlerberichterstattung.
- Die Größe ZXC_BLOCK_SIZE ist nicht mehr auf 1 MB beschränkt. Das ZXC-Dateiformat unterstützt jetzt offiziell Blockgrößen von bis zu 8 MB.
- Der Konsolenbefehl hat einen Modus zur Verarbeitung mehrerer Dateien hinzugefügt: Die Option -m (oder —multiple) ermöglicht die Verarbeitung mehrerer Eingabedateien mit einem Befehl. Jede Datei wird unabhängig verarbeitet, und die Namen der Ausgabedateien werden automatisch von den Eingabedateien abgeleitet (zum Beispiel wird die Datei file.txt in file.txt.xc komprimiert, und die Datei file.txt.xc wird in file.txt dekomprimiert).
- Der Konsolenbefehl hat auch einen Modus zur rekursiven Verarbeitung von Verzeichnissen hinzugefügt: Die Option -r (oder —recursive) ermöglicht die Verarbeitung aller Dateien in den angegebenen Verzeichnissen und deren Unterverzeichnissen.
- Weitere Verbesserungen (Dokumentation, Tests) und Fehlerbehebungen.
- In Version 0.8.1 wurde nur die Generierung der dynamischen Bibliothek libzxc.so.1 angepasst, um die Nutzung älterer Versionen der Bibliothek weiterhin zu ermöglichen.
Quelle: linux.org.ru
