Megérkezett a glibc 2.42: új funkciók, CVE-javítások és teljesítményjavulás

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

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:

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.