ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Byl vydán 0.9.0 knihovny a multiplatformní konzolové utility ZXC (github.com), která implementuje vysoce výkonné vícestupňové asymetrické komprese bez ztrát a optimalizované pro herní zdroje, firmwary a balíčky aplikací. Formát byl navržen na principu „napsat jednou, číst opakovaně“ (WORM).

Na rozdíl od kodeků jako LZ4, ZXC obětuje rychlost komprese pro maximální propustnost při dekompresi.

Deklarovaná rychlost dekomprese je o více než 40 % vyšší než u LZ4 na Apple Silicon, o více než 25 % vyšší na Google Axion (ARM64) a o více než 5 % vyšší na x86_64, přičemž ve všech případech je zajištěna vyšší úroveň komprese.

Tato verze představuje API pro opakovaně použitelné kontexty, možnost nastavit velikost bloků, kompletní dokumentaci k API a ABI, a také několik opravy souvisejících se zabezpečením, včetně odstranění zranitelnosti přetečení zásobníku nalezené během fuzzování kompresního modulu.

Tento release obsahuje změny, které porušují ABI, proto bylo SOVERSION zvýšeno na 2.

Projekt je napsán v jazyce C a je distribuován pod licencí BSD 3.

Detaily
  • Změny, které vedou k nekompatibilitě:
    • SOVERSION 2: Verze ABI knihovny byla zvýšena. Binární soubory zkompilované pro SOVERSION 1 je nutné překompilovat.
    • Struktury voleb: funkce zxc_compress() a zxc_decompress() nyní přijímají zxc_compress_opts_t* a zxc_decompress_opts_t* namísto pozičních parametrů. Pro výchozí chování předávejte NULL.
    • Kódování velikosti bloku: Header souboru nyní ukládá velikost bloku jako exponent log2 [12..21] místo předchozího kódování s dvěma měřítky. Stará hodnota 64 je stále přijímána pro zpětnou kompatibilitu.
  • Nové možnosti:
    • Nepřehledné kontexty komprese a dekomprese alokované v haldě, které odstraňují náklady na alokaci paměti při každém vyvolání; ideální pro pluginy souborového systému (squashfs, dwarfs) a dávkového zpracování:
      • zxc_create_cctx(), zxc_free_cctx() a zxc_compress_cctx() pro kompresi;
      • zxc_create_dctx(), zxc_free_dctx() a zxc_decompress_dctx() pro dekompresi;
      • interní buffery se překreslují pouze v případě, že se mezi voláními změní hodnota block_size nebo level.
  • Nastavitelné velikosti bloků:
    • velikost bloku lze nyní nastavit pomocí pole block_size ve struktuře zxc_compress_opts_t;
    • povolený rozsah: od 4 KB do 2 MB (mocnina dvou);
    • výchozí hodnota zůstává 256 KB;
    • do konzolové utility zxc byl přidán nový parametr —block-size (nebo -B) s podporou suffixů jednotek (4K, 1M nebo 4KB, 1MB atd.).
  • Rychlá přímá dekomprese:
    • když je cílový buffer dostatečně zaplněn, během dekomprese se vynechá mezikopírování do pracovního bufferu, což snižuje zátěž paměti a zkracuje zpoždění.
  • Bezpečnost a stabilita:
    • Opraveno přetečení vyrovnávací paměti v zxc_bitpack_stream_32: cyklus balení mohl zapsat až 4 bajty za hranice výstupního vyrovnávací paměti, pokud poslední zabalená hodnota překročila hranici bajtu;
    • Opraveno ověřování proudu při dekompresi (v zxc_decompress.c): přidáno ověření, které zaručuje, že velikost proudu sekvencí je dostatečná pro deklarovaný počet sekvencí, čímž se zabraňuje čtení za povoleným rozsahem.
    • Ověření velikosti bloku: nyní se v funkcích zxc_cctx_init() a zxc_read_file_header() provádí ověření, že velikosti bloků jsou v rozsahu [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] a jsou mocninami dvou;
    • Kompatibilita s C++: všechny veřejné hlavičkové soubory nyní obsahují ochranné konstrukce extern "C" pro bezproblémové použití v C++;
    • Uložení těla testů pro fuzzing testování: nastavena trvalá úložiště těla pro ClusterFuzzLite CI.
  • Dokumentace:
    • docs/API.md: nový komplexní průvodce po API a ABI, který popisuje všech 21 exportovaných symbolů, definice typů, strategii viditelnosti, verzování ABI, záruky vláknové bezpečnosti a šablony pro zpracování chyb;
    • Aktualizovány manuály a soubor README s pokyny k instalaci a informacemi o stavu balíčků (vcpkg, Conan, Homebrew);
    • Aktualizován soubor docs/FORMAT.md s popisem kódování velikosti bloku na základě exponentu.
  • Aktualizovány obaly pro Python, Rust a Node.js.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster