Pas gjashtë muajsh zhvillimi, është publikuar lëshimi i bibliotekës sistemike GNU C Library (glibc) 2.41, e cila i përket plotësisht kërkesave të standardeve ISO C11 dhe POSIX.1-2017. Në krijimin e këtij lëshimi morën pjesë 79 zhvillues.
Nga përmirësimet e realizuara në Glibc 2.41 mund të theksohen:
- Për platformën Linux janë shtuar funksionet e reja sched_setattr dhe sched_getattr, përmes të cilave mund të vendosen / lexohen parametrat e planifikuesit të detyrave. Në praktikë, funksionet lejojnë konfigurimin e politikave të planifikimit të kërkesave, të tilla si SCHED_DEADLINE, të cilat përdorin parametra të tjerë përveç përparësisë.
- Në utilitarin iconv është shtuar mbështetje për konverzimin e kodimit në vend (nëse emri i skedarëve hyrës dhe dalës është i njëjtë, iconv tani automatikisht krijon një skedar të përkohshëm dhe pas përfundimit të konvertimit zëvendëson skedarin origjinal me të).
- Në skedarin header math.h janë shtuar funksionet trigonometrike, që u shfaqën në standardin C23 (TS 18661-4:2015): acospi, asinpi, atan2pi, atanpi, cospi, sinpi dhe tanpi.
- Nga projekti CORE-MATH janë transferuar versione të optimizuara dhe që përdorin rrethimin e saktë të funksioneve exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, atanf, atan2f, atanhf, coshf, sinhf dhe tanhf.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r zgjerimin ARM64 GCS (Guarded Control Stack) pĂ«r mbrojtjen harduerike tĂ« adresave tĂ« kthimit nga funksionet dhe bllokimin e eksploitĂ«ve qĂ« pĂ«rdorin metodat e programimit tĂ« orientuar nga kthimi (ROP â Return-Oriented Programming, eksploit formohet nga copĂ«za ekzistuese tĂ« instrukcioneve makinerike qĂ« pĂ«rfundojnĂ« me instruktionen e kthimit tĂ« kontrollit). ARM64 GCS lejon pĂ«rdorimin e teknikĂ«s sĂ« stack-ut tĂ« errĂ«t (shadow stack) pĂ«r mbrojtjen e proceseve nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit â pas kalimit tĂ« kontrollit nĂ« funksion, adresat e kthimit ruhen nga procesori jo vetĂ«m nĂ« stack-un e zakonshĂ«m, por edhe nĂ« njĂ« stack tĂ« veçantĂ« tĂ« errĂ«t, i cili nuk mund tĂ« modifikohet drejtpĂ«rdrejt. Para se tĂ« dalĂ« nga funksioni, adresa e kthimit nxirret nga stack-u i errĂ«t dhe verifikohet me adresĂ«n e kthimit nga stack-u kryesor. PĂ«r ndĂ«rtimin e Glibc me mbĂ«shtetje pĂ«r GCS nevojitet tĂ« paktĂ«n versioni 2.44 i binutils dhe GCC 15.
- ĂshtĂ« bĂ«rĂ« njĂ« punĂ« e madhe pĂ«r tĂ« pĂ«rmirĂ«suar gjenerimin e kodit dhe pĂ«r tĂ« rritur performancĂ«n e funksioneve matematikore pĂ«r arkitekturĂ«n ARM64/AArch64. JanĂ« realizuar optimizime duke pĂ«rdorur instrukcione vektoriale (SVE, Scalable Vector Extension) dhe zgjerime SIMD (Neon).
- Për sistemet me procesorë ARM64/AArch64 është shtuar mbështetje për mekanizmin Memory Protection Keys, i përdorur për të kufizuar aksesin në faqet e memories pa ndryshuar tabelën e faqes së memories.
- Për sistemet me procesorë PowerPC64 është shtuar mbështetje për instrukcione të zgjeruara për mbrojtjen nga përdorimi i programimit të orientuar nga kthimi në eksploit.
- ĂshtĂ« shtuar njĂ« lloj i ri arkitekture arch_kind_hygon pĂ«r procesorĂ«t kinezĂ« x86-64 Hygon, tĂ« ndĂ«rtuar mbi bazĂ«n e teknologjive AMD.
- Grupi për testimin e glibc është zgjeruar ndjeshëm, me numrin e testeve që është rritur nga 5408 në 6232 krahasuar me versionin e kaluar.
- ĂshtĂ« shtuar mundĂ«sia e testimit tĂ« ndĂ«rtimit glibc me pĂ«rdorimin e kompilerĂ«ve C dhe C++ qĂ« nuk janĂ« ata qĂ« janĂ« pĂ«rdorur pĂ«r ndĂ«rtimin real. PĂ«r shembull, âconfigure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1"â dhe âconfigure TEST_CC="clang" TEST_CXX="clang++"â.
- Në opsionet e specifikuara në skedarin /etc/resolv.conf dhe variablën e ambientit RES_OPTIONS, është realizuar mundësia e përdorimit të prefiksit "-" për të pastruar një opsion të vendosur më parë me këtë emër. Për shembull, nëse në skedarin /etc/resolv.conf është e specifikuar "options no-aaaa", prandaj, kur procesi fillohet me variablën Ambienti të "RES_OPTIONS=-no-aaaa" do të anulohet ndalimi për dërgimin e kërkesave DNS për të marrë rekordin AAAA.
- Në DNS-resolv janë shtuar mbështetje për opsionin "strict-error", ku funksioni getaddrinfo(), nëse nuk është specifikuar ndonjëherë lloji i adresave (AF_UNSPEC), do të provojë të marrë vlerat e rekordeve A (IPv4) dhe AAAA (IPv6) nga një server tjetër DNS, nëse kërkesa për rekordin A ose AAAA në serverin e parë DNS dështoi. Pa specifikimin e "strict-error" në një situatë të tillë do të kthehet adresa e marrë nga një kërkesë e përpunuar me sukses, ndërsa vlera e kërkesës që dështoi do të injorohet. Për shembull, nëse server ktheu një rekord "A", por i dha një gabim në kërkesën "AAAA", getaddrinfo pa opsionin "strict-error" do të kthejë menjëherë vetëm adresën IPv4, ndërsa me opsionin "strict-error" do të provojë të përsërisë kërkesat në një server tjetër DNS.
- Të dhënat e kodimeve, informacioni mbi llojet e simboleve dhe tabelat e transliteracionit janë përditësuar për të mbështetur specifikimin Unicode 16.0.0.
- ĂshtĂ« shtuar makrosi «_ISOC2Y_SOURCE», i cili mundĂ«son aktivizimin e funksioneve tĂ« pĂ«rcaktuara nĂ« skicĂ«n e standardit C2Y. TĂ« tilla funksione gjithashtu mund tĂ« aktivizohen pĂ«rmes makrosĂ« _GNU_SOURCE dhe pĂ«rmes flagjeve tĂ« kompilatorit («gcc -std=gnu2y»).
- ĂshtĂ« realizuar mjeti benchtest pĂ«r ndjekjen e performancĂ«s sĂ« funksioneve tĂ« ndryshme (zakonisht, atyre matematikore).
- ĂshtĂ« shtuar cilĂ«simi glibc.rtld.execstack, pĂ«rmes tĂ« cilit mund tĂ« ndalohet shprehimisht pĂ«rdorimi i stack-ut ekzekutiv.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r ABI-nĂ« e zgjerueshme rseq (sekuenca qĂ« mund tĂ« rivendosen), qĂ« ofron njĂ« mekanizĂ«m pĂ«r ekzekutimin e shpejtĂ« atomik tĂ« operacioneve (nĂ« rast se njĂ« operacion ndĂ«rpritet nga njĂ« thread tjetĂ«r, gjendja kthehet dhe pĂ«rpjekja pĂ«r ekzekutimin pĂ«rsĂ«ritet). NĂ« versionin e ri, ka mundĂ«si pĂ«r tĂ« pĂ«rdorur nĂ« rseq karakteristika tĂ« zgjeruara, qĂ« mungojnĂ« nĂ« ABI-nĂ« origjinale, tĂ« tilla si identifikuesit e ekzekutimit tĂ« paralel (mm_cid, memory-map concurrency ID) dhe identifikuesit e nyjĂ«s NUMA (node_id).
- ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r portin nĂ« sistemet big-endian ARC (arceb-linux-gnu).
- ĂshtĂ« eliminuar njĂ« dobĂ«si (CVE-2025-039) qĂ« çon nĂ« mbushjen e tamponit gjatĂ« ekzekutimit tĂ« funksionit assert(). Mbushja ndodh kur tregohet njĂ« emĂ«r programi shumĂ« i madh (argv[0]). Problemi konsiderohet si i pashqetĂ«sueshĂ«m, pasi 4 byte shkruhen jashtĂ« tamponit, pĂ«rmbajtja e tĂ« cilave nuk mund tĂ« kontrollohet nga sulmuesi. NdĂ«rkohĂ«, interesant Ă«shtĂ« vetĂ« fakti qĂ« nĂ« funksionet e debugging Ă«shtĂ« shfaqur njĂ« dobĂ«si e cila lind nga njĂ« gabim gjatĂ« printimit tĂ« emrit tĂ« aplikacionit aktual.
Burimi: opennet.ru
