Rilascio delle librerie C standard Glibc 2.43 e newlib 4.6.0

Dopo sei mesi di sviluppo, è stata rilasciata la libreria di sistema GNU C Library 2.43 (glibc), pienamente conforme agli standard ISO C23 e POSIX.1-2024. 69 sviluppatori hanno contribuito alla nuova versione.

Alcuni dei miglioramenti implementati in Glibc 2.43 includono:

  • È stata aggiunta una funzionalità sperimentale di compilazione del compilatore Clang. Attualmente, è disponibile solo per le piattaforme aarch64-linux-gnu e x86_64-linux-gnu quando si utilizza un runtime compatibile con libgcc. La compilazione di Glibc richiede almeno la versione 18 di Clang.
  • Per i sistemi Linux È stata aggiunta la funzione mseal(), che consente ai processi di bloccare le modifiche a parti specifiche del loro spazio di indirizzamento.
  • Per i sistemi Linux È stata aggiunta la funzione openat2(). A differenza della funzione openat(), supporta una serie di flag aggiuntivi per limitare la risoluzione dei percorsi dei file (impedendo l'intersezione di punti di montaggio, collegamenti simbolici, collegamenti magici (/proc/PID/fd), componenti "../").
  • Aggiunte le funzioni free_sized, free_aligned_sized, memset_explicit e memalignment introdotte nello standard C23.
  • Secondo lo standard C23, la chiamata assert è definita come una macro variadica che supporta espressioni con virgola all'interno dell'inizializzatore.
  • In conformità con lo standard C23, le funzioni bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcpsbrk, wcsrchr, wcsstr e wmemchr, che restituiscono puntatori ad array di input, vengono ridefinite come macro che restituiscono un puntatore a un tipo qualificato const se l'argomento di input è un puntatore a un tipo qualificato const.
  • Il file di intestazione math.h è stato aggiornato per includere le definizioni dei tipi long_double_t, _Float32_t, _Float64_t e _Float128_t introdotti nello standard C23.
  • Aggiunte le modalità di calcolo del tempo opzionali TIME_MONOTONIC (tempo in costante aumento, indipendente dalle modifiche dell'orologio di sistema), TIME_ACTIVE e TIME_THREAD_ACTIVE (tempo di esecuzione attiva di un processo o thread) da utilizzare nella funzione timespec_get.
  • Versioni ottimizzate delle funzioni matematiche acosh, asinh, atanh, erf, erfc, lgamma e tgamma sono state trasferite dal progetto CORE-MATH.
  • Aggiunte implementazioni ottimizzate delle funzioni fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) e frexpl (intel96).
  • Prestazioni migliorate delle funzioni matematiche acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 e yn/jn rimuovendo il codice di gestione degli errori SVID (chiamando la funzione matherr definita dall'utente in caso di errore) per le nuove build (per mantenere la compatibilità con i programmi esistenti, vengono lasciate in modalità compatibile).
  • Sui sistemi x86 è stato aggiunto il supporto per i processori Intel Nova Lake e Wildcat Lake.
  • Sui sistemi AArch64, il supporto per pagine enormi trasparenti (2 MB) è abilitato per impostazione predefinita nella funzione malloc (il parametro ibc.malloc.hugetlb è ora impostato su 1). La funzione clone() ora disabilita lo stato ZA (Z-Array) sulle CPU che supportano la Scalable Matrix Extension (SME).
  • Per i sistemi AArch64 che supportano l'estensione Branch Target Identification (BTI), è stata aggiunta l'impostazione glibc.cpu.aarch64_bti. Questa impostazione consente di abilitare forzatamente BTI per tutti i file eseguibili e le librerie. BTI blocca i salti a sezioni di codice arbitrarie per impedire la creazione di gadget negli exploit che utilizzano tecniche di programmazione orientate al ritorno.
  • Nei sistemi AArch64 che supportano una delle estensioni di sicurezza dei branch (Branch Target Identification o Guarded Control Stack), l'uso della variabile di ambiente "LD_DEBUG=security" è consentito per far sì che il linker stampi avvisi durante il caricamento di eseguibili e librerie che non supportano queste estensioni.
  • Per i sistemi AArch64 sono state aggiunte le versioni vettoriali delle funzioni exp2m1, exp10m1, log10p1, log2p1 e rsqrt.
  • Per l'architettura RISC-V è stata aggiunta un'implementazione ottimizzata della funzione memset utilizzando l'estensione RVV (RISC-V Vector).
  • La suite di test ha ampliato significativamente i test del multithreading e delle funzioni scanf, strerror e strsignal.
  • I dati di codifica, le informazioni sul tipo di carattere e le tabelle di traslitterazione sono stati aggiornati per supportare la specifica Unicode 17.0.0.
  • L'implementazione di LD_PROFILE non utilizza più la directory predefinita (/var/tmp) per la scrittura dei dati di profilazione. Il salvataggio di tali dati richiede ora la definizione esplicita di una directory tramite la variabile d'ambiente LD_PROFILE_OUTPUT.
  • Vulnerabilità risolte:
    • CVE-2026-0861 - Un overflow di interi nella funzione memalign provoca il danneggiamento dell'heap.
    • CVE-2026-0915 – Perdita di stack nelle funzioni getnetbyaddr e getnetbyaddr_r.
    • CVE-2025-15281 - Restituzione di memoria non inizializzata, che potrebbe contenere dati residui, quando si utilizza la funzione wordexp con i parametri WRDE_REUSE e WRDE_APPEND.

Inoltre, dopo un anno di sviluppo, il progetto Cygwin ha rilasciato la versione 4.6.0 della libreria C standard, newlib, sviluppata dagli ingegneri di Red Hat. La libreria mira a fornire un'implementazione compatta della libreria C standard (libc), adatta all'uso su sistemi embedded con spazio di archiviazione e RAM ridotto. Il codice del progetto è scritto in C e distribuito con licenza LGPLv2.

Nella nuova versione di newlib:

  • È stato ampliato il supporto per la specifica POSIX.1-2024.
  • Prestazioni migliorate delle funzioni memcpy, mempcpy e memmove.
  • Aggiunta l'opzione "--enable-newlib-hw-misaligned-access".
  • È stata ottimizzata l'architettura RISC-V delle funzioni delle serie mem* e str*.
  • Il codice di gestione delle impostazioni locali è stato rielaborato, eliminando la variabile globale global_locale_string a favore di variabili locale_string separate per ciascun oggetto locale di tipo locale_t.
  • Aggiunto il supporto per la nuova piattaforma m68k-atari-elf.
  • Il codice strtorQ.c è stato trasferito dalla libreria gdtoa di FreeBSD, utilizzata per implementare il supporto per il tipo "long double" a 128 bit nella funzione strtold.
  • I dati di codifica sono stati aggiornati a Unicode 17.0.

Fonte: opennet.ru

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster