Efter sex mÄnaders utveckling har den systembiblioteket GNU C Library 2.43 (glibc) publicerats, vilket helt följer kraven i ISO C23 och POSIX.1-2024. 69 utvecklare deltog i skapandet av den nya versionen.
Bland förbÀttringarna i Glibc 2.43 kan nÀmnas:
- En experimentell möjlighet för kompilering med Clang har lagts till, som för nÀrvarande bara Àr tillgÀnglig för plattformarna aarch64-linux-gnu och x86_64-linux-gnu vid anvÀndning av runtime kompatibel med libgcc. För att kompilera Glibc krÀvs Ätminstone version Clang 18.
- För Linux-system har funktionen mseal() lagts till, vilket gör att processer kan sÀtta lÄs pÄ Àndring av vissa delar av sitt adressutrymme.
- För Linux-system har funktionen openat2() lagts till, vilken, till skillnad frÄn funktionen openat(), stöder en uppsÀttning ytterligare flaggor för att begrÀnsa filvÀgsbehörigheten (förbjuder överlappning av monteringspunkter, symboliska lÀnkar, magic-lÀnkar (/proc/PID/fd), komponenter "../").
- Funktionerna free_sized, free_aligned_sized, memset_explicit och memalignment, som introducerades i standarden C23, har lagts till.
- I enlighet med standarden C23 har anropet assert definierats som en makro med variabelt antal argument, som stöder kommateckenuttryck inom initialiseraren.
- I enlighet med standarden C23 har funktionerna bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr och wmemchr, som returnerar pekare till ingÄngsmatriser, omdefinierats som makron som returnerar pekare av typen med kvalificeraren "const", om ingÄngsargumentet Àr en pekare till typen med kvalificeraren "const".
- I header-filen math.h har definitioner av typerna long_double_t, _Float32_t, _Float64_t och _Float128_t, som introducerades i standarden C23, lagts till.
- Valbara lÀgen för tidsberÀkning TIME_MONOTONIC (konstant ökande tid som inte pÄverkas av förÀndringar i systemklockor), TIME_ACTIVE och TIME_THREAD_ACTIVE (tiden för aktivt körande av processen eller trÄden) har lagts till för anvÀndning i funktionen timespec_get.
- Optimiserade versioner av matematiska funktioner som acosh, asinh, atanh, erf, erfc, lgamma och tgamma har överförts frÄn projektet CORE-MATH.
- Optimiserade implementationer av funktionerna fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) och frexpl (intel96) har lagts till.
- Prestandan för matematiska funktioner som acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 och yn/jn har ökats genom att felhanteringskoden SVID (anrop av anvÀndarfunktionen matherr vid fel) har tagits bort för nya versioner (för att bevara kompatibiliteten med redan sammanstÀllda program har de lÀmnats i kompatibilitetslÀge).
- PÄ x86-system har stöd lagts till för Intel Nova Lake och Wildcat Lake-processorer.
- PÄ AArch64-system Àr stöd för stora minnessidor (transparent huge pages) av storlek 2MB som standard aktiverat i malloc-funktionen (parametern ibc.malloc.hugetlb Àr nu instÀlld pÄ 1). I clone()-funktionen har inaktivering av ZA-tillstÄndet (Z-Array) implementerats pÄ CPU:er som stöder SME (Scalable Matrix Extension).
- För AArch64-system som stöder BTI (Branch Target Identification) har instÀllningen glibc.cpu.aarch64_bti lagts till, vilket tvingar BTI att aktiveras för alla körbara filer och bibliotek. BTI blockerar övergÄngar till godtyckliga kodsnuttar för att motverka skapandet av gadgets i exploateringar som anvÀnder Äterkopplingsorienterad programmering.
- PÄ AArch64-system som stöder ett av de skyddande branch-target-identifikationssystemen (Branch Target Identification eller Guarded Control Stack) Àr anvÀndning av miljövariabeln "LD_DEBUG=security" tillÄten för att ge lÀnkaren varningar vid laddning av körbara filer och bibliotek som inte stöder dessa utökningar.
- För AArch64-system har vektorvarianter av funktionerna exp2m1, exp10m1, log10p1, log2p1 och rsqrt lagts till.
- För RISC-V-arkitekturen har en optimerad implementation av funktionen memset, som anvÀnder RVV (RISC-V Vector), lagts till.
- I testsviten har kontrollen för multitrÄdning och funktionerna scanf, strerror och strsignal kraftigt utökats.
- Kodningsdata, information om teckentyper och translittereringstabeller har uppdaterats för att stödja Unicode-specifikationen 17.0.0.
- I implementationen av funktionaliteten LD_PROFILE har anvÀndningen av standardkatalogen (/var/tmp) för att skriva profileringdata upphört. För att bevara sÄdana data krÀvs nu en explicit angivelse av katalogen genom miljövariabeln LD_PROFILE_OUTPUT.
- SÄrbarheter ÄtgÀrdade:
- CVE-2026-0861 â heltalsöverflöd i funktionen memalign som leder till skador pĂ„ heap.
- CVE-2026-0915 â lĂ€cka av stackinnehĂ„ll i funktionerna getnetbyaddr och getnetbyaddr_r.
- CVE-2025-15281 â Ă„terkomst av oinitialiserat minne som kan innehĂ„lla resterande data nĂ€r funktionen wordexp anvĂ€nds med parametrarna WRDE_REUSE och WRDE_APPEND.
Dessutom har projektet Cygwin, efter ett Ärs utveckling, publicerat en version av den standardiserade C-biblioteket newlib 4.6.0, som utvecklats av ingenjörer frÄn företaget Red Hat. Biblioteket Àr inriktat pÄ att tillhandahÄlla en kompakt implementation av det standardiserade C-biblioteket (libc) som Àr lÀmplig för anvÀndning pÄ inbyggda system med begrÀnsat lagringsutrymme och RAM. Projektets kod Àr skriven i C och distribueras under LGPLv2-licensen.
I den nya versionen av newlib:
- Stödet för specifikationen POSIX.1-2024 har utökats.
- Prestandan hos funktionerna memcpy, mempcpy och memmove har förbÀttrats.
- En ny instĂ€llning "âenable-newlib-hw-misaligned-access" har lagts till.
- Arkitekturen för RISC-V har optimerats för funktionerna mem* och str*.
- Koden för lokalitetsbehandling har omarbetats och befriats frÄn den globala variabeln global_locale_string till förmÄn för separata variabler locale_string för varje lokalitetsobjekt av typen locale_t.
- Stöd för den nya plattformen m68k-atari-elf har lagts till.
- Koden strtorQ.c frÄn FreeBSD-biblioteket gdtoa har flyttats, vilket möjliggör stöd för 128-bitars typen "long double" i funktionen strtold.
- Kodningsdata har uppdaterats till Unicode 17.0.
KĂ€lla: opennet.ru
