ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Versioni 0.9.0 i bibliotekës dhe i programit të konsolës ndërplatformë është publikuar. ZXC (github.com), duke zbatuar shumëfiletë me performancë të lartë kompresim asimetrik Pa humbje dhe i optimizuar për asete lojërash, firmware dhe paketa aplikacionesh. Formati është projektuar duke përdorur parimin "shkruaj një herë, lexo shumë" (WORM).

Ndryshe nga kodekët si LZ4, ZXC sakrifikon shpejtësinë e kompresimit për rendiment maksimal gjatë dekompresimit.

Shpejtësia e dekompresimit është deklaruar të jetë mbi 40% më e lartë se LZ4 në Apple Silicon, mbi 25% më e lartë në Google Axion (ARM64) dhe mbi 5% më e lartë në x86_64, ndërsa në të gjitha rastet ofrohet një raport më i lartë kompresimi.

Ky version prezanton një API konteksti të ripërdorshëm, mundësinë për të personalizuar madhësitë e blloqeve, një udhëzues të plotë referimi për API dhe ABI, si dhe disa rregullime që lidhen me sigurinë, duke përfshirë një rregullim për një dobësi të mbingarkesës së buffer-it të bazuar në heap të zbuluar gjatë fuzzimit të modulit të kompresimit.

Ky version përmban ndryshime që prishin ABI-n, kështu që SOVERSION është rritur në 2.

Projekti është shkruar në C dhe shpërndahet sipas licencës BSD 3.

Detalet
  • Ndryshimet që çojnë në papajtueshmëri:
    • SOVERSION 2: Versioni ABI i bibliotekës është rritur. Skedarët binare të kompiluar për SOVERSION 1 duhet të rikompilohen.
    • Strukturat e opsioneve: Funksionet zxc_compress() dhe zxc_decompress() tani pranojnë parametrat zxc_compress_opts_t* dhe zxc_decompress_opts_t* në vend të atyre pozicionale. Për sjelljen e parazgjedhur, kaloni NULL.
    • Kodimi i madhësisë së bllokut: Titulli i skedarit tani e ruan madhësinë e bllokut si një eksponent log2 [12..21] në vend të kodimit të mëparshëm me dy shkallë. Vlera e vjetër prej 64 pranohet ende për pajtueshmëri të prapambetur.
  • Karakteristika të reja:
    • Kontekste të opake të kompresimit dhe dekompresimit të alokuara në grumbull që eliminojnë mbingarkesën e alokimit të memories në secilën thirrje; ideale për shtojcat e sistemit të skedarëve (squashfs, dwarfs) dhe përpunimin në grup:
      • zxc_create_cctx(), zxc_free_cctx() dhe zxc_compress_cctx() për kompresim;
      • zxc_create_dctx(), zxc_free_dctx() dhe zxc_decompress_dctx() për dekompresion;
      • Buferat e brendshëm rialokohen vetëm nëse vlera e block_size ose level ndryshon midis thirrjeve.
  • Madhësi të personalizueshme të blloqeve:
    • Madhësia e bllokut tani mund të konfigurohet duke përdorur fushën block_size në strukturën zxc_compress_opts_t;
    • Diapazoni i pranueshëm: 4 KB deri në 2 MB (fuqia e dyshit);
    • si parazgjedhje vlera mbetet 256 KB;
    • Një parametër i ri --block-size (ose -B) është shtuar në programin e konsolës zxc, duke mbështetur prapashtesat e njësive (4K, 1M ose 4KB, 1MB, etj.).
  • Dekompresim i shpejtë i drejtpërdrejtë:
    • Kur buferi i destinacionit është mjaftueshëm i mbushur, dekompresimi anashkalon kopjen e ndërmjetme në buferin e punës, gjë që zvogëlon ngarkesën e memories dhe shkurton vonesën.
  • Siguria dhe stabiliteti:
    • U rregullua tejmbushja e bufferit të heap-it në zxc_bitpack_stream_32: cikli i paketimit mund të shkruante deri në 4 bajt përtej fundit të buffer-it të daljes nëse vlera e fundit e paketuar kalonte një kufi bajtesh;
    • U rregullua kontrolli i rrjedhës gjatë dekompresimit (në zxc_decompress.c): U shtua një kontroll për të siguruar që madhësia e rrjedhës së sekuencës është e mjaftueshme për numrin e deklaruar të sekuencave, duke parandaluar leximin jashtë diapazonit të lejuar.
    • Kontroll i madhësisë së bllokut: zxc_cctx_init() dhe zxc_read_file_header() tani kontrollojnë që madhësitë e blloqeve janë në diapazonin [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] dhe që ato janë fuqi të dyshit;
    • Pajtueshmëria me C++: Të gjitha skedarët publikë të kokës tani përmbajnë konstrukte mbrojtëse të jashtme "C" për përdorim të përsosur në C++;
    • Testimi i ruajtjes së korpusit për testimin fuzz: ruajtja persistente e korpusit është konfiguruar për ClusterFuzzLite CI.
  • Records:
    • docs/API.mdNjë referencë e re gjithëpërfshirëse për API dhe ABI që përshkruan të 21 simbolet e eksportuara, përkufizimet e tipit, strategjinë e dukshmërisë, versionimin e ABI-t, garancitë e sigurisë së fijeve dhe modelet e trajtimit të gabimeve;
    • skedari man dhe README i përditësuar me udhëzime instalimi dhe informacion në lidhje me statusin e paketave (vcpkg, Conan, Homebrew);
    • skedari u përditësua dokumente/FORMAT.md me një përshkrim të kodimit të madhësisë së bllokut të bazuar në eksponent.
  • Mbështjellësit për Python, Rust dhe Node.js janë përditësuar.

Burimi: linux.org.ru

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster