On ilmunud zlib-ng 2.0 teekonna versioon, mis on märgitud kui projekti esimene stabiilne väljaanne (järgmiseks on saadaval ka parandav väljaanne 2.0.1). Zlib-ng on API tasemel ühilduv zlib-iga, kuid pakub täiendavaid optimeerimisi, mis ei ole ametlikku zlib hoidlast aktsepteeritud konservatiivsete muudatuste vastuvõtmisprotsesside tõttu. Lisaks on pakutud uuendatud API, mis põhineb zlib-il, kuid on kohandatud portimise lihtsustamiseks. Projekti kood on kirjutatud C keeles ja levitatakse Zlib litsentsi all.
X86_64 süsteemidel läbi viidud testid näitasid, et Zlib-ng pakub tihendamise operatsioonide ajal umbes 4 korda kiiremat kiiruset zlib-iga ja 2.1 korda kiiremat gzip-iga. Lauksivamisel on Zlib-ng umbes 2.4 korda kiirem zlib-ist ja 1.8 korda kiiremini gzip-ist. Signifikenet saavutati tihendamise/lahtitihendamise jõudluse olulise paranemise tõttu, mis põhineb SSE*, AVX2, VSX ja Neon vektoriliste juhiste kasutamisel.
Seal sisaldab Adler32 kontrollsummade arvutamise algoritmi, mis on optimeeritud SSSE3, AVX2, Neon ja VSX juhiste abiga, CRC32-B teostus, mis põhineb PCLMULQDQ ja ACLE, täiustatud räsitabelid, Slide räsimise teostus SSE2, AVX2, Neon ja VSX baasil, ning võrdlemisoperatsioonid SSE4.2 ja AVX2 baasil. Samuti on sisse viidud jõudluse parandamiseks suunatud muudatused, mida kasutatakse Intel ja Cloudflare harudes. Buffrite töötlemise protsess on optimeeritud. Lisatud on tugi CMake ja NMake koostamisprogrammidele. Testimiseks on kaasatud pideva integreerimise süsteemid.
Zlib-ng sisaldab optimeerimiste kõrval ka kõiki distributsioonipakettidesse kogunenud silumisi ning koodipuhastust, et eemaldada zlib's kasutatud ümbersõidulahendused, mis toetavad vanemaid kompilaatoreid ja platvorme, kuid takistavad tõhusamate meetodite rakendamist (näiteks piirangud, mis on vajalikud 16-bitiste süsteemide ja ANSI C-ga mitteühilduvate kompilaatorite toetamiseks). Tehtud on töö vigade tuvastamiseks ja parandamiseks, mis on tuvastatud staatiliste analüsaatorite, fuzzing-testi süsteemide ja mäluprobleemide tuvastamise tööriistadega (AddressSanitizer ja MemorySanitizer).
Allikas: opennet.ru
