Hat hónapnyi fejlesztés után megjelent a GNU C Library 2.43 (glibc) rendszerkönyvtár kiadása, amely teljes mértékben megfelel az ISO C23 és a POSIX.1-2024 szabványok követelményeinek. Az új verzió elkészítésében 69 fejlesztő vett részt.
A Glibc 2.43-ban megvalósított fejlesztések között említést érdemel:
- Hozzáadták a Clang fordítóval való építés kísérleti lehetőségét, amely jelenleg csak az aarch64-linux-gnu és x86_64-linux-gnu platformok számára elérhető, ha a futási idő kompatibilis a libgcc-vel. A Glibc építéséhez legalább Clang 18-as verzió szükséges.
- Linux rendszerekhez hozzáadták az mseal() függvényt, amely lehetővé teszi a folyamatok számára, hogy zárolják a saját címtartományuk bizonyos részeinek megváltoztatását.
- Linux rendszerekhez hozzáadták az openat2() függvényt, amely az openat() függvényhez képest további zászlókat támogat a fájlpálya engedélyezésének korlátozásához (megakadályozva a csatolási pontok, szimbolikus hivatkozások, varázshivatkozások (/proc/PID/fd), és a ".. /" elemek átlépését).
- Hozzáadták a free_sized, free_aligned_sized, memset_explicit és memalignment függvényeket, amelyek a C23 szabványban jelentek meg.
- A C23 szabvány szerint az assert hívása egy változó számú argumentummal rendelkező makroszként van meghatározva, támogatva a vesszővel elválasztott kifejezéseket az inicializálóban.
- A C23 szabvány szerint a bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr és wmemchr függvények, amelyek mutatókat adnak vissza a bemeneti tömbökre, makroszként vannak újradefiniálva, amely const kvalifikátorú típust ad vissza, ha a bemeneti argumentum egy const kvalifikátorú típusra mutató mutató.
- A math.h fejlécfájlhoz hozzáadták a long_double_t, _Float32_t, _Float64_t és _Float128_t típusok definícióit, amelyek a C23 szabványban jelentek meg.
- Hozzáadtak opcionális időszámítási módokat: TIME_MONOTONIC (folyamatosan növekvő idő, amely független a rendszerórák változásától), TIME_ACTIVE és TIME_THREAD_ACTIVE (a folyamat vagy szál aktív végrehajtási ideje) a timespec_get függvény használatára.
- A CORE-MATH projekttől át lett másolva az acosh, asinh, atanh, erf, erfc, lgamma és tgamma matematikai függvények optimalizált változata.
- Hozzáadták az fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) és frexpl (intel96) függvények optimalizált megvalósításait.
- Javították a matematikai függvények teljesítményét, mint az acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 és yn/jn, az SVID hibakezelő kód eltávolításával (a matherr felhasználói függvény hívása hiba esetén) az új verziókhoz (a már összeállított programok kompatibilitásának megőrzése érdekében ezek a kompatibilitási módra vannak állítva).
- x86 rendszereken hozzáadva az Intel Nova Lake és Wildcat Lake processzorok támogatása.
- A memória allokáló malloc funkcióban AArch64 rendszereken alapértelmezés szerint engedélyezve van a 2MB méretű nagy oldalak (transparent huge pages) támogatása (az ibc.malloc.hugetlb paraméter most 1-re van állítva). A clone() függvényben megvalósításra került a ZA (Z-Array) állapot kikapcsolása az SME (Scalable Matrix Extension) kiterjesztést támogató CPU-kon.
- A BTI (Branch Target Identification) kiterjesztést támogató AArch64 rendszerekhez hozzáadva a glibc.cpu.aarch64_bti beállítás, amely lehetővé teszi a BTI kötelező aktiválását minden végrehajtható fájl és könyvtár számára. A BTI megakadályozza, hogy az átirányítások tetszőleges kódterületekre történjenek, ezzel ellensúlyozva a gadgetek létrehozását a visszatérés-alapú programozás exploitjaiban.
- A Branch Target Identification vagy Guarded Control Stack kiterjesztések védelmét támogató AArch64 rendszereken engedélyezve van az 'LD_DEBUG=security' környezeti változó használata, amely lehetővé teszi a linker figyelmeztetéseinek megjelenítését végrehajtható fájlok és könyvtárak betöltésekor, amelyek nem támogatják ezeket a kiterjesztéseket.
- A AArch64 rendszerekhez vektorizált verziók kerültek hozzáadásra az exp2m1, exp10m1, log10p1, log2p1 és rsqrt függvényekhez.
- A RISC-V architektúrához hozzáadva egy optimalizált memset funkció, amely az RVV (RISC-V Vector) kiterjesztést használja.
- A teszthalmaz szignifikánsan bővítette a több szálú ellenőrzéseket és a scanf, strerror és strsignal funkciókat.
- A kódolások adatai, a karaktertípusok információi és a transliterációs táblák frissítve lettek a Unicode 17.0.0 specifikáció támogatására.
- Az LD_PROFILE funkcionalitás megvalósítása során megszűnt az alapértelmezett könyvtár (\/var\/tmp) használata a profilozási adatok tárolására. Az ilyen adatok tárolásához most már explicit módon meg kell határozni a könyvtárat az LD_PROFILE_OUTPUT környezeti változón keresztül.
- Sebezhetőségek kiküszöbölve:
- CVE-2026-0861 — egész számok túllépése a memalign függvényben, amely a heap sérüléséhez vezet.
- CVE-2026-0915 — a verem tartalmának szivárgása a getnetbyaddr és getnetbyaddr_r függvényekben.
- CVE-2025-15281 — vissza nem inicializált memória visszatérítése, amely maradék adatokat tartalmazhat, a wordexp függvény WRDE_REUSE és WRDE_APPEND paramétereivel történő használatakor.
Továbbá, egy év fejlesztés után a Cygwin projekt kiadta az új standard C könyvtár newlib 4.6.0 verzióját, amelyet a Red Hat mérnökei fejlesztenek. A könyvtár célja egy tömör standard C könyvtár (libc) megvalósításának biztosítása, amely beágyazott rendszereken használható kis állandó tároló- és RAM mérettel. A projekt kódját C nyelven írták, és az LGPLv2 licenc alatt terjesztik.
Az új newlib verzióban:
- Bővült a POSIX.1-2024 specifikáció támogatása.
- Javult a memcpy, mempcpy és memmove függvények teljesítménye.
- Hozzáadva az „—enable-newlib-hw-misaligned-access” opció.
- Az RISC-V architektúrára optimalizálták a mem* és str* funkciókat.
- A lokalizációk kezelésének kódja át lett dolgozva, amely megszüntette a global_locale_string globális változót azzal, hogy minden lokalitás számára külön locale_string változókat vezettek be a locale_t típusú objektumokhoz.
- Támogatás hozzáadva az új m68k-atari-elf platformhoz.
- A FreeBSD könyvtárból, a gdtoa-ból átvették a strtorQ.c kódot, amely a 'long double' típus 128-bites támogatásának megvalósításához szükséges a strtold függvényben.
- A kódolási adatok frissítve lettek az Unicode 17.0-ra.
Forrás: opennet.ru
