Pas pas gjashtë muajsh zhvillimi është publikuar lëshimi i bibliotekës së sistemit GNU C Library 2.43 (glibc), e cila i përmbahet plotësisht kërkesave të standarteve ISO C23 dhe POSIX.1-2024. Në krijimin e këtij versioni morën pjesë 69 zhvillues.
Nga përmirësimet e realizuara në Glibc 2.43 mund të përmenden:
- ĂshtĂ« shtuar njĂ« mundĂ«si eksperimentale pĂ«r ndĂ«rtimin me kompajlerin Clang, e cila aktualisht Ă«shtĂ« e disponueshme vetĂ«m pĂ«r platformat aarch64-linux-gnu dhe x86_64-linux-gnu duke pĂ«rdorur runtime, tĂ« cilĂ«s i korrespondon libgcc. PĂ«r ndĂ«rtimin e Glibc kĂ«rkohet tĂ« paktĂ«n versioni Clang 18.
- Për sistemet Linux është shtuar funksioni mseal(), i cili lejon proceset të vendosin një bllokim për ndryshimin e pjesëve të caktuara të hapësirës së tyre adresuese.
- Për sistemet Linux është shtuar funksioni openat2(), i cili, ndryshe nga funksioni openat(), mbështet një grup shtesash të flamujve për të kufizuar lejet e rrugëve të skedarëve (ndalimi i kalimeve të pikave të montimit, linkeve simbolike, linkeve magjike (/proc/PID/fd), dhe komponenteve «..»).
- Janë shtuar funksionet free_sized, free_aligned_sized, memset_explicit dhe memalignment, të cilat janë shfaqur në standardin C23.
- Sipas standardit C23, thirrja e assert është përcaktuar si makro me numër të ndryshueshëm argumentesh, e cila mbështet shprehjet me presje brenda inicializuesit.
- Sipas standardit C23, funksionet bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr dhe wmemchr, që kthejnë tregues në masat hyrëse, janë rishkruar si makro, duke kthyer një tregues të llojit me kufizues «const», nëse argumenti hyrës është tregues i një lloji me kufizues «const».
- Në skedarin e titullit math.h janë shtuar definicionet e tipave long_double_t, _Float32_t, _Float64_t dhe _Float128_t, të cilat janë shfaqur në standardin C23.
- Janë shtuar mënyra opsionale të llogaritjes së kohës TIME_MONOTONIC (koha që rritet vazhdimisht, e pavarur nga ndryshimi i orëve të sistemit), TIME_ACTIVE dhe TIME_THREAD_ACTIVE (koha e ekzekutimit aktiv të procesit ose thread-it) për përdorim në funksionin timespec_get.
- Nga projekti CORE-MATH janë transferuar variante të optimizuara të funksioneve matematikore acosh, asinh, atanh, erf, erfc, lgamma dhe tgamma.
- Janë shtuar implementime të optimizuara të funksioneve fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) dhe frexpl (intel96).
- Performanca e funksioneve matematikore acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 dhe yn/jn është rritur fal eliminimit të kodit të trajtimit të gabimeve SVID (thirrja e funksionit të përdoruesit matherr në rast gabimi) për ndërtimet e reja (për të ruajtur kompatibilitetin me programet tashmë të ndërtuara, ato janë lënë në modin compat).
- Në sistemet x86 është shtuar mbështetje për procesorët Intel Nova Lake dhe Wildcat Lake.
- Në sistemet AArch64, funksioni malloc tani përfshin mbështetje për faqe të mëdha memorje (transparent huge pages) me madhësi 2MB (parametri ibc.malloc.hugetlb tani është vendosur në 1). Në funksionin clone() është realizuar çaktivizimi i gjendjes ZA (Z-Array) në CPU-të me mbështetje për zgjerimin SME (Scalable Matrix Extension).
- Për sistemet AArch64 që mbështesin zgjerimin BTI (Branch Target Identification), është shtuar konfigurimi glibc.cpu.aarch64_bti, i cili lejon aktivizimin e detyrueshëm të BTI për të gjithë skedarët ekzekutues dhe bibliotekat. BTI siguron bllokimin e kalimeve në pjesë të rastësishme të kodit për të parandaluar krijimin e gadgeteve në eksploitët që përdorin teknikat e programimit të orientuar drejt rikthimit.
- Në sistemet AArch64, që mbështesin një nga zgjerimet për mbrojtjen e degëzimit (Branch Target Identification ose Guarded Control Stack), është lejuar përdorimi i variablës së ambientit 'LD_DEBUG=security' për të prodhuar paralajmërime nga linker gjatë ngarkesës së skedarëve ekzekutues dhe bibliotekave që nuk mbështesin këto zgjerime.
- Për sistemet AArch64 janë shtuar variante vektoriale të funksioneve exp2m1, exp10m1, log10p1, log2p1 dhe rsqrt.
- Për arkitekturën RISC-V është shtuar një implementim i optimizuar i funksionit memset, që përdor zgjerimin RVV (RISC-V Vector).
- Në grupin e testeve është zgjeruar në mënyrë të konsiderueshme kontrolli i shumëprocës dhe funksioneve scanf, strerror dhe strsignal.
- Të dhënat e kodimeve, informacioni rreth tipeve të karaktereve dhe tabelat e transliterimit janë përditësuar për të mbështetur specifikimin Unicode 17.0.0.
- Në implementimin e funksionalitetit LD_PROFILE, është ndalur përdorimi i katalogut të paracaktuar (/var/tmp) për të regjistruar të dhënat e profilizimit. Për të ruajtur të tilla të dhëna tani kërkohet një përcaktim i shprehur për katalogun për to përmes variablës së ambientit LD_PROFILE_OUTPUT.
- Janë eliminuar vulnerabilitetet:
- CVE-2026-0861 â tejkalimi i numrit tĂ« plotĂ« nĂ« funksionin memalign, qĂ« çon nĂ« dĂ«mtimin e grumbullit.
- CVE-2026-0915 â rrjedhja e pĂ«rmbajtjes sĂ« stack-ut nĂ« funksionet getnetbyaddr dhe getnetbyaddr_r.
- CVE-2025-15281 â rikthimi i memorjes sĂ« pa inicializuar, e cila mund tĂ« pĂ«rmbajĂ« tĂ« dhĂ«na mbetĂ«se, kur pĂ«rdoret funksioni wordexp me parametrat WRDE_REUSE dhe WRDE_APPEND.
Për më tepër, pas një viti zhvillimi, projekti Cygwin publikoi lirimin e bibliotekës standarde të gjuhës C newlib 4.6.0, e zhvilluar nga inxhinierët e kompanisë Red Hat. Biblioteka është orientuar drejt ofrimit të një realizimi kompakt të bibliotekës standarde të gjuhës C (libc), e përshtatshme për përdorim në sisteme të embedded me një sasi të vogël hapësire të përhershme dhe memorie të përkohshme. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën LGPLv2.
Në versionin e ri të newlib:
- është zgjeruar mbështetja për specifikimin POSIX.1-2024.
- ĂshtĂ« rritur performanca e funksioneve memcpy, mempcpy dhe memmove.
- Ă«shtĂ« shtuar opsioni "âenable-newlib-hw-misaligned-access".
- është optimizuar arkitektura RISC-V e funksioneve të serisë mem* dhe str*.
- Kabllosja e kodit për trajtimin e locale-ve është ripunuar, duke hequr variablin global global_locale_string në favor të variablave të veçantë locale_string për çdo objekt locale me tipin locale_t.
- është shtuar mbështetje për platformën e re m68k-atari-elf.
- Kodi strtorQ.c është transferuar nga biblioteca gdtoa e FreeBSD, e cila aktivizohet për të mbështetur tipin 128-bit "long double" në funksionin strtold.
- Të dhënat e kodimit janë përditësuar deri në Unicode 17.0.
Burimi: opennet.ru
