Została wydana wersja 0.8.0 biblioteki i narzędzia konsolowego działającego na wielu platformach. ZXC (github.com), wdrażanie wydajnego wielowątkowego kompresja asymetryczna Bezstratny i zoptymalizowany pod kątem zasobów gier, oprogramowania sprzętowego i pakietów aplikacji.
Twierdzi się, że jest o ponad 40% szybszy niż LZ4 na ARM64 i ma lepszy współczynnik kompresji.
Projekt został napisany w języku C i rozpowszechniany na licencji BSD 3.
Lista zmian:
- Obecna wersja formatu to 5, co psuje kompatybilność:
- Wprowadzono przesunięcie LZ(+1) na poziomie formatu w celu wyeliminowania potencjalnych wektorów ataku z zerowym przesunięciem.
- Sumy kontrolne nagłówków korzystają teraz z algorytmu Marsaglia xorshift.
- Nowa strategia haszująca LZ77 i optymalizacja konfiguracji tablicy haszującej zapewniają znaczną poprawę wydajności w różnych architekturach, szczególnie przy wysokich poziomach kompresji.
- Znaczna poprawa w przypadku poziomów kompresji 3-5, wykazująca 33-43% wzrost szybkości kompresji zarówno na architekturach x86_64, jak i ARM64.
- Zauważalna poprawa w przypadku szybszych poziomów kompresji (1 i 2), ze wzrostem prędkości o 10–18% w przypadku architektury x86_64 i ~8–10% w przypadku architektury ARM64.
- Przeprojektowano obsługę błędów i kody. Wrapper Pythona zapewnia teraz dostęp do stałych błędów C, co pozwala na ulepszone i natywne raportowanie błędów.
- Rozmiar ZXC_BLOCK_SIZE nie jest już ograniczony do 1 MB. Format pliku ZXC oficjalnie obsługuje teraz rozmiary bloków do 8 MB.
- Do narzędzia konsoli dodano tryb przetwarzania wielu plików: opcja -m (lub --multiple) umożliwia przetwarzanie wielu plików wejściowych za pomocą jednego polecenia. Każdy plik jest przetwarzany niezależnie, a nazwy plików wyjściowych są automatycznie uzyskiwane z plików wejściowych (na przykład plik file.txt jest kompresowany do pliku file.txt.xc, a plik file.txt.xc jest dekompresowany do pliku file.txt).
- Narzędzie konsoli ma również tryb rekurencyjnego przetwarzania katalogów: opcja -r (lub --recursive) pozwala na przetwarzanie wszystkich plików w określonych katalogach i ich podkatalogach.
- Inne usprawnienia (dokumentacja, testowanie) i poprawki błędów.
- W wersji 0.8.1 naprawiono jedynie generowanie biblioteki dynamicznej libzxc.so.1, aby zachować możliwość korzystania z poprzednich wersji biblioteki.
Źródło: linux.org.ru
