ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π²Π΅ΡΡΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° zlib-ng 2.0, ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½Π° ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΈΡ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ 2.0.1 Π²Π΅ΡΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ½Π°). Zlib-ng Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° ΡΡΡ zlib Π½Π° Π½ΠΈΠ²ΠΎ API, Π½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΏΡΠΈΠ΅ΡΠΈ Π² ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° zlib ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ²Π°ΡΠΈΠ²Π½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΡΠΌ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½ API, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° zlib, Π½ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ²Π°Π½Π΅ΡΠΎ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ 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 ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ). ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ΅ΡΡΠΎΠ²Π΅ Ρ ΡΡΠ·ΠΈΠ½Π³ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ (AddressSanitizer ΠΈ MemorySanitizer).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
