Rilascio della libreria di sistema Glibc 2.36

Dopo sei mesi di sviluppo, è stato pubblicato il rilascio della libreria di sistema GNU C Library (glibc) 2.36, che rispetta completamente i requisiti degli standard ISO C11 e POSIX.1-2017. Il nuovo rilascio include correzioni da parte di 59 sviluppatori.

Tra i miglioramenti implementati in Glibc 2.36 si possono evidenziare:

  • Aggiunta la supporto per il nuovo formato di spostamenti relativi degli indirizzi DT_RELR (relocation relativa), che consente di ridurre la dimensione degli spostamenti relativi negli oggetti condivisi e nei file eseguibili, assemblati in modalità PIE (Executable indipendente dalla posizione). Per utilizzare il campo DT_RELR nei file ELF è necessaria la supporto dell'opzione "-z pack-relative-relocs" nel linker, introdotto nella versione del pacchetto binutils 2.38.
  • Per la piattaforma Linux sono state implementate le funzioni pidfd_open, pidfd_getfd e pidfd_send_signal, che forniscono accesso alla funzionalità pidfd, utile per gestire le situazioni di riutilizzo del PID per una più precisa identificazione dei processi che accedono ai file monitorati (pidfd è associato a un processo specifico e non cambia, mentre il PID può essere legato a un altro processo una volta terminato il processo corrente associato a quel PID).
  • Per la piattaforma Linux è stata aggiunta la funzione process_madvise(), che consente a un processo di eseguire la chiamata di sistema madvise() a nome di un altro processo, identificando il processo target tramite pidfd. Attraverso madvise() è possibile informarne il kernel sulle particolarità del lavoro con la memoria per ottimizzare la gestione della memoria del processo; ad esempio, in base alle informazioni fornite, il kernel può avviare il rilascio di ulteriore memoria libera. La chiamata madvise() da parte di un altro processo può essere necessaria in situazioni in cui le informazioni necessarie per l'ottimizzazione non sono note al processo corrente, ma sono coordinate da un gestore di processo in background separato, che può avviare autonomamente l'estrazione di memoria non utilizzata dai processi.
  • Per la piattaforma Linux è stata aggiunta la funzione process_mrelease(), che consente di accelerare il rilascio della memoria da parte dei processi in fase di terminazione. In condizioni normali, il rilascio delle risorse e la conclusione del processo non avvengono istantaneamente e possono subire ritardi per vari motivi, ostacolando il funzionamento dei sistemi di risposta rapida alla carenza di memoria nel contesto utente, come oomd (fornito in systemd). Grazie alla chiamata process_mrelease, tali sistemi possono avviare il ritorno della memoria in modo più prevedibile dai processi terminati forzatamente.
  • Nell'implementazione integrata del risolutore DNS è stata aggiunta la supporto per l'opzione "no-aaaa", che consente di semplificare la diagnosi dei problemi disabilitando l'invio di richieste DNS per record AAAA (definizione dell'indirizzo IPv6 tramite nome host), anche durante l'esecuzione di funzioni NSS come getaddrinfo(). L'opzione non influisce sulla gestione dei binding degli indirizzi IPv6 definiti in /etc/hosts e sulle chiamate a getaddrinfo() con il flag AI_PASSIVE.
  • Per la piattaforma Linux sono state aggiunte le funzioni fsopen, fsmount, move_mount, fsconfig, fspick, open_tree e mount_setattr, che forniscono accesso a una nuova API del kernel per la gestione del montaggio dei file system, tenendo conto degli spazi dei nomi dei punti di montaggio (mount namespaces). Le funzioni proposte consentono di gestire separatamente le diverse fasi del montaggio (gestire il superblocco, ottenere informazioni sul FS, montare, attaccare al punto di montaggio), che in precedenza venivano eseguite tramite la funzione generale mount(). Le funzioni separate offrono la possibilità di eseguire scenari di montaggio più complessi e di gestire separatamente operazioni come la riconfigurazione del superblocco, l'attivazione delle opzioni, la modifica del punto di montaggio e il trasferimento in un altro spazio dei nomi. Inoltre, una gestione separata consente di identificare con precisione le cause di codici di errore e di impostare più fonti per FS a strati, come overlayfs.
  • Nella locale è stata implementata la supporto per la gestione di file con definizioni di localizzazione, forniti in codifica UTF-8 invece che in ASCII.
  • Sono state aggiunte funzioni per la conversione delle codifiche multibyte mbrtoc8 e c8rtomb, conformi alle specifiche ISO C2X N2653 e C++20 P0482R6.
  • È stato aggiunto il supporto per il tipo char8_t, definito nella bozza dello standard ISO C2X N2653.
  • Aggiunte le funzioni arc4random, arc4random_buf e arc4random_uniform, che forniscono un'interfaccia al sistema chiamata getrandom e all'interfaccia /dev/urandom, restituendo numeri pseudocasuali di alta qualità.
  • Sulla piattaforma Linux è stato implementato il supporto per l'architettura del set di istruzioni LoongArch, utilizzata nei processori Loongson 3 5000 e che implementa un nuovo RISC ISA, simile a MIPS e RISC-V. Attualmente è disponibile solo il supporto per la versione a 64 bit di LoongArch (LA64). È necessario avere almeno le versioni binutils 2.38, GCC 12 e kernel Linux 5.19.
  • Il meccanismo prelink è stato dichiarato obsoleto e verrà rimosso nella prossima versione, insieme alle relative variabili d'ambiente LD_TRACE_PRELINKING e LD_USE_LOAD_BIAS e alle funzionalità del linker.
  • Rimosso il codice per il controllo della versione del kernel Linux e per la gestione della variabile d'ambiente LD_ASSUME_KERNEL. La versione minima del kernel supportata nella compilazione di Glibc è determinata tramite il campo ELF NT_GNU_ABI_TAG.
  • Sulla piattaforma Linux è stato interrotto il supporto per la variabile d'ambiente LD_LIBRARY_VERSION.

Fonte: opennet.ru

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