ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Inguqulelo 0.9.0 yesixhobo selayibrari kunye ne-cross-platform console ikhutshiwe. ZXC (github.com), ukusebenzisa i-multithreaded esebenza kakhulu ucinezelo olungalinganiyo Ayinalahleko kwaye ilungiselelwe izixhobo zemidlalo, i-firmware, kunye neephakheji zesicelo. Le fomathi iyilwe kusetyenziswa umgaqo othi "bhala kube kanye, funda uninzi" (WORM).

Ngokungafaniyo nee-codecs ezifana ne-LZ4, i-ZXC incama isantya sokucinezelwa ukuze ikwazi ukufikelela kwi-extension ephezulu xa i-decompress.

Isantya sokunciphisa uxinzelelo sibhengezwe njenge-40%+ ngaphezulu kune-LZ4 kwi-Apple Silicon, i-25%+ ngaphezulu kwi-Google Axion (ARM64) kunye ne-5%+ ngaphezulu kwi-x86_64, ngelixa kuzo zonke iimeko kukho umlinganiselo ophezulu woxinzelelo.

Olu khuphelo luzisa i-API yomxholo engasetyenziswa kwakhona, ukukwazi ukwenza ngokwezifiso ubungakanani beebhloko, isikhokelo esipheleleyo se-API kunye nesalathiso se-ABI, kunye nokulungiswa okuliqela okunxulumene nokhuseleko, kubandakanya ukulungiswa kobuthathaka be-buffer overflow obusekelwe kwi-heap obufunyenwe ngexesha lokuchithwa kwemodyuli yokucinezela.

Olu khuphelo luqulathe utshintsho oluphula i-ABI, ngoko ke i-SOVERSION yonyuswe yaba yi-2.

Le projekthi ibhalwe ngo-C kwaye isasazwa phantsi kwelayisenisi ye-BSD 3.

Jonga iinkcukacha
  • Utshintsho olukhokelela ekungahambelani:
    • I-SOVERSION 2: Inguqulelo ye-ABI yelayibrari yonyusiwe. Ii-binary eziqulunqwe kwi-SOVERSION 1 kufuneka ziphinde zihlanganiswe.
    • Izakhiwo zeenketho: Imisebenzi ye-zxc_compress() kunye ne-zxc_decompress() ngoku yamkela iiparameter ze-zxc_compress_opts_t* kunye ne-zxc_decompress_opts_t* endaweni yezo zesimo. Kwindlela yokuziphatha emiselweyo, dlula u-NULL.
    • Ukufaka ikhowudi yobungakanani beebhloko: Intloko yefayile ngoku igcina ubungakanani beebhloko njenge-exponent ye-log2 [12..21] endaweni yekhowudi yangaphambili yezikali ezimbini. Ixabiso elidala le-64 lisamkelwa ukuze lihambelane nokubuyela umva.
  • Izinto ezintsha:
    • Iimeko ze-Opaque, i-heap-allocated compression kunye ne-decompression ezisusa i-overhead yokwabela imemori kwifowuni nganye; ilungele ii-plugins ze-filesystem (ii-squashfs, ii-dwarfs) kunye ne-batch processing:
      • zxc_create_cctx(), zxc_free_cctx() kunye ne-zxc_compress_cctx() yoxinzelelo;
      • zxc_create_dctx(), zxc_free_dctx() kunye ne-zxc_decompress_dctx() yokunciphisa uxinzelelo;
      • Ii-buffers zangaphakathi ziphinde zabiwe kuphela ukuba ixabiso le-block_size okanye level liyatshintsha phakathi kweefowuni.
  • Ubungakanani beebhloko obunokwenziwa ngokwezifiso:
    • Ubungakanani bebhloko ngoku bunokulungiswa kusetyenziswa intsimi ye-block_size kwisakhiwo se-zxc_compress_opts_t;
    • Uluhlu olwamkelekileyo: 4 KB ukuya kwi-2 MB (amandla amabini);
    • ngokwesiqhelo ixabiso lihlala liyi-256 KB;
    • Ipharamitha entsha --block-size (okanye -B) yongezwe kwisixhobo se-zxc console, esixhasa izimamva zeyunithi (4K, 1M okanye 4KB, 1MB, njl.njl.).
  • Ukunciphisa ngokukhawuleza ngokuthe ngqo:
    • Xa i-destination buffer igcwele ngokwaneleyo, i-decompression itsiba ikopi ephakathi iye kwi-working buffer, nto leyo enciphisa umthwalo wememori kwaye inciphise i-latency.
  • Ukhuseleko kunye noZinzo:
    • Ukulungiswa kokugcwala kwe-heap buffer kwi-zxc_bitpack_stream_32: i-packing loop ingabhala ukuya kuthi ga kwi-4 bytes ngaphaya kwesiphelo se-output buffer ukuba ixabiso lokugqibela elipakishiweyo lidlule umda we-byte;
    • Ukujonga umsinga okulungisiweyo xa unciphisa uxinzelelo (kwi-zxc_decompress.c): Kongezwe itshekhi ukuqinisekisa ukuba ubungakanani bomsinga wolandelelwano buyanele kwinani elichaziweyo lolandelelwano, nto leyo ethintela ukufunda ngaphandle koluhlu oluvunyelweyo.
    • Ukujonga ubungakanani beebhloko: zxc_cctx_init() kunye ne-zxc_read_file_header() ngoku jonga ukuba ubungakanani beebhloko bukuluhlu [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] kwaye zingamandla amabini;
    • Ukuhambelana kwe-C++: Zonke iifayile ze-public header ngoku ziqulathe izinto zokukhusela zangaphandle "C" zokusetyenziswa ngaphandle komthungo kwi-C++;
    • Vavanya ugcino lwe-corpus ukuze kuvavanywe i-fuzz: ugcino lwe-corpus oluqhubekayo lulungiselelwe i-ClusterFuzzLite CI.
  • Amaxwebhu:
    • amaxwebhu/API.md: Isalathiso esitsha esibanzi se-API kunye ne-ABI esichaza zonke iimpawu ezingama-21 ezithunyelweyo, iinkcazo zohlobo, icebo lokubonakala, iinguqulelo ze-ABI, iziqinisekiso zokhuseleko lwemisonto, kunye neepateni zokuphatha iimpazamo;
    • ifayile yomntu ehlaziyiweyo kunye ne-README enemiyalelo yokufaka kunye nolwazi malunga nemeko yeepakeji (vcpkg, Conan, Homebrew);
    • ifayili ihlaziyiwe amaxwebhu/iFORMAT.md ngenkcazo yekhowudi yobungakanani bebhloko esekwe kwi-exponent.
  • IiWrappers zePython, Rust, kunye neNode.js zihlaziyiwe.

umthombo: linux.org.ru

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster