ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

ËshtĂ« publikuar versioni 0.9.0 i bibliotekĂ«s dhe i mjetit konsol ndĂ«rplatformĂ« ZXC (github.com), qĂ« ofrojnĂ« kompresim asimetrik pa humbje me performancĂ« tĂ« lartĂ« dhe shumĂ«fijĂ«sh, i optimizuar pĂ«r asetet e lojĂ«rave, firmware-et dhe paketat e aplikacioneve. Formati Ă«shtĂ« zhvilluar sipas parimit «shkruaj njĂ« herĂ«, lexo shumĂ« herë» (WORM).

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

Deklarohet se shpejtësia e dekompresimit është mbi 40% më e lartë se ajo e LZ4 në Apple Silicon, mbi 25% më e lartë në Google Axion (ARM64) dhe mbi 5% më e lartë në x86_64, duke siguruar njëkohësisht raport më të mirë kompresimi në të gjitha rastet.

Ky version sjell një API me kontekst të ripërdorshëm, mundësi për konfigurimin e madhësisë së bllokut, dokumentacion të plotë referues për API dhe ABI, si dhe disa rregullime të lidhura me sigurinë, përfshirë eliminimin e një dobësie të tejmbushjes së buffer-it në heap, të zbuluar gjatë fuzzing të modulit të kompresimit.

Ky publikim përmban ndryshime që thyejnë ABI, prandaj SOVERSION është rritur në 2.

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

Detajet
  • Ndryshime qĂ« sjellin papajtueshmĂ«ri:
    • SOVERSION 2: Versioni ABI i bibliotekĂ«s Ă«shtĂ« rritur. SkedarĂ«t binarĂ« tĂ« kompiluar pĂ«r SOVERSION 1 duhet tĂ« rikompilohen.
    • Strukturat e opsioneve: funksionet zxc_compress() dhe zxc_decompress() tani pranojnĂ« zxc_compress_opts_t* dhe zxc_decompress_opts_t* nĂ« vend tĂ« parametrave pozicionalĂ«. PĂ«r sjelljen e parazgjedhur, kaloni NULL.
    • Kodimi i madhĂ«sisĂ« sĂ« bllokut: Header-i i skedarit tani ruan madhĂ«sinĂ« e bllokut si eksponent log2 [12..21] nĂ« vend tĂ« kodimit tĂ« mĂ«parshĂ«m me dy shkallĂ«. Vlera e vjetĂ«r 64 pranohet ende pĂ«r pĂ«rputhshmĂ«ri prapa.
  • VeçoritĂ« e reja:
    • Kontekste tĂ« errĂ«ta tĂ« kompresimit dhe dekompresimit, tĂ« alokuara nĂ« heap, qĂ« eliminojnĂ« overhead-in e alokimit tĂ« memories nĂ« çdo thirrje; ideale pĂ«r plugin-e tĂ« sistemit tĂ« skedarĂ«ve (squashfs, dwarfs) dhe pĂ«rpunim 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 dekompresim;
      • buffer-at e brendshĂ«m rialokohen vetĂ«m nĂ«se vlera e block_size ose level ndryshon midis thirrjeve.
  • MadhĂ«si tĂ« konfigurueshme tĂ« bllokut:
    • madhĂ«sia e bllokut tani mund tĂ« konfigurohet pĂ«rmes fushĂ«s block_size nĂ« strukturĂ«n zxc_compress_opts_t;
    • diapazoni i lejuar: nga 4 KB deri nĂ« 2 MB (fuqi e dyshit);
    • si parazgjedhje, vlera mbetet 256 KB;
    • nĂ« programin e konsolĂ«s zxc Ă«shtĂ« shtuar parametri i ri —block-size (ose -B) me mbĂ«shtetje pĂ«r prapashtesat e njĂ«sive matĂ«se (4K, 1M ose 4KB, 1MB etj.).
  • Dekompresim i shpejtĂ« i drejtpĂ«rdrejtĂ«:
    • kur buferi i destinacionit Ă«shtĂ« mbushur mjaftueshĂ«m, gjatĂ« shpaketimit anashkalohet kopjimi i ndĂ«rmjetĂ«m nĂ« buferin e punĂ«s, gjĂ« qĂ« ul ngarkesĂ«n nĂ« memorie dhe shkurton vonesĂ«n.
  • Siguri dhe stabilitet:
    • Ă«shtĂ« korrigjuar mbingarkesa e buferit tĂ« heap-it nĂ« zxc_bitpack_stream_32: cikli i paketimit mund tĂ« shkruante deri nĂ« 4 bajte pĂ«rtej buferit tĂ« daljes nĂ«se vlera e fundit e paketuar kalonte kufirin e bajtit;
    • Ă«shtĂ« korrigjuar kontrolli i stream-it gjatĂ« shpaketimit (nĂ« zxc_decompress.c): Ă«shtĂ« shtuar njĂ« verifikim qĂ« garanton se madhĂ«sia e stream-it tĂ« sekuencave Ă«shtĂ« e mjaftueshme pĂ«r numrin e deklaruar tĂ« sekuencave, duke parandaluar leximin jashtĂ« diapazonit tĂ« lejuar.
    • kontrolli i madhĂ«sisĂ« sĂ« bllokut: tani nĂ« funksionet zxc_cctx_init() dhe zxc_read_file_header() verifikohet qĂ« madhĂ«sitĂ« e blloqeve tĂ« jenĂ« brenda diapazonit [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] dhe tĂ« jenĂ« fuqi e dyshit;
    • pĂ«rputhshmĂ«ri me C++: tĂ« gjithĂ« skedarĂ«t publikĂ« header tani pĂ«rmbajnĂ« konstruktet mbrojtĂ«se extern "C" pĂ«r pĂ«rdorim pa probleme nĂ« C++;
    • ruajtja e korpusit tĂ« testeve pĂ«r fuzz testing: Ă«shtĂ« konfiguruar ruajtje e pĂ«rhershme e korpusit pĂ«r ClusterFuzzLite CI.
  • Dokumentacioni:
    • docs/API.md: udhĂ«zues i ri i plotĂ« pĂ«r API dhe ABI, ku pĂ«rshkruhen tĂ« gjitha 21 simbolet e eksportuara, pĂ«rkufizimet e tipeve, strategjia e dukshmĂ«risĂ«, versionimi i ABI, garancitĂ« e thread-safety dhe modelet e trajtimit tĂ« gabimeve;
    • janĂ« pĂ«rditĂ«suar man dhe skedari README me udhĂ«zime instalimi dhe informacion mbi statusin e paketave (vcpkg, Conan, Homebrew);
    • Ă«shtĂ« pĂ«rditĂ«suar skedari docs/FORMAT.md me pĂ«rshkrimin e kodimit tĂ« madhĂ«sisĂ« sĂ« bllokut bazuar nĂ« eksponent.
  • JanĂ« pĂ«rditĂ«suar wrapper-at pĂ«r Python, Rust dhe Node.js.

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster