Rilascio delle librerie standard C Glibc 2.43 e newlib 4.6.0

Dopo sei mesi di sviluppo, è stata pubblicata la versione 2.43 della libreria di sistema GNU C Library (glibc), che soddisfa completamente i requisiti degli standard ISO C23 e POSIX.1-2024. Hanno partecipato allo sviluppo di questa nuova release 69 sviluppatori.

Tra le novità implementate in Glibc 2.43 spiccano:

  • È stata aggiunta una funzionalità sperimentale per la compilazione con il compilatore Clang, attualmente disponibile solo per le piattaforme aarch64-linux-gnu e x86_64-linux-gnu, utilizzando un runtime compatibile con libgcc. Per la compilazione di Glibc è necessaria almeno la versione 18 di Clang.
  • Per i sistemi Linux è stata aggiunta la funzione mseal(), che consente ai processi di impostare un blocco sulle modifiche a determinate parti del proprio spazio indirizzi.
  • Per i sistemi Linux è stata aggiunta la funzione openat2(), che a differenza della funzione openat() supporta un insieme di flag aggiuntivi per limitare la risoluzione dei percorsi dei file (vietando la traversata di mount point, symlink, magic links (/proc/PID/fd) e componenti «../»).
  • Sono state 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 con un numero variabile di argomenti, supportando espressioni con virgole all'interno dell'inizializzatore.
  • Secondo lo standard C23, le funzioni bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr e wmemchr, che restituiscono puntatori agli array di input, sono ridefinite come macro che restituiscono un puntatore a un tipo con il qualificatore «const», se l'argomento di input è un puntatore a un tipo con il qualificatore «const».
  • Nel file di intestazione math.h sono state aggiunte le definizioni dei tipi long_double_t, _Float32_t, _Float64_t e _Float128_t, introdotti nello standard C23.
  • Sono stati aggiunti modalità opzionali di calcolo del tempo TIME_MONOTONIC (tempo che cresce continuamente, indipendente dalle modifiche dell'orologio di sistema), TIME_ACTIVE e TIME_THREAD_ACTIVE (tempo di esecuzione attivo del processo o del thread) per l'uso nella funzione timespec_get.
  • Sono state trasferite dal progetto CORE-MATH le versioni ottimizzate delle funzioni matematiche acosh, asinh, atanh, erf, erfc, lgamma e tgamma.
  • Sono state aggiunte implementazioni ottimizzate delle funzioni fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) e frexpl (intel96).
  • Le prestazioni 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 sono state migliorate grazie all'eliminazione del codice di gestione degli errori SVID (chiamata della funzione personalizzata matherr in caso di errore) per le nuove versioni (per mantenere la compatibilità con i programmi già compilati, sono stati lasciati in modalità compat).
  • Nei sistemi x86 è stato aggiunto il supporto per i processori Intel Nova Lake e Wildcat Lake.
  • Nei sistemi AArch64, la funzione malloc ha ora abilitato di default il supporto per le pagine di memoria grandi (transparent huge pages) di dimensioni 2MB (il parametro ibc.malloc.hugetlb è ora impostato su 1). Nella funzione clone() è stato implementato lo spegnimento dello stato ZA (Z-Array) sulle CPU compatibili con l'estensione SME (Scalable Matrix Extension).
  • Per i sistemi AArch64 che supportano l'estensione BTI (Branch Target Identification), è stata aggiunta la configurazione glibc.cpu.aarch64_bti, che consente di attivare forzatamente il BTI per tutti i file eseguibili e le librerie. Il BTI blocca i salti verso aree di codice arbitrario per contrastare la creazione di gadget negli exploit che utilizzano tecniche di programmazione orientata al ritorno.
  • Nei sistemi AArch64 che supportano una delle estensioni per la protezione dei salti (Branch Target Identification o Guarded Control Stack), è consentito l'uso della variabile d'ambiente "LD_DEBUG=security" per stampare avvisi dal linker durante il caricamento di file eseguibili e librerie che non supportano queste estensioni.
  • Per i sistemi AArch64 sono state aggiunte versioni vettoriali delle funzioni exp2m1, exp10m1, log10p1, log2p1 e rsqrt.
  • Per l'architettura RISC-V è stata aggiunta un'implementazione ottimizzata della funzione memset che utilizza l'estensione RVV (RISC-V Vector).
  • Il set di test ha ampliato significativamente il controllo del multithreading e delle funzioni scanf, strerror e strsignal.
  • I dati di codifica, le informazioni sui tipi di caratteri e le tabelle di traslitterazione sono stati aggiornati per supportare la specifica Unicode 17.0.0.
  • Nell'implementazione della funzionalità LD_PROFILE è cessato l'uso della directory predefinita (/var/tmp) per la registrazione dei dati di profilazione. Per salvare tali dati è ora richiesta la definizione esplicita della directory tramite la variabile d'ambiente LD_PROFILE_OUTPUT.
  • Vulnerabilità risolte:
    • CVE-2026-0861 - overflow intero nella funzione memalign, causando la corruzione della heap.
    • CVE-2026-0915 - perdita di contenuto dello stack nelle funzioni getnetbyaddr e getnetbyaddr_r.
    • CVE-2025-15281 — ripristino di memoria non inizializzata che può 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 nuova versione 4.6.0 della libreria standard C newlib, sviluppata da ingegneri di Red Hat. La libreria è progettata per fornire un'implementazione compatta della libreria standard C (libc), adatta per l'uso su sistemi embedded con limitato spazio di archiviazione permanente e memoria operativa. Il codice del progetto è scritto in C ed è distribuito con licenza LGPLv2.

Nella nuova versione di newlib:

  • È stata ampliata la supporto alla specifica POSIX.1-2024.
  • È stata migliorata la performance delle funzioni memcpy, mempcpy e memmove.
  • È stata aggiunta l'opzione «—enable-newlib-hw-misaligned-access».
  • È stata ottimizzata l'architettura RISC-V per le funzioni della serie mem* e str*.
  • Il codice di gestione delle localizzazioni è stato rielaborato, eliminando la variabile globale global_locale_string a favore di variabili locali separate locale_string per ogni oggetto di localizzazione con tipo locale_t.
  • È stata aggiunta la supporto per la nuova piattaforma m68k-atari-elf.
  • Dal la libreria gdtoa di FreeBSD è stato trasferito il codice strtorQ.c, utilizzato per implementare il supporto per il tipo a 128 bit "long double" nella funzione strtold.
  • I dati di codifica sono stati aggiornati a Unicode 17.0.

Fonte: opennet.ru

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