Po šiestich mesiacoch vývoja bol publikovaný release systémovej knižnice GNU C Library 2.43 (glibc), ktorá plne vyhovuje požiadavkám noriem ISO C23 a POSIX.1-2024. Na vytvorení nového vydania sa podieľalo 69 vývojárov.
Medzi realizované vylepšenia v Glibc 2.43 patrí:
- Pridaná experimentálna možnosť zostavenia kompilátorom Clang, ktorá je zatiaľ dostupná len pre platformy aarch64-linux-gnu a x86_64-linux-gnu pri použití runtime kompatibilného s libgcc. Na zostavenie Glibc je potrebná aspoň verzia Clang 18.
- Pre systémy Linux bola pridaná funkcia mseal(), ktorá umožňuje procesom nastaviť zámok na zmenu určitých častí ich adresného priestoru.
- Pre systémy Linux bola pridaná funkcia openat2(), ktorá na rozdiel od funkcie openat() podporuje súbor dodatočných vlajok na obmedzenie povolenia súborovej cesty (zákaz prekonávania bodov pripojenia, symbolických odkazov, magic-odkazov (\/proc\/PID\/fd), komponentov „..\/“).
- Boli pridané funkcie free_sized, free_aligned_sized, memset_explicit a memalignment, ktoré sa objavili v štandarde C23.
- V súlade so štandardom C23 je volanie assert definované ako makro s premenným počtom argumentov, podporujúce výrazy s čiarkou vo vnútri inicializátora.
- V súlade so štandardom C23 boli funkcie bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr a wmemchr, ktoré vracajú ukazovatele na vstupné polia, predefinované ako makrá vracajúce ukazovateľ na typ s kvalifikátorom „const“, ak je vstupný argument ukazovateľom na typ s kvalifikátorom „const“.
- Do hlavičkového súboru math.h boli pridané definície typov long_double_t, _Float32_t, _Float64_t a _Float128_t, ktoré sa objavili v štandarde C23.
- Boli pridané voliteľné režimy počítania času TIME_MONOTONIC (nepretržite sa zvyšujúci čas, nezávislý od zmeny systémových hodín), TIME_ACTIVE a TIME_THREAD_ACTIVE (čas aktívneho vykonávania procesu alebo vlákna) na použitie vo funkcii timespec_get.
- Z projektu CORE-MATH boli prenesené optimalizované varianty matematických funkcií acosh, asinh, atanh, erf, erfc, lgamma a tgamma.
- Boli pridané optimalizované implementácie funkcií fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) a frexpl (intel96).
- Zvýšený výkon matematických funkcií acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 a yn/jn, vďaka odstráneniu kódu na spracovanie chýb SVID (volanie užívateľskej funkcie matherr pri chybe) pre nové zostavy (pre zachovanie kompatibility s už zostavenými programami zostali v režime compat).
- Na systémoch x86 bola pridaná podpora procesorov Intel Nova Lake a Wildcat Lake.
- Na systémoch AArch64 bola funkcia malloc predvolene povolená s podporou veľkých pamäťových strán (transparent huge pages) s veľkosťou 2MB (parameter ibc.malloc.hugetlb je teraz nastavený na 1). Vo funkcii clone() bola implementovaná deaktivácia stavu ZA (Z-Array) na CPU s podporou rozšírenia SME (Scalable Matrix Extension).
- Pre systémy AArch64, ktoré podporujú rozšírenie BTI (Branch Target Identification), bola pridaná konfigurácia glibc.cpu.aarch64_bti, ktorá umožňuje vynútiť aktiváciu BTI pre všetky spustiteľné súbory a knižnice. BTI zabezpečuje blokovanie prechodov na ľubovoľné miesta kódu na ochranu pred vytváraním gadgetov v exploitách, ktoré používajú techniky návratového orientovaného programovania.
- Na systémoch AArch64, ktoré podporujú jedno z rozšírení na ochranu vetvenia (Branch Target Identification alebo Guarded Control Stack), bolo povolené použitie premennej prostredia „LD_DEBUG=security“ na výstup varovaní linkerom pri načítaní spustiteľných súborov a knižníc, ktoré tieto rozšírenia nepodporujú.
- Pre systémy AArch64 boli pridané vektorové varianty funkcií exp2m1, exp10m1, log10p1, log2p1 a rsqrt.
- Pre architektúru RISC-V bola pridaná optimalizovaná implementácia funkcie memset, využívajúca rozšírenie RVV (RISC-V Vector).
- V testovacej sade bola výrazne rozšírená kontrola mnohothreadovania a funkcií scanf, strerror a strsignal.
- Údaje o kódovaní, informácie o typoch znakov a tabuľky transliterácie boli aktualizované na podporu špecifikácie Unicode 17.0.0.
- V implementácii funkčnosti LD_PROFILE sa prestalo používať predvolené umiestnenie (var/tmp) na zapisovanie profilovacích údajov. Pre zachovanie týchto údajov je teraz vyžadované explicitné určenie umiestnenia prostredníctvom premennej prostredia LD_PROFILE_OUTPUT.
- Boli odstránené zraniteľnosti:
- CVE-2026-0861 — pretečenie celých čísel vo funkcii memalign, ktoré vedie k poškodeniu zásobníka.
- CVE-2026-0915 — únik obsahu zásobníka vo funkciách getnetbyaddr a getnetbyaddr_r.
- CVE-2025-15281 — návrat neinitializovanej pamäte, ktorá môže obsahovať zvyškové dáta pri použití funkcie wordexp s parametrami WRDE_REUSE a WRDE_APPEND.
Navyše, po roku vývoja projekt Cygwin zverejnil vydanie štandardnej C knižnice newlib 4.6.0, ktorá je vyvíjaná inžiniermi z Red Hat. Knižnica sa zameriava na poskytovanie kompaktného spracovania štandardnej C knižnice (libc), vhodnej na použitie v embedded systémoch s malým množstvom trvalého úložiska a operačnej pamäte. Kód projektu je napísaný v jazyku C a je distribučný pod licenciou LGPLv2.
V novej verzii newlib:
- Rozšírená podpora špecifikácie POSIX.1-2024.
- Zvýšený výkon funkcií memcpy, mempcpy a memmove.
- Pridaná možnosť „—enable-newlib-hw-misaligned-access“.
- Optimalizovaná architektúra RISC-V pre funkcie série mem* a str*.
- Prepracovaný kód spracovania lokalít, ktorý sa zbavil globálnej premennej global_locale_string v prospech samostatných premenných locale_string pre každý objekt lokality s typom locale_t.
- Pridaná podpora novej platformy m68k-atari-elf.
- Z knižnice FreeBSD gdtoa bol presunutý kód strtorQ.c, ktorý sa využíva na implementáciu podpory 128-bitového typu „long double“ vo funkcii strtold.
- Údaje kódovania boli aktualizované na Unicode 17.0.
Zdroj: opennet.ru
