ΠΠ°Π»ΠΈΡΠ½Π° Π΅ Π²Π΅ΡΡΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° 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 .2 ΠΈ AVXXNUMX. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΊΠΎΠ²Π΅ ΠΎΡ Intel ΠΈ Cloudflare. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΡΡΠ΅ΡΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° CMake ΠΈ NMake. ΠΠ° ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅, Zlib-ng ΡΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΠ°ΡΠΎΠ²Π΅, Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π° ΠΊΠΎΠ΄Π° ΠΎΡ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² zlib, Π·Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎ-ΡΡΠ°ΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π½ΠΎ Π²ΡΠ·ΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° 16-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π½Π΅-ANSI C ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ). ΠΠ΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠΈΠ²Π°Π½Π΅ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ (AddressSanitizer ΠΈ MemorySanitizer).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru