Disponohet versioni i bibliotekës zlib-ng 2.0, i cili shënohet si lëshimi i parë stabil i projektit (pas tij, është i disponueshëm versioni korrektiv 2.0.1). Zlib-ng është kompatibël me zlib në nivelin API, por ofron optimizime shtesë, të cilat nuk janë pranuar në depozitat zyrtare të zlib për shkak të qasjes konservatore ndaj pranimit të ndryshimeve. Për më tepër, është propozuar një API i modernizuar, i bazuar në zlib, por e modifikuar për të thjeshtuar portimin. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën Zlib.
Testet e kryera në sistemet x86_64 treguan se gjatë kryerjes së operacioneve të kompresimit, Zlib-ng është rreth 4 herë më i shpejtë se zlib dhe 2.1 herë më i shpejtë se gzip. Gjatë dekompresimit, Zlib-ng është rreth 2.4 herë më i shpejtë se zlib dhe 1.8 herë më i shpejtë se gzip. Një rritje e konsiderueshme e performancës së kompresimit/dekompresimit është arritur kryesisht përmes përdorimit të instrukcioneve vektoriale SSE*, AVX2, VSX dhe Neon.
Përfshihet gjithashtu zbatimi i algoritmit për llogaritjen e kontrolleve të shumave Adler32, të optimizuar me ndihmën e instrukcioneve SSSE3, AVX2, Neon dhe VSX, realizimi i CRC32-B mbi bazën e PCLMULQDQ dhe ACLE, tabela të avancuara të heshit, zbatimi i heshit Slide mbi bazën e SSE2, AVX2, Neon dhe VSX, operacione krahasuese në bazë të SSE4.2 dhe AVX2. Në përbërje janë përfshirë gjithashtu ndryshime të drejtuara për rritjen e performancës, të përdorura në fork-et nga kompanitë Intel dhe Cloudflare. Procesi i punës me bufferat është optimizuar. Është shtuar mbështetje për sistemet e ndërtimit CMake dhe NMake. Sistemet e integrimit të vazhdueshëm janë përdorur për testim.
Përveç optimizimeve në Zlib-ng, janë përfshirë gjithashtu patches që janë akumuluar në paketat e distribucioneve dhe është bërë pastrimi i kodit nga zgjidhje të përkohshme që janë përdorur në zlib për mbështetje të kompiluesve dhe platformave të vjetra, por që pengonin zbatimin e metodave më efektive (për shembull, kufizimet e nevojshme për mbështetje të sistemeve 16-bit dhe kompiluesve të paqartë me ANSI C). Është punuar për identifikimin dhe korrigjimin e gabimeve të zbuluara nga analizatorë statikë, sistemet e fuzzing-testimit, dhe mjetet për identifikimin e problemeve në punën me memorjen (AddressSanitizer dhe MemorySanitizer).
Burimi: opennet.ru
