ZXC 0.9.0

ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

Version 0.9.0 av biblioteket och plattformsoberoende konsolverktyg har slÀppts ZXC (github.com), som implementerar högpresterande flermodulÀr asymmetrisk komprimering utan förlust och optimerad för spelresurser, firmware och programpaket. Formatet har utvecklats enligt principen "skriv en gÄng, lÀs flera gÄnger" (WORM).

Till skillnad frÄn codecs som LZ4 prioriterar ZXC högsta nedladdningshastighet framför komprimeringshastighet.

Det deklareras att uppackningshastigheten Àr över 40% högre Àn LZ4 pÄ Apple Silicon, över 25% högre pÄ Google Axion (ARM64) och över 5% högre pÄ x86_64, med en högre komprimeringsgrad i alla fall.

Denna version innehÄller ett API för ÄteranvÀndbara sammanhang, möjlighet att konfigurera blockstorlekar, en fullstÀndig referenshandbok för API och ABI, samt flera sÀkerhetsfixar, inklusive ÄtgÀrdande av en buffertöverskridningssÄrbarhet som upptÀckts i samband med fuzzing av komprimeringsmodulen.

Denna release innehÄller förÀndringar som bryter ABI, sÄ SOVERSION har ökat till 2.

Projektet Àr skrivet i C och distribueras under BSD 3-licensen.

Detaljer
  • Ändringar som leder till inkompatibilitet:
    • SOVERSION 2: ABI-versionen av biblioteket har ökat. BinĂ€rfiler som kompilerats för SOVERSION 1 mĂ„ste kompileras om.
    • Alternativs strukturer: funktionerna zxc_compress() och zxc_decompress() accepterar nu zxc_compress_opts_t* och zxc_decompress_opts_t* istĂ€llet för positionsparametrar. För standardbeteende, skicka NULL.
    • Blockstorlekskodning: Filhuvudet lagrar nu blockstorleken som en exponent log2 [12..21] istĂ€llet för den tidigare kodningen med tvĂ„ skalor. Det gamla vĂ€rdet 64 accepteras fortfarande för bakĂ„tkompatibilitet.
  • Nya funktioner:
    • Ogenomskinliga komprimerings- och dekomprimeringskontexter som allokeras pĂ„ heapen, vilket eliminerar overhead av minnesallokering vid varje anrop; idealiska för filsystemplugin (squashfs, dwarfs) och batchbehandling:
      • zxc_create_cctx(), zxc_free_cctx() och zxc_compress_cctx() för komprimering;
      • zxc_create_dctx(), zxc_free_dctx() och zxc_decompress_dctx() för dekomprimering;
      • interna buffertar omfördelas endast om block_size eller level förĂ€ndras mellan anrop.
  • Anpassningsbara blockstorlekar:
    • Blockstorleken kan nu justeras med hjĂ€lp av block_size-fĂ€ltet i strukturen zxc_compress_opts_t;
    • tillĂ„tet intervall: frĂ„n 4 KB till 2 MB (potens av tvĂ„);
    • standardeinstĂ€llningen förblir 256 KB;
    • ett nytt parameter har lagts till konsolverktyget zxc —block-size (eller -B) med stöd för enhetssuffix (4K, 1M eller 4KB, 1MB och sĂ„ vidare).
  • Snabb direkt dekomprimering:
    • nĂ€r destinationsbufferten Ă€r tillrĂ€ckligt fylld, hoppar man över mellanlagring i arbetsbufferten under dekomprimering, vilket minskar minnesbelastningen och förkortar latensen.
  • SĂ€kerhet och stabilitet:
    • ÅtgĂ€rdat överflödet i zxc_bitpack_stream_32: packningsloopen kunde skriva upp till 4 byte utanför utdata-bufferten om det sista packade vĂ€rdet översteg bytegrĂ€nsen;
    • ÅtgĂ€rdad strömkontroll vid dekomprimering (i zxc_decompress.c): en kontroll har lagts till för att sĂ€kerstĂ€lla att storleken pĂ„ sekvensströmmen Ă€r tillrĂ€cklig för det angivna antalet sekvenser, vilket förhindrar lĂ€sning utanför det tillĂ„tna intervallet.
    • Blockstorlekskontroll: nu utförs en kontroll i funktionerna zxc_cctx_init() och zxc_read_file_header() för att sĂ€kerstĂ€lla att blockstorlekarna ligger inom intervallet [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] och att de Ă€r tvĂ„potenser;
    • Kompatibilitet med C++: alla offentliga header-filer innehĂ„ller nu extern "C" skyddskommandon för smidig anvĂ€ndning i C++;
    • Lagring av testfall för fuzzing-testning: en permanent lagring av testfall har stĂ€llts in för ClusterFuzzLite CI.
  • Dokumentation:
    • docs/API.md: en ny utförlig API- och ABI-guide som beskriver alla 21 exporterade symboler, typdefinitioner, synlighetsstrategi, ABI-versionering, trĂ„d-sĂ€kerhetsgarantier och felhanteringsmönster;
    • Man-sidan och README-filen har uppdaterats med installationsinstruktioner och information om paketens status (vcpkg, Conan, Homebrew);
    • Filen har uppdaterats docs/FORMAT.md med en beskrivning av blockstorlekens kodning baserat pĂ„ exponent.
  • Wrapper-filerna för Python, Rust och Node.js har uppdaterats.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster