Udgivelse af de standard C-biblioteker Glibc 2.43 og newlib 4.6.0

Efter seks måneders udvikling er udgivelsen af det systembibliotek GNU C Library 2.43 (glibc) offentliggjort, som fuldt ud opfylder kravene i standarderne ISO C23 og POSIX.1-2024. 69 udviklere har deltaget i skabelsen af den nye version.

Blandt de forbedringer, der er implementeret i Glibc 2.43, kan nævnes:

  • En eksperimentel mulighed for at bygge med Clang-kompilatoren er tilføjet, som i øjeblikket kun er tilgængelig for platforme aarch64-linux-gnu og x86_64-linux-gnu under brug af runtime, der er kompatibel med libgcc. For at bygge Glibc kræves mindst version 18 af Clang.
  • Der er tilføjet en funktion mseal() til Linux-systemer, som tillader processer at udstille en lås på ændring af bestemte dele af deres adresseområde.
  • Der er tilføjet en funktion openat2() til Linux-systemer, som, i modsætning til openat(), understøtter et sæt ekstra flag til at begrænse tilladelsen til filstien (forhindrer krydsning af monteringspunkter, symboliske links, magic-links (\proc\PID\fd), og komponenter som "..\").
  • Der er tilføjet funktioner free_sized, free_aligned_sized, memset_explicit og memalignment, som blev introduceret i standarden C23.
  • I henhold til standarden C23 er opkaldet assert defineret som en makro med variabelt antal argumenter, der understøtter udtryk med komma indenfor initialisatoren.
  • I henhold til standarden C23 er funktionerne bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr og wmemchr, der returnerer pegere til inputarrayer, redefineret som makroer, der returnerer en peger til en type med kvalifikatoren "const", hvis inputargumentet er en peger til en type med kvalifikatoren "const".
  • Der er tilføjet definitioner af typerne long_double_t, _Float32_t, _Float64_t og _Float128_t til headerfilen math.h, som blev introduceret i standarden C23.
  • Der er tilføjet valgfrie tidsmåler modoer TIME_MONOTONIC (stabilt stigende tid, som ikke afhænger af systemuret), TIME_ACTIVE og TIME_THREAD_ACTIVE (tid til aktiv eksekvering af proces eller tråd) til brug i funktionen timespec_get.
  • Der er overført optimerede versioner af matematiske funktioner acosh, asinh, atanh, erf, erfc, lgamma og tgamma fra CORE-MATH-projektet.
  • Der er tilføjet optimerede implementeringer af funktionerne fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) og frexpl (intel96).
  • Ydeevnen af matematiske funktioner såsom acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 og yn/jn er forbedret ved at fjerne SVID fejlhåndteringskode (kald af brugerdefineret funktion matherr ved fejl) i nye builds (for at bevare kompatibilitet med allerede bygget software er de efterladt i kompatibilitetsmode).
  • Systemer x86 har fået støtte til Intel Nova Lake og Wildcat Lake processorer.
  • På AArch64 systemer er support til store hukommelsessider (transparent huge pages) af størrelse 2MB som standard aktiveret i malloc funktionen (parameteren ibc.malloc.hugetlb er nu sat til 1). I clone() funktionen er det implementeret at deaktivere ZA (Z-Array) tilstand på CPU'er med SME (Scalable Matrix Extension) support.
  • For AArch64 systemer, der understøtter BTI (Branch Target Identification) udvidelsen, er der tilføjet indstillingen glibc.cpu.aarch64_bti, som gør det muligt at tvinge BTI til at være aktivt for alle eksekverbare filer og biblioteker. BTI forhindrer spring til vilkårlige kodeafsnit for at modvirke gadget-skabelse i exploits, der bruger return-oriented programming teknikker.
  • På AArch64 systemer, der understøtter en af udvidelserne til forgrebnsbeskyttelse (Branch Target Identification eller Guarded Control Stack), er brugen af miljøvariablen "LD_DEBUG=security" tilladt for at producere advarsler ved lastning af eksekverbare filer og biblioteker, der ikke understøtter disse udvidelser.
  • For AArch64 systemer er der tilføjet vektoriserede versioner af funktioner som exp2m1, exp10m1, log10p1, log2p1 og rsqrt.
  • For RISC-V arkitekturen er der tilføjet en optimeret implementering af memset funktionen, der bruger RVV (RISC-V Vector) udvidelsen.
  • Testsettet har betydeligt udvidet testningen af multitrådede funktioner, herunder scanf, strerror og strsignal.
  • Kodningsdata, information om tegns typer og translitterationstabeller er opdateret for at støtte Unicode 17.0.0 specifikationen.
  • I implementeringen af LD_PROFILE funktionen er standardkataloget (/var/tmp) til profildata blevet fjernet. Der kræves nu en eksplicit definition af kataloget til disse data via miljøvariablen LD_PROFILE_OUTPUT.
  • Sårbarheder udbedret:
    • CVE-2026-0861 - et heltalsoverskud i memalign funktionen, hvilket fører til beskadigelse af heapen.
    • CVE-2026-0915 - lækage af stackindhold i funktionerne getnetbyaddr og getnetbyaddr_r.
    • CVE-2025-15281 — tilbagevenden af ikke-initialiseret hukommelse, der kan indeholde resterende data, når man bruger funktionen wordexp med parametrene WRDE_REUSE og WRDE_APPEND.

Derudover har projektet Cygwin efter et års udvikling udgivet version 4.6.0 af den standard C-bibliotek newlib, udviklet af ingeniører fra Red Hat. Biblioteket sigter mod at tilbyde en kompakt implementering af det standard C-bibliotek (libc), der er egnet til brug på indlejrede systemer med begrænset permanent lagerplads og RAM. Koden i projektet er skrevet i C og distribueres under LGPLv2-licensen.

I den nye version af newlib:

  • Understøttelsen af specifikationen POSIX.1-2024 er udvidet.
  • Ydeevnen for funktionerne memcpy, mempcpy og memmove er forbedret.
  • Der er tilføjet muligheden "—enable-newlib-hw-misaligned-access".
  • Optimeringen af RISC-V arkitekturens mem* og str* funktioner er gennemført.
  • Koden til håndtering af lokaliteter er blevet omarbejdet for at undgå den globale variabel global_locale_string til fordel for separate variabler locale_string for hver lokalitetsobjekt af typen locale_t.
  • Understøttelse af den nye platform m68k-atari-elf er blevet tilføjet.
  • Koden fra FreeBSD-biblioteket gdtoa er blevet overført fra strtorQ.c, som er anvendt til at implementere understøttelsen af 128-bit typen "long double" i funktionen strtold.
  • Encoding-data er blevet opdateret til Unicode 17.0.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster