
Hat hónapnyi fejlesztés után a GNU projekt csendesen kiadta a glibc 2.42-es verzióját, amely a Linux rendszerek egyik legfontosabb alaprendszer-könyvtára. A glibc (GNU C Library) kulcsszerepet játszik a felhasználói programok és a kernel közötti kapcsolattartásban. Az új verzió az ISO C23 szabvány támogatására fókuszál, miközben biztonsági javításokat és teljesítményoptimalizálást is tartalmaz. A glibc 2.42 egyik fő célkitűzése a közelgő ISO C23 nyelvi szabvány jobb támogatása. Ennek részeként több új matematikai segédfüggvény került be a <math.h> fejlécekbe, köztük:
- compoundn
- pown
- powr
- rootn
- az úgynevezett „quick-and-dirty” (gyors, de kevésbé pontos) rsqrt család
Ezek a függvények a numerikus számítások optimalizálására szolgálnak, például a rsqrt (reciprocal square root) különösen elterjedt grafikában, fizikában és gépi tanulásban.
A <tgmath.h> típusfüggetlen makrókat (type-generic macros) is kapott az új függvényekhez, hogy egységes és egyszerű hívást biztosítsanak különböző numerikus típusokra.
További újdonság a C2Y szabványban bevezetett unsigned abs függvények, például uabs és ulabs, amelyek a pozitív egész típusok abszolútértékét számolják. Ezek a glibc eddigi hiányosságait pótolják az egész számkezelés területén.
Teljesítmény: gyorsabb memóriakezelés
A malloc által használt szál-lokális gyorsítótár (tcache) jelentős frissítést kapott:
- Mostantól akár 4 MB-os memóriablokkokat is képes gyorsítótárazni.
- A kisebb allokációk is gyorsabbá váltak.
A rendszer-összeállítók számára lehetőség nyílik a működés finomhangolására a „glibc.malloc.tcache_max” nevű tunables beállítással, amely lehetővé teszi a tcache működésének testreszabását.
Ez a fejlesztés több szálat használó alkalmazásoknál érezhető teljesítménynyereséget eredményezhet, különösen olyan környezetekben, ahol sok kis objektum gyors létrehozása és felszabadítása történik, például webszervereken vagy adatbázis-kezelő rendszerekben.
Új függvény a szál-azonosító lekérdezésére
A pthread_gettid_np nevű új segédfüggvény lehetővé teszi, hogy a program platform-függetlenül lekérdezze a kernel szintű szál-azonosítót (thread ID) anélkül, hogy közvetlenül nem hordozható rendszerhívásokhoz (syscall) kellene nyúlni. Ez különösen fontos többplatformos, alacsony szintű szálkezelést használó programok esetében.
SFrame támogatás: kompakt hibakeresési metaadatok
Ha a glibc-t --enable-sframe kapcsolóval fordítják, és Binutils 2.45 vagy újabb verzióval párosítják, akkor a program SFrame támogatást kap. Az SFrame egy könnyű és hatékony megoldás a veremvisszafejtési adatok (stack-unwind metadata) tárolására:
- Kompaktabb, mint a hagyományos DWARF-alapú metaadatok
- Hatékonyabb hibakeresést tesz lehetővé modern debuggerekben
Ez különösen beágyazott rendszerek, nagy teljesítményű szerverek és diagnosztikai eszközök esetében hasznos, ahol a memória- és tárhelyhasználat kritikus tényező.
Új CPU-architektúrák felismerése
A glibc 2.42 automatikusan felismeri az alábbi új processzorarchitektúrákat:
- Intel: Arrow Lake, Panther Lake, Clearwater Forest, Diamond Rapids
- IBM: új z17 mainframe platform
Ez elősegíti az optimalizált műveletek és az architektúra-specifikus kódok automatikus alkalmazását a jövőbeli rendszereken.
Biztonsági javítások: négy CVE orvosolva
A 2.42-es kiadás négy nyilvánosan nyomon követett sérülékenységet (CVE) javít:
- CVE‑2025‑0395: puffertúlcsordulás az assert() üzenetkezelésében
- CVE‑2025‑5702 és CVE‑2025‑5745: Power10 CPU-kon hibás strcmp/strncmp működés a vektorregiszterek hibás felülírása miatt
- CVE‑2025‑8058: dupla felszabadítás (double free) a POSIX reguláris kifejezéseket kezelő motorban
Bár jelenleg nincs tudomásunk aktív kihasználásról, a fejlesztők javasolják, hogy a javított csomagok minél hamarabb kerüljenek be a tesztelési és stabil tárolókba.
Összegzés
A glibc 2.42 egy sok szinten jelentős frissítés: előrelépést jelent a modern C szabványokhoz való igazodásban, gyorsabb memóriakezelést tesz lehetővé, új hibakeresési mechanizmust hoz, miközben kritikus biztonsági réseket zár be. A frissítés különösen fontos fejlesztők, disztribúció-karbantartók és rendszergazdák számára, akik stabilitást, kompatibilitást és jövőállóságot keresnek Linux-alapú rendszereikhez. Az újdonságok megtalálhatóak a kiadási megjegyzésben.
- glibc (GNU C Library): A GNU projekt által fejlesztett szabványos C könyvtár, amely alapvető funkciókat biztosít a Linux és más Unix-szerű rendszerek számára, például a programok és a kernel közötti kommunikációt.
- ISO C23: A C programozási nyelv következő hivatalos nemzetközi szabványa, amely új funkciókat és javításokat vezet be a nyelv használatához.
- <math.h>: A C nyelv szabványos matematikai függvényeket tartalmazó fejléce (header fájlja).
- compoundn, pown, powr, rootn: Új matematikai függvények a hatványozás és gyökvonás különböző változataihoz, amelyek pontosabb vagy hatékonyabb számításokat tesznek lehetővé.
- malloc: A C nyelvben használt dinamikus memóriafoglaló függvény.
- tcache (thread-local cache): Egy gyorsítótár a malloc számára, amely szálanként (thread-local) működik, hogy felgyorsítsa a memóriafoglalást és felszabadítást.
- syscall (rendszerhívás): Az operációs rendszer alapszintű szolgáltatásainak elérésére használt programozási hívás.
- SFrame: Egy új, kompakt formátum a hibakeresési metaadatok (stack-unwind metadata) tárolására, amely kisebb helyet foglal és gyorsabb hibakeresést tesz lehetővé.
- DWARF: Egy hagyományos formátum a hibakeresési információk tárolására, amely általában nagyobb helyet foglal, mint az SFrame.
- stack-unwind metadata: Olyan adatok, amelyeket a hibakeresők használnak a program veremkeretének visszafejtéséhez (stack trace).
- CVE (Common Vulnerabilities and Exposures): Nyilvános adatbázisban nyilvántartott biztonsági hibák és sérülékenységek azonosítója.
- puffertúlcsordulás (buffer overflow): Egy programhiba, amikor több adat kerül egy tárolóba, mint amennyit az képes befogadni, ami biztonsági problémákhoz vezethet.
- double free: Programhiba, amikor egy memóriafoglalás kétszer kerül felszabadításra, ami instabilitáshoz vagy támadásokhoz vezethet.
