Po šesti měsících vývoje byl vydán nový release systémové knihovny GNU C Library 2.43 (glibc), která plně vyhovuje požadavkům standardů ISO C23 a POSIX.1-2024. Na vytváření nového vydání se podílelo 69 vývojářů.
Mezi implementovaná vylepšení v Glibc 2.43 patří:
- Byla přidána experimentální možnost kompilace pomocí kompilátoru Clang, která je zatím dostupná pouze pro platformy aarch64-linux-gnu a x86_64-linux-gnu při použití runtime kompatibilního s libgcc. K sestavení Glibc je potřeba alespoň verze Clang 18.
- Pro systémy Linux byla přidána funkce mseal(), která umožňuje procesům uzamknout změnu určitých částí své adresní prostory.
- Pro systémy Linux byla přidána funkce openat2(), na rozdíl od funkce openat() podporující sadu dalších příznaků pro omezení oprávnění k souborové cestě (zákaz překročení bodů připojení, symbolických odkazů, magic-odkazů (/proc/PID/fd), komponent „..“).
- Byly přidány funkce free_sized, free_aligned_sized, memset_explicit a memalignment, které se objevily ve standardu C23.
- V souladu se standardem C23 je volání assert definováno jako makro s proměnným počtem argumentů, které podporuje výrazy s čárkou uvnitř inicializátoru.
- V souladu se standardem C23 byly funkce bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr a wmemchr, které vracejí ukazatele na vstupní pole, předefinovány jako makra, která vracejí ukazatel typu s kvalifikátorem „const“, pokud je vstupní argument ukazatelem na typ s kvalifikátorem „const“.
- Do hlavičkového souboru math.h byly přidány definice typů long_double_t, _Float32_t, _Float64_t a _Float128_t, které se objevily ve standardu C23.
- Byly přidány volitelné režimy výpočtu času TIME_MONOTONIC (stabilně se zvyšující čas, nezávislý na změnách systémových hodin), TIME_ACTIVE a TIME_THREAD_ACTIVE (čas aktivního provádění procesu nebo vlákna) pro použití v funkci timespec_get.
- Z projektu CORE-MATH byly přeneseny optimalizované varianty matematických funkcí acosh, asinh, atanh, erf, erfc, lgamma a tgamma.
- Byly přidány optimalizované implementace funkcí fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) a frexpl (intel96).
- Byla zvýšena výkonnost matematických funkcí acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 a yn/jn díky odstranění kódu pro zpracování chyb SVID (volání uživatelské funkce matherr při chybě) pro nové sestavení (pro zachování kompatibility se již zkompilovanými programy byly ponechány v režimu compat).
- Na systémech x86 byla přidána podpora procesorů Intel Nova Lake a Wildcat Lake.
- Na systémech AArch64 je ve funkci malloc standardně povolena podpora velkých paměťových stránek (transparent huge pages) o velikosti 2MB (nastavení ibc.malloc.hugetlb je nyní nastaveno na 1). Ve funkci clone() bylo implementováno vypnutí stavu ZA (Z-Array) na CPU s podporou rozšíření SME (Scalable Matrix Extension).
- Pro systémy AArch64, které podporují rozšíření BTI (Branch Target Identification), byla přidána konfigurace glibc.cpu.aarch64_bti, která umožňuje vynucené aktivaci BTI pro všechny spustitelné soubory a knihovny. BTI zajišťuje blokování přechodů na libovolné části kódu, aby se zabránilo vytváření gadgetů v exploitech, které využívají techniky orientované na návrat.
- Na systémech AArch64, které podporují jedno z rozšíření pro ochranu větvení (Branch Target Identification nebo Guarded Control Stack), je povoleno použití proměnné prostředí "LD_DEBUG=security" k výpisu varování linkeru při načítání spustitelných souborů a knihoven, které tato rozšíření nepodporují.
- Pro systémy AArch64 byly přidány vektorové varianty funkcí exp2m1, exp10m1, log10p1, log2p1 a rsqrt.
- Pro architekturu RISC-V byla přidána optimalizovaná implementace funkce memset, která využívá rozšíření RVV (RISC-V Vector).
- V testovacím souboru byla významně rozšířena kontrola vícerozměrnosti a funkcí scanf, strerror a strsignal.
- Data kódování, informace o typech znaků a tabulky transliterace byly aktualizovány na podporu specifikace Unicode 17.0.0.
- V implementaci funkce LD_PROFILE bylo ukončeno používání výchozího adresáře (/var/tmp) pro ukládání dat profilu. Pro uchování těchto dat je nyní vyžadováno explicitní určení adresáře prostřednictvím proměnné prostředí LD_PROFILE_OUTPUT.
- Opraveny zranitelnosti:
- CVE-2026-0861 — celočíselné přetečení ve funkci memalign, které vede k poškození haldy.
- CVE-2026-0915 — únik obsahu zásobníku ve funkcích getnetbyaddr a getnetbyaddr_r.
- CVE-2025-15281 – návrat neinicializované paměti, která může obsahovat zbytková data, při použití funkce wordexp s parametry WRDE_REUSE a WRDE_APPEND.
Kromě toho, po roce vývoje projekt Cygwin publikoval vydání standardní knihovny C newlib 4.6.0, rozvíjené inženýry z firmy Red Hat. Knihovna se zaměřuje na poskytnutí kompaktní implementace standardní knihovny C (libc), vhodné pro použití na vestavěných systémech s malým množstvím trvalého úložiště a operační paměti. Kód projektu je napsán v jazyce C a je distribuován pod licencí LGPLv2.
V nové verzi newlib:
- Byla rozšířena podpora specifikace POSIX.1-2024.
- Byl zvýšen výkon funkcí memcpy, mempcpy a memmove.
- Byla přidána volba „—enable-newlib-hw-misaligned-access“.
- Byla optimalizována architektura RISC-V pro funkce série mem* a str*.
- Byl přepracován kód zpracování lokalizací, který je zbaven globální proměnné global_locale_string ve prospěch jednotlivých proměnných locale_string pro každý objekt lokalizace typu locale_t.
- Byla přidána podpora nové platformy m68k-atari-elf.
- Z knihovny FreeBSD gdtoa byl přenesen kód strtorQ.c, který je zapojen do implementace podpory 128bitového typu „long double“ ve funkci strtold.
- Data kódování byla aktualizována na Unicode 17.0.
Zdroj: opennet.ru
