Die Version 0.8.0 der Bibliothek und des plattformübergreifenden Konsolenwerkzeugs wurde veröffentlicht ZXC (github.com), die hochleistungsfähige Mehrkern- asymmetrische Kompression verlustfrei und optimiert für Spielressourcen, Firmware und Anwendungs-Pakete.
Es wird eine um 40%+ schnellere Dekompression als LZ4 auf ARM64 deklariert, mit besseren Kompressionsraten.
Das Projekt ist in C geschrieben und wird unter der BSD 3-Lizenz verteilt.
Änderungsprotokoll:
- Das Formatversion ist jetzt 5, was die Kompatibilität bricht:
- Eine LZ-Versatz (+1) auf der Format-Ebene wurde implementiert, um potenzielle Angriffsvektoren mit Nullversatz zu beseitigen.
- Die Prüfziffern der Header verwenden jetzt den Algorithmus Marsaglia xorshift.
- Eine neue Hashing-Strategie für LZ77 und die Optimierung der Hash-Tabellen-Konfiguration bieten eine signifikante Leistungssteigerung auf verschiedenen Architekturen, insbesondere bei hohen Kompressionsraten.
- Bedeutende Verbesserungen für die Kompressionsstufen 3–5, die eine Erhöhung der Kompressierungsgeschwindigkeit um 33–43 % sowohl auf x86_64- als auch auf ARM64-Architekturen zeigen.
- Erhebliche Verbesserungen für schnellere Kompressionsstufen (1 und 2) mit einer Geschwindigkeitssteigerung von 10-18 % auf x86_64 und ~8-10 % auf ARM64.
- Die Verarbeitung und die Fehlercodes wurden überarbeitet. Der Python-Wrap bietet jetzt Zugriff auf diese C-Fehlerkonstanten für verbesserte und native Fehlerberichterstattung.
- Die Größe von 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 Konsolenwerkzeug hat einen Mehrdatei-Verarbeitungsmodus erhalten: Die Option -m (oder —multiple) ermöglicht die Verarbeitung mehrerer Eingabedateien mit einem einzigen Befehl. Jede Datei wird unabhängig verarbeitet, und die Ausgabedateinamen werden automatisch von den Eingabedateien abgeleitet (zum Beispiel wird die Datei file.txt in file.txt.xc komprimiert, die Datei file.txt.xc wird in file.txt dekomprimiert).
- Ein rekursiver Verarbeitungsmodus für Verzeichnisse wurde ebenfalls zum Konsolenwerkzeug 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 behoben, um die Verwendung früherer Bibliotheksversionen zu ermöglichen.
Quelle: linux.org.ru
