Wydanie biblioteki i wieloplatformowego narzędzia konsolowego w wersji 0.8.0 ZXC (github.com), realizujących wysokowydajne przetwarzanie wielowątkowe asymetryczne kompresowanie bez strat i zoptymalizowane do obsługi zasobów gier, firmware'ów oraz pakietów aplikacji.
Ogłoszono, że rozpakowanie jest o 40% szybsze niż LZ4 na ARM64, z lepszymi współczynnikami kompresji.
Projekt napisany w języku C i dystrybuowany na licencji BSD 3.
Lista zmian:
- Wersja formatu to teraz 5, co „łamie” kompatybilność:
- Wprowadzono przesunięcie LZ (+1) na poziomie formatu, aby wyeliminować potencjalne wektory ataku z zerowym przesunięciem.
- Sumy kontrolne nagłówków teraz korzystają z algorytmu Marsaglia xorshift.
- Nowa strategia hashowania LZ77 oraz optymalizacja konfiguracji tabeli haszującej zapewniają znaczący wzrost wydajności na różnych architekturach, szczególnie przy wysokim poziomie kompresji.
- Znaczące ulepszenia dla poziomów kompresji 3–5, z przyspieszeniem kompresji o 33–43 % zarówno na architekturach x86_64, jak i ARM64.
- Wyraźne ulepszenia dla szybszych poziomów kompresji (1 i 2), z przyspieszeniem rzędu 10-18% na x86_64 i ~8-10% na ARM64.
- Przeprojektowano obsługę i kody błędów. Wrapper w Pythonie teraz udostępnia te stałe błędów C, aby zapewnić lepsze i natywne raportowanie błędów.
- Rozmiar ZXC_BLOCK_SIZE nie jest już ograniczany do 1 MB. Format pliku ZXC teraz oficjalnie obsługuje rozmiary bloków do 8 MB.
- Dodano tryb przetwarzania wielu plików do narzędzia konsolowego: opcja -m (lub —multiple) pozwala na przetwarzanie kilku plików wejściowych jednym poleceniem. Każdy plik jest przetwarzany niezależnie, a nazwy plików wyjściowych są automatycznie generowane na podstawie plików wejściowych (na przykład plik file.txt jest kompresowany do file.txt.xc, a plik file.txt.xc jest rozpakowywany do file.txt).
- Do narzędzia konsolowego dodano również tryb rekurencyjnego przetwarzania katalogów: opcja -r (lub —recursive) pozwala na przetwarzanie wszystkich plików w wskazanych katalogach i ich podkatalogach.
- Inne ulepszenia (dokumentacja, testowanie) oraz poprawki błędów.
- W wersji 0.8.1 poprawiono tylko generowanie dynamicznej biblioteki libzxc.so.1, aby zachować możliwość korzystania ze starszych wersji biblioteki.
Źródło: linux.org.ru
