ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Ka bëhet lansimi i versionit 0.9.0 të bibliotekës dhe utilitarit konsolë shumëplatformësh. ZXC (github.com), duke implementuar një shumëprerje me performancë të lartë kompresim asimetrik pa humbje dhe i optimizuar për burimet e lojërave, firmware dhe paketat e aplikacioneve. Formati është zhvilluar mbi parimin 'shkruaj një herë, lexoj shumë herë' (WORM).

Në krahasim me kodekët si LZ4, ZXC sakrifikon shpejtësinë e kompresimit për maksimalizimin e kapacitetit gjatë shpërbërjes.

Shpejtësia e shkarkimit deklarohet 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ërkohë që në të gjitha rastet ofrohet një raport më i lartë kompresimi.

Në këtë version është prezantuar një API për kontekstin e përsëritur, mundësia për të personalizuar madhësinë e blloqeve, një manual i plotë referencë për API dhe ABI, si dhe disa rregullime të lidhura me sigurinë, përfshirë eliminimin e një vulnerabiliteti të mbushjes së tamponit në heap, i zbuluar gjatë fazzimit të modulit të kompresimit.

Ky lëshim përmban ndryshime që shkelin ABI, prandaj SOVERSION është rritur në 2.

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

Detajet
  • Ndryshime qĂ« çojnĂ« nĂ« moskompatibilitet:
    • SOVERSION 2: Versioni ABI i bibliotekĂ«s Ă«shtĂ« rritur. SkedarĂ«t binarĂ« tĂ« kompiluar pĂ«r SOVERSION 1 duhet tĂ« ripĂ«rpunohen.
    • 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, dĂ«rgoni NULL.
    • Kodimi i madhĂ«sisĂ« sĂ« bllokut: Kreu i skedarit tani ruan madhĂ«sinĂ« e bllokut nĂ« formĂ«n e eksponencĂ«s log2 [12..21] nĂ« vend tĂ« kodimit tĂ« mĂ«parshĂ«m me dy shkallĂ«. Vlera e vjetĂ«r 64 akoma pranohet pĂ«r shkak tĂ« pĂ«rputhshmĂ«risĂ« mbrapa.
  • MundĂ«si tĂ« reja:
    • Kontekste tĂ« pandriçueshme tĂ« kompresimit dhe dekompresimit, tĂ« alokuara nĂ« heap, tĂ« cilat eliminonin ngarkesat e alokimit tĂ« memories gjatĂ« çdo thirrjeje; ideale pĂ«r pluginet e sistemit tĂ« skedarĂ«ve (squashfs, dwarfs) dhe pĂ«r pĂ«rpunim me grupe:
      • 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;
      • Bufrat e brendshĂ«m rishpĂ«rndahen vetĂ«m nĂ«se vlera e block_size ose level ndĂ«rron midis thirrjeve.
  • MadhĂ«si tĂ« personalizueshme tĂ« bllokut:
    • madhĂ«sia e bllokut tani mund tĂ« personalizohet me fushĂ«n block_size nĂ« strukturĂ«n zxc_compress_opts_t;
    • ndĂ«rmjetĂ«si i pranueshĂ«m: nga 4 KB deri nĂ« 2 MB (shpĂ«rndarje e dyfishtĂ«);
    • vlera parazgjedhur mbetet 256 KB;
    • NjĂ« parametr i ri Ă«shtĂ« shtuar nĂ« utilitarin konsolĂ« zxc —block-size (ose -B) me mbĂ«shtetje pĂ«r sufixet e njĂ«sive tĂ« masĂ«s (4K, 1M ose 4KB, 1MB etj.).
  • Dekompresim i shpejtĂ« dhe tĂ« drejtpĂ«rdrejtĂ«:
    • kur bufferi i destinacionit Ă«shtĂ« mjaft i mbushur, gjatĂ« dekompresimit kalohen kopjet ndĂ«rmjetĂ«se nĂ« bufferin nĂ« punĂ«, qĂ« lejon uljen e ngarkesĂ«s sĂ« memories dhe shkurtimin e vonesĂ«s.
  • Siguria dhe stabiliteti:
    • Ă«shtĂ« rregulluar mbushja e tamponit tĂ« heaps nĂ« zxc_bitpack_stream_32: cikli i kompresimit mund tĂ« shkruajĂ« deri nĂ« 4 byte jashtĂ« bufferit tĂ« daljes, nĂ«se vlera e fundit e kompresuar kalonte kufirin e byte-it;
    • Ă«shtĂ« rregulluar kontrolli i rrjedhĂ«s gjatĂ« dekompresimit (nĂ« zxc_decompress.c): Ă«shtĂ« shtuar njĂ« kontroll qĂ« siguron se madhĂ«sia e rrjedhĂ«s sĂ« sekuencave Ă«shtĂ« e mjaftueshme pĂ«r numrin e deklaruar tĂ« sekuencave, duke parandaluar leximin pĂ«rtej kufijve tĂ« lejuar.
    • kontrolli i madhĂ«sisĂ« sĂ« bllokut: tani nĂ« funksionet zxc_cctx_init() dhe zxc_read_file_header() kryhet kĂ«qyrja qĂ« madhĂ«sitĂ« e bllokut janĂ« brenda intervalit [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] dhe janĂ« fuqitĂ« e dyta;
    • kompatibilitet me C++: tĂ« gjitha skedarĂ«t e titullit publik tani pĂ«rmbajnĂ« struktura mbrojtĂ«se extern "C" pĂ«r pĂ«rdorim pa probleme nĂ« C++;
    • ruajtja e korpusit tĂ« testeve pĂ«r testimin e fazzimit: Ă«shtĂ« konfiguruar njĂ« ruajtje e pĂ«rhershme e corpusit pĂ«r ClusterFuzzLite CI.
  • Dokumentacioni:
    • docs/API.md: njĂ« doracak i ri gjithĂ«pĂ«rfshirĂ«s pĂ«r API dhe ABI, i cili pĂ«rshkruan tĂ« gjithĂ« 21 simbolet e eksportuara, definicionet e tipeve, strategjinĂ« e dukshmĂ«risĂ«, versionizimin e ABI, garancitĂ« e sigurisĂ« sĂ« rrjedhave dhe modelet e pĂ«rpunimit tĂ« gabimeve;
    • janĂ« rishikuar man dhe skedari README me udhĂ«zime pĂ«r instalim dhe informacion mbi statusin e paketave (vcpkg, Conan, Homebrew);
    • Ă«shtĂ« pĂ«rmirĂ«suar skedari docs/FORMAT.md me pĂ«rshkrimin e kodimit tĂ« madhĂ«sisĂ« sĂ« bllokut nĂ« bazĂ« tĂ« eksponencĂ«s.
  • JanĂ« pĂ«rmirĂ«suar mbĂ«shtetĂ«sit pĂ«r Python, Rust dhe Node.js.

Burimi: linux.org.ru

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