ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ выпуск zlib-ng, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΊΠ° zlib

ДоступСн Ρ€Π΅Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ zlib-ng 2.0 ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (слСдом ΡƒΠΆΠ΅ доступСн ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ выпуск 2.0.1). Zlib-ng совмСстим с zlib Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ API, Π½ΠΎ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ принятыС Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ zlib ΠΈΠ·-Π·Π° консСрвативного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΈΡ‘ΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API, основанный Π½Π° zlib, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ для упрощСния портирования. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Zlib.

ΠŸΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π½Π° систСмах x86_64 тСсты ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сТатия Zlib-ng ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 4 Ρ€Π°Π·Π° быстрСС zlib ΠΈ Π² 2.1 Ρ€Π°Π·Π° быстрСС gzip. ΠŸΡ€ΠΈ распаковкС Zlib-ng ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 2.4 Ρ€Π°Π·Π° быстрСС zlib ΠΈ Π² 1.8 Ρ€Π°Π· быстрСС gzip. Π”ΠΎΠ±ΠΈΡ‚ΡŒΡΡ сущСствСнного ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сТатия/распаковки Π² основном ΡƒΠ΄Π°Π»ΠΎΡΡŒ благодаря Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… инструкций SSE*, AVX2, VSX ΠΈ Neon.

Π’ Ρ‚ΠΎΠΌ числС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° вычислСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм Adler32, оптимизированная ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкций SSSE3, AVX2, Neon ΠΈ VSX, рСализация CRC32-B Π½Π° Π±Π°Π·Π΅ PCLMULQDQ ΠΈ ACLE, ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, рСализация Ρ…ΡΡˆΠ° Slide Π½Π° Π±Π°Π·Π΅ SSE2, AVX2, Neon ΠΈ VSX, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния Π½Π° Π±Π°Π·Π΅ SSE4.2 ΠΈ AVX2. Π’ состав Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ измСнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ„ΠΎΡ€ΠΊΠ°Ρ… ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Intel ΠΈ Cloudflare. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ процСсс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сборочных систСм CMake ΠΈ NMake. Для тСстирования задСйствованы систСмы Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π² Zlib-ng Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ накопившиСся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… дистрибутивов ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° чистка ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² zlib для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ старых компиляторов ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π½ΠΎ ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ограничСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ 16-разрядных систСм ΠΈ нСсовмСстимых с ANSI C компиляторов). ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π²Ρ‹ΡΠ²Π»Π΅Π½ΠΈΡŽ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок, выявлСнных статичСскими Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, систСмами fuzzing-тСстирования, ΠΈ инструмСнтами для выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (AddressSanitizer ΠΈ MemorySanitizer).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru