ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0 ZXC 0.9.0

ИздадСно Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 0.9.0 Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΈ кросплатформСната ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ZXC (github.com), Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‰ΠΈ високопроизводитСлно ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ асимСтрично компрСсиранС Π±Π΅Π· Π·Π°Π³ΡƒΠ±ΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π·Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΈ рСсурси, Ρ„ΡŠΡ€ΠΌΡƒΠ΅ΡŠΡ€ΠΈ ΠΈ прилоТСния. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° β€žΠ·Π°ΠΏΠΈΡΠ²Π°Ρˆ вСднъТ, Ρ‡Π΅Ρ‚Π΅Ρˆ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎβ€œ (WORM).

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠ΄Π΅Ρ†ΠΈ ΠΊΠ°Ρ‚ΠΎ LZ4, ZXC ΠΆΠ΅Ρ€Ρ‚Π²Π° скоростта Π½Π° компрСсиранС Π·Π° смСтка Π½Π° максималната пропускна способност ΠΏΡ€ΠΈ дСкомпрСсиранС.

Π”Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½Π° Π΅ скорост Π½Π° Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ с 40%+ ΠΏΠΎ-високо Π² сравнСниС с LZ4 Π½Π° Apple Silicon, с 25%+ ΠΏΠΎ-високо Π½Π° Google Axion (ARM64) ΠΈ с 5%+ ΠΏΠΎ-високо Π½Π° x86_64, ΠΊΠ°Ρ‚ΠΎ във всички случаи Π΅ осигурСн ΠΏΠΎ-висок ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ Π½Π° компрСсия.

Π’ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ прСдставСн API Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌ контСкст, Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° настройка Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅, пълно Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° API ΠΈ ABI, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ няколко ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с бСзопасността, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ отстраняванС Π½Π° уязвимостта ΠΎΡ‚ ΠΏΡ€Π΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π° Π² ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ„Π°Π·ΠΈΠ½Π³ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° компрСсия.

Π’ΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‰ΠΈ ABI, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ SOVERSION Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π½Π° 2.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊ C ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· BSD 3.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ
  • ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π²ΠΎΠ΄Π΅Ρ‰ΠΈ Π΄ΠΎ Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚:
    • SOVERSION 2: ВСрсията Π½Π° ABI Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π°. Π‘ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎΠ΄ SOVERSION 1, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ.
    • Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ zxc_compress() ΠΈ zxc_decompress() Π²Π΅Ρ‡Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ zxc_compress_opts_t* ΠΈ zxc_decompress_opts_t* вмСсто ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π—Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ NULL.
    • ΠšΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π±Π»ΠΎΠΊΠ°: Π—Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Π²Π΅Ρ‡Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° Π² СкспонСнция log2 [12..21] вмСсто ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ с Π΄Π²Π΅ скали. Π‘Ρ‚Π°Ρ€Π°Ρ‚Π° стойност 64 всС ΠΎΡ‰Π΅ сС ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚.
  • Нови Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ:
    • НСпрозрачни контСксти Π·Π° компрСсия ΠΈ дСкомпрСсия, разпрСдСляСми Π² ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅; ΠΈΠ΄Π΅Π°Π»Π½ΠΎ Π·Π° плъгини Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма (squashfs, dwarfs) ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°:
      • zxc_create_cctx(), zxc_free_cctx() ΠΈ zxc_compress_cctx() Π·Π° компрСсия;
      • zxc_create_dctx(), zxc_free_dctx() ΠΈ zxc_decompress_dctx() Π·Π° дСкомпрСсия;
      • Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈ сС прСразпрСдСлят само Π°ΠΊΠΎ стойността Π½Π° block_size ΠΈΠ»ΠΈ level сС промСня ΠΌΠ΅ΠΆΠ΄Ρƒ извикванията.
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅:
    • Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Π±Π»ΠΎΠΊΠ° Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· ΠΏΠΎΠ»Π΅Ρ‚ΠΎ block_size Π² структурата zxc_compress_opts_t;
    • Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½: ΠΎΡ‚ 4 ΠšΠ‘ Π΄ΠΎ 2 ΠœΠ‘ (стСпСн Π½Π° Π΄Π²ΠΎΠΉΠΊΠ°);
    • ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ стойността остава 256 ΠšΠ‘;
    • към конзолния инструмСнт zxc Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ β€”block-size (ΠΈΠ»ΠΈ -B) с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° суфикси Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ мярка (4K, 1M ΠΈΠ»ΠΈ 4KB, 1MB ΠΈ Ρ‚.Π½.).
  • Π‘ΡŠΡ€Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π° дСкомпрСсия:
    • ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€ΡŠΡ‚ Π·Π° дСстинация Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ запълнСн, ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ сС пропуска ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π² работния Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява намаляванС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ ΡΡŠΠΊΡ€Π°Ρ‰Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.
  • Бигурност ΠΈ стабилност:
    • отстранСна Π΅ уязвимостта ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π° Π² zxc_bitpack_stream_32: Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ моТСшС Π΄Π° записва Π΄ΠΎ 4 Π±Π°ΠΉΡ‚Π° извън изходния Π±ΡƒΡ„Π΅Ρ€, Π°ΠΊΠΎ послСдната ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° стойност ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° Π±Π°ΠΉΡ‚Π°;
    • отстранСна Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ (Π² zxc_decompress.c): Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, която Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° послСдоватСлноститС Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½ Π·Π° посочСния Π±Ρ€ΠΎΠΉ послСдоватСлности, ΠΊΠΎΠ΅Ρ‚ΠΎ прСдотвратява Ρ‡Π΅Ρ‚Π΅Π½Π΅ извън допустимия Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½.
    • ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ°: сСга Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ zxc_cctx_init() ΠΈ zxc_read_file_header() сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ са Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [ZXC_BLOCK_SIZE_MIN, ZXC_BLOCK_SIZE_MAX] ΠΈ са стСпСни Π½Π° Π΄Π²Π΅;
    • ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с C++: всички ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сСга ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ конструкции extern "C" Π·Π° Π±Π΅Π·ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² C++;
    • ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° корпус Π½Π° тСстовС Π·Π° Ρ„Π°Π·Π·ΠΈΠ½Π³-тСстиранС: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΎ Π΅ постоянно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° корпуса Π·Π° ClusterFuzzLite CI.
  • ДокумСнтация:
    • docs/API.md: Π½ΠΎΠ² Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ справочник Π·Π° API ΠΈ ABI, Π² ΠΊΠΎΠΉΡ‚ΠΎ са описани всичкитС 21 Скспортирани символа, опрСдСлСния Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, стратСгия Π½Π° видимост, вСрсиониранС Π½Π° ABI, Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° потокобСзопасност ΠΈ шаблони Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ;
    • ΠΎΠ±Π½ΠΎΠ²Π΅Π½ΠΈ man ΠΈ Ρ„Π°ΠΉΠ» README с инструкции Π·Π° инсталиранС ΠΈ информация Π·Π° статуса Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ (vcpkg, Conan, Homebrew);
    • ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Ρ„Π°ΠΉΠ» docs/FORMAT.md с описаниС Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° въз основа Π½Π° СкспонСнта.
  • ОбновСни Π²Ρ€Π°ΠΏΠ΅Ρ€ΠΈ Π·Π° Python, Rust ΠΈ Node.js.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster