ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Megjelent a 0.9.0 verzió a könyvtár és a többplatformos konzolos eszköz számára ZXC (github.com), amely nagy teljesítményű több szálon végrehajtott aszimmetrikus tömörítést veszteségmentes és optimalizált a játékos erőforrások, firmware-ek és alkalmazáscsomagok számára. A formátum a „írj egyszer, olvass sokszor” (WORM) elve szerint készült.

Ellentétben az olyan kodekekkel, mint az LZ4, a ZXC a kicsomagolás maximális átbocsátóképessége érdekében feláldozza a tömörítési sebességet.

A kicsomagolási sebesség 40%-kal magasabb, mint az LZ4 Apple Siliconon, 25%-kal magasabb a Google Axion (ARM64) esetén, és 5%-kal magasabb az x86_64-nél, mindeközben mindhárom esetben magasabb tömörítési arányt biztosít.

Ebben a kiadásban bemutatásra került egy újrahasználható kontextus API, blokkméret testreszabási lehetőségek, teljes API és ABI referenciakönyv, valamint számos biztonsági javítás, köztük a heap túlfutásos sebezhetőség kijavítása, amely a tömörítő modul fázis tesztelése során lett felfedezve.

Ez a kiadás ABI-törést tartalmaz, ezért a SOVERSION 2-re emelkedett.

A projekt C nyelven íródott, és BSD 3 licenc alatt terjesztik.

Részletek
  • Inkompatibilitást okozó változások:
    • SOVERSION 2: A könyvtár ABI verziója megemelkedett. Az SOVERSION 1 alapján lefordított bináris fájlokat újra kell fordítani.
    • Opciós szerkezetek: a zxc_compress() és zxc_decompress() funkciók mostantól zxc_compress_opts_t* és zxc_decompress_opts_t* típusú paramétereket fogadnak el a pozicionális paraméterek helyett. Az alapértelmezett viselkedéshez NULL-t kell átadni.
    • A blokk méretének kódolása: A fájl fejléc most a blokk méretét log2 [12..21] kitevőként tárolja a korábbi kakszintű kódolás helyett. A régi 64-es érték továbbra is elfogadott a visszafelé kompatibilitás érdekében.
  • Új lehetőségek:
    • Átláthatatlan tömörítési és kicsomagolási kontextusok, amelyek a heap-en kerülnek kiosztásra, eltüntetve ezzel a memóriaallokálás költségeit minden egyes hívás során; tökéletesek fájlrendszer pluginokhoz (squashfs, dwarfs) és batch feldolgozáshoz:
      • zxc_create_cctx(), zxc_free_cctx() és zxc_compress_cctx() a tömörítéshez;
      • zxc_create_dctx(), zxc_free_dctx() és zxc_decompress_dctx() a kicsomagoláshoz;
      • A belső pufferek csak akkor kerülnek újraelosztásra, ha a hívások között a block_size vagy level értéke megváltozik.
  • Testreszabható blokk méretek:
    • A blokk mérete mostantól a zxc_compress_opts_t struktúra block_size mezőjével állítható be;
    • elfogadott tartomány: 4 KB-tól 2 MB-ig (kettő hatványa);
    • alapértelmezés szerint az érték továbbra is 256 KB marad;
    • Az zxc konzolos eszközhöz új paraméter került hozzáadásra —block-size (vagy -B), ami támogatja az mértékegységek utótagjait (4K, 1M vagy 4KB, 1MB stb.).
  • Gyors közvetlen kicsomagolás:
    • amikor a célpuffer elegendően telítve van, a kicsomagolás során kihagyásra kerül az átmeneti másolás a munkapufferbe, így csökkentve a memória terhelést és csökkentve a késleltetést.
  • Biztonság és stabilitás:
    • Javították a heaped buffer overflow-t a zxc_bitpack_stream_32-ben: a tömörítési ciklus akár 4 bájtot is írhatott a kimeneti pufferen túl, ha az utolsó tömörített érték átlépte a byte határt;
    • Javították a stream ellenőrzést a kitömörítés során (a zxc_decompress.c-ben): ellenőrzés került hozzáadásra, amely biztosítja, hogy a szekvenciák stream mérete elegendő a bejelentett számú szekvenciához, megakadályozva ezzel a megengedett tartományon túl történő olvasást.
    • A blokk méretének ellenőrzése: mostantól a zxc_cctx_init() és zxc_read_file_header() funkciókban ellenőrzés történik, hogy a blokkméretek a [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] tartományban vannak és kettes hatványai;
    • C++ kompatibilitás: az összes nyilvános fejlécfájl mostantól extern "C" védő szerkezeteket tartalmaz a problémamentes C++ használathoz;
    • Tesztminta tárolása fuzzing teszteléshez: beállították a tartós tárolást a ClusterFuzzLite CI-hez.
  • kódkönyvtárra lépésével érheti el.:
    • docs/API.md: új, átfogó API és ABI útmutató, amely leírja az összes 21 exportált szimbólumot, típuskonstrukciókat, láthatósági stratégiát, ABI verziókezelést, szálbiztonsági garanciákat és hibakezelési mintákat;
    • Frissítették a man oldalakat és a README fájlt telepítési utasításokkal és csomagok állapotával (vcpkg, Conan, Homebrew);
    • Frissített fájl docs/FORMAT.md a blokk méretének kódolásáról szóló leírással.
  • Frissítették a Python, Rust és Node.js wrapper-eket.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster