ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Ilmus välja raamatukogu ja platvormideülene konsooli utiliit versioon 0.9.0 ZXC (github.com), mis rakendab kõrge jõudlusega mitme südamiku asümmeetrilist tihendamist ilma andmete kadudeta ja optimeeritud mänguressursside, püsiprogrammide ja rakenduste paketide jaoks. Formaadi areng põhineb printsiibil 'kirjuta üks kord, loe mitu korda' (WORM).

Erinevalt sellistest koodekitest nagu LZ4, ohverdab ZXC tihendamise kiirus maksimaalse lõhkumise võimekuse nimel.

Deklaratsioonih tahapakkimise kiirus on rohkem kui 40% kõrgem kui LZ4 Apple Siliconil, 25% kõrgem Google Axionil (ARM64) ja 5% kõrgem x86_64 puhul, samas kui kõikides olukordades pakutakse kõrgemat tihendustaset.

Selles väljaandes on tutvustatud mitme kasutusega konteksti API-d, plokkide suuruse kohandamise võimalust, täielikku API ja ABI käsiraamatut ning mitmeid turvalisuse parandusi, sealhulgas kuhja ülevoolu haavatavuse kõrvaldamist, mis avastati tihendusmoduli fuzzingu käigus.

See versioon sisaldab ABI-d rikkuvaid muudatusi, seega on SOVERSION tõstetud 2-le.

Projekt on kirjutatud keeles C ja levitatakse BSD 3 litsentsi alusel.

Üksikasjad
  • Muudatused, mis toovad kaasa ühilduvuse puudumise:
    • SOVERSION 2: Raamatukogu ABI versioon on tõstetud. SOVERSION 1 all kompileeritud binaarfailid tuleb uuesti kompileerida.
    • Valikustruktuurid: funktsioonid zxc_compress() ja zxc_decompress() acceptivad nüüd zxc_compress_opts_t* ja zxc_decompress_opts_t* positsiooniliste parameetrite asemel. Vaikimisi käitumiseks edastage NULL.
    • Ploki suuruse kodeerimine: Faili päis hoiab nüüd ploki suurust log2 [12..21] eksponentsina, mitte enam varasema kahe astme kodeerimise meetodina. Vanem väärtus 64 on endiselt tagasikäiguks aktsepteeritud.
  • Uued võimalused:
    • Kuhja jagatud kokkusurumise ja dekompressiooni kontekstid, mis on eraldatud kuhjast, need eemaldavad mäludele allokatsiooni overheadi iga kutsumise korral; ideaalsed failisüsteemi pluginate (squashfs, dwarfs) ja partii töötlemiseks:
      • zxc_create_cctx(), zxc_free_cctx() ja zxc_compress_cctx() kokkusurumiseks;
      • zxc_create_dctx(), zxc_free_dctx() ja zxc_decompress_dctx() dekompressimiseks;
      • sisendid taaskasutatakse ainult siis, kui kutsude vahel muudetakse block_size või level väärtust.
  • Kohandatavad ploki suurused:
    • ploki suurust saab nüüd kohandada zxc_compress_opts_t strukturaalse block_size välja kaudu;
    • kehtiv vahemik: 4 KB kuni 2 MB (kahe astme suurused);
    • vaikimisi väärtus jääb 256 KB;
    • konsooli utiliidile zxc on lisatud uus parameeter -block-size (või -B) koos mõõtühikute suffiksite toetamisega (4K, 1M ehk 4KB, 1MB jne).
  • Kiire otse dekompressioon:
    • kui sihtbuffeer on piisavalt täidetud, vahelejätke vahekopeerimine tööbuffisse dekompressiooni ajal, vähendades mälukoormust ja lühendades latentsust.
  • Turvalisus ja stabiilsus:
    • parandatud kuhja ülevool zxc_bitpack_stream_32: pakendamise tsükkel võis kirjutada kuni 4 baiti väljaspool väljundbufferit, kui viimane pakendatud väärtus ületas bitti ääre;
    • parandatud voo kontroll dekompressiooni ajal (zxc_decompress.c): lisatud kontroll, mis tagab, et järjestuste voolu suurus on piisav deklareeritud järjestuste arvu jaoks, vältides seeläbi lugemist lubamatult.
    • ploki suuruse kontroll: nüüd on funktsioonides zxc_cctx_init() ja zxc_read_file_header() teostatud kontroll, et ploki suurused jääksid vahemikku [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] ja need oleksid kahe astme suurused;
    • C++ ühilduvus: kõik avalikud päisfailid sisaldavad nüüd kaitsemehhanisme extern "C" probleemidevabaks kasutamiseks C++-s;
    • Fuzz-testimise jaoks testide fondi salvestamine: konfigureeritud pidev fondide salvestus ClusterFuzzLite CI jaoks.
  • Dokumentatsioon:
    • docs/API.md: uus põhjalik API ja ABI käsiraamat, mis kirjeldab kõiki 21 eksporditud sümbolit, tüübimääratlusi, nähtavuse strateegiat, ABI versioonimist, niitide turvalisuse tagatisi ja vigu töötlemise mallide seadistusi;
    • man- ja README fail on uuendatud installimise juhiste ja pakettide oleku (vcpkg, Conan, Homebrew) teabega;
    • fail on uuendatud docs/FORMAT.md koos ploki suuruse kodeeringu kirjeldamisega eksponentsiaalse alusel.
  • Python, Rust ja Node.js jagurid on uuendatud.

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster