A Glibc 2.43 és newlib 4.6.0 standard C könyvtárak kiadása

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster