Uitgave van de standaard C-bibliotheken Glibc 2.43 en newlib 4.6.0

Na zes maanden ontwikkeling is de release van de GNU C Library 2.43 (glibc) gepubliceerd, die volledig voldoet aan de vereisten van de ISO C23 en POSIX.1-2024 standaarden. Aan de totstandkoming van deze nieuwe versie hebben 69 ontwikkelaars deelgenomen.

Enkele verbeteringen in Glibc 2.43 zijn:

  • Er is een experimentele mogelijkheid toegevoegd om te bouwen met de Clang-compiler, die momenteel alleen beschikbaar is voor de aarch64-linux-gnu en x86_64-linux-gnu platforms met een runtime die compatibel is met libgcc. Voor het bouwen van Glibc is minimaal versie Clang 18 vereist.
  • Voor Linux-systemen is de functie mseal() toegevoegd, die processen in staat stelt om een blokkade te plaatsen op het wijzigen van bepaalde delen van hun geheugenadresruimte.
  • Voor Linux-systemen is de functie openat2() toegevoegd, die in tegenstelling tot de functie openat() een reeks extra vlaggen ondersteunt om de resolutie van het bestandspad te beperken (het verbieden van het oversteken van mountpunten, symbolische links, magic links (\/proc\/PID\/fd), en componenten '...').
  • Functies zoals free_sized, free_aligned_sized, memset_explicit en memalignment, die zijn geĆÆntroduceerd in de C23 standaard, zijn toegevoegd.
  • Volgens de C23 standaard is de aanroep van assert gedefinieerd als een macro met een variabel aantal argumenten, die comma-expressies binnen de initializer ondersteunt.
  • Volgens de C23 standaard zijn de functies bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr en wmemchr, die pointers naar de invoermatrices retourneren, opnieuw gedefinieerd als macro's die een pointer type met de qualifier 'const' retourneren, als het invoerargument een pointer type met de qualifier 'const' is.
  • In de header file math.h zijn de type-definities long_double_t, _Float32_t, _Float64_t en _Float128_t toegevoegd, die zijn geĆÆntroduceerd in de C23 standaard.
  • Optionele tijdmetingen TIME_MONOTONIC (constant toenemende tijd, ongeacht wijzigingen in de systeemklok), TIME_ACTIVE en TIME_THREAD_ACTIVE (de tijd van actieve uitvoering van het proces of de thread) zijn toegevoegd voor gebruik in de functie timespec_get.
  • Geoptimaliseerde varianten van de wiskundige functies acosh, asinh, atanh, erf, erfc, lgamma en tgamma zijn overgebracht vanuit het CORE-MATH project.
  • Geoptimaliseerde implementaties van de functies fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) en frexpl (intel96) zijn toegevoegd.
  • De prestaties van de wiskundige functies acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 en yn/jn zijn verbeterd door de verwijdering van de foutafhandelingscode SVID (de oproep van de gebruikersfunctie matherr bij een fout) voor nieuwe builds (om de compatibiliteit met al gecompileerde programma's te behouden, blijven ze in compat-modus).
  • Onder x86-systemen is ondersteuning voor Intel Nova Lake en Wildcat Lake-processoren toegevoegd.
  • Op AArch64-systemen is in de malloc-functie standaard ondersteuning voor transparante grote pagina's van 2MB ingeschakeld (de parameter ibc.malloc.hugetlb is nu ingesteld op 1). In de clone()-functie is het mogelijk gemaakt om de ZA-status (Z-Array) uit te schakelen op CPU's die de SME (Scalable Matrix Extension) ondersteunen.
  • Voor AArch64-systemen die de BTI (Branch Target Identification)-uitbreiding ondersteunen, is de instelling glibc.cpu.aarch64_bti toegevoegd, waarmee BTI dwingend kan worden geactiveerd voor alle uitvoerbare bestanden en bibliotheken. BTI voorkomt dat overgangen naar willekeurige codegebieden plaatsvinden, om de creatie van gadgets in exploits die technieken voor retour-georiĆ«nteerd programmeren gebruiken, tegen te gaan.
  • Op AArch64-systemen die een van de extensies voor takbescherming (Branch Target Identification of Guarded Control Stack) ondersteunen, is het gebruik van de omgevingsvariabele 'LD_DEBUG=security' toegestaan om waarschuwingen door de linker weer te geven tijdens het laden van uitvoerbare bestanden en bibliotheken die deze extensies niet ondersteunen.
  • Voor AArch64-systemen zijn vectorvarianten van de functies exp2m1, exp10m1, log10p1, log2p1 en rsqrt toegevoegd.
  • Voor de RISC-V-architectuur is een geoptimaliseerde implementatie van de functie memset toegevoegd die gebruikmaakt van de RVV (RISC-V Vector)-uitbreiding.
  • De testset is aanzienlijk uitgebreid met controles voor multithreading en de functies scanf, strerror en strsignal.
  • De coderinggegevens, informatie over het type tekens en transliteratietabellen zijn bijgewerkt ter ondersteuning van de Unicode-specificatie 17.0.0.
  • In de implementatie van de functionaliteit LD_PROFILE is het gebruik van de standaardcatalogus (/var/tmp) voor het opslaan van profileringsgegevens stopgezet. Voor het opslaan van dergelijke gegevens is nu een expliciete definitie van een catalogus vereist via de omgevingsvariabele LD_PROFILE_OUTPUT.
  • Kwetsbaarheden opgelost:
    • CVE-2026-0861 - een gehele getaloverschrijding in de functie memalign, die leidt tot beschadiging van de heap.
    • CVE-2026-0915 - een lek van stackinhoud in de functies getnetbyaddr en getnetbyaddr_r.
    • CVE-2025-15281 — het teruggeven van niet-geĆÆnitialiseerd geheugen, dat mogelijk restgegevens bevat, bij het gebruik van de functie wordexp met de parameters WRDE_REUSE en WRDE_APPEND.

Bovendien heeft het Cygwin-project na een jaar ontwikkeling versie 4.6.0 van de standaard C-bibliotheek newlib gepubliceerd, ontwikkeld door ingenieurs van Red Hat. De bibliotheek is gericht op het bieden van een compacte implementatie van de standaard C-bibliotheek (libc), geschikt voor gebruik op ingebedde systemen met een beperkte hoeveelheid permanente opslag en RAM. De code van het project is geschreven in C en wordt verspreid onder de LGPLv2-licentie.

In de nieuwe versie van newlib:

  • De ondersteuning voor de specificatie POSIX.1-2024 is uitgebreid.
  • De prestaties van de functies memcpy, mempcpy en memmove zijn verbeterd.
  • Er is een optie '—enable-newlib-hw-misaligned-access' toegevoegd.
  • De architectuur van de RISC-V functies in de mem*- en str*-series is geoptimaliseerd.
  • De code voor het verwerken van locale is herzien en is ontdaan van de globale variabele global_locale_string ten gunste van afzonderlijke locale_string-variabelen voor elk locale-object van het type locale_t.
  • Ondersteuning voor het nieuwe platform m68k-atari-elf is toegevoegd.
  • Code strtorQ.c van de FreeBSD-bibliotheek gdtoa is overgebracht, die is gebruikt voor de implementatie van ondersteuning voor het 128-bits type 'long double' in de functie strtold.
  • De coderingen zijn bijgewerkt naar Unicode 17.0.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster