Udgivelsen af biblioteket zlib-ng 2.0 er nu tilgængelig og betegnet som den første stabile udgivelse af projektet (en rettet udgivelse 2.0.1 er allerede tilgængelig). Zlib-ng er kompatibel med zlib på API-niveau, men tilbyder yderligere optimeringer, som ikke er blevet accepteret i det officielle zlib-arkiv på grund af en konservativ tilgang til at tage imod ændringer. Desuden er der tilbudt et moderniseret API baseret på zlib, men ændret for at forenkle porteringen. Projektets kode er skrevet i C og distribueres under Zlib-licensen.
Testene udført på x86_64-systemer har vist, at zlib-ng er cirka 4 gange hurtigere end zlib ved komprimeringsoperationer og 2,1 gange hurtigere end gzip. Ved dekomprimering er zlib-ng cirka 2,4 gange hurtigere end zlib og 1,8 gange hurtigere end gzip. Den væsentlige stigning i ydeevne ved komprimering/dekomprimering er primært opnået ved at udnytte vektorinstruktionerne SSE*, AVX2, VSX og Neon.
Herunder er der tilføjet en implementering af algoritmen til beregning af kontrolsummer Adler32, optimeret ved hjælp af instruktionerne SSSE3, AVX2, Neon og VSX, en implementering af CRC32-B baseret på PCLMULQDQ og ACLE, forbedrede hash-tabeller, en implementering af Slide-hashen baseret på SSE2, AVX2, Neon og VSX, samt sammenligningsoperationer baseret på SSE4.2 og AVX2. Optimerede ændringer, der er rettet mod at forbedre ydeevnen, er også inkluderet fra forks fra Intel og Cloudflare. Bufferhåndteringen er blevet optimeret. Der er tilføjet støtte til build-systemerne CMake og NMake. Systemer til kontinuerlig integration er blevet brugt til testning.
Udover optimeringerne i zlib-ng er der også inkluderet patches fra distributionspakker, og koden er blevet renset for workaround-løsninger, der bruges i zlib for at understøtte ældre compilere og platforme, men som hindrer implementeringen af mere effektive metoder (for eksempel restriktioner, der er nødvendige for at understøtte 16-bit systemer og inkompatible compilere med ANSI C). Der er blevet udført arbejde med at identificere og rette fejl, der er blevet opdaget af statiske analyseværktøjer, fuzzing-testværktøjer og værktøjer til at opdage problemer med hukommelse (AddressSanitizer og MemorySanitizer).
Kilde: opennet.ru
