Glibc 2.36 arriva con nuove funzionalità per Linux, miglioramenti e altro ancora

Dopo sei mesi di sviluppo è stato annunciato il rilascio della nuova versione di glibc 2.36, che soddisfa pienamente i requisiti degli standard ISO C11 e POSIX.1-2017 e in cui la nuova versione include correzioni di 59 sviluppatori. .

Per coloro che non hanno familiarità con Glibc, dovrebbero sapere di cosa si tratta una libreria GNU C, comunemente nota come glibc è la libreria runtime C standard di GNU. Sui sistemi in cui viene utilizzato, questa libreria C che fornisce e definisce chiamate di sistema e altre funzioni di base, è utilizzato da quasi tutti i programmi. 

Principali novità di Glibc 2.36

In questa nuova versione che viene presentata, si evidenzia che aggiunto il supporto per un nuovo formato di indirizzo di trasferimento relativo DT_RELR, che consente di ridurre le dimensioni delle rilocazioni relative negli oggetti condivisi e negli eseguibili collegati in modalità PIE (Position Independent Executables). L'uso del campo DT_RELR nei file ELF richiede il supporto per l'opzione "-z pack-relative-relocs" nel linker, introdotta in binutils 2.38.

Un altro cambiamento che spicca nella nuova versione è quello per Linux le funzioni pidfd_open, pidfd_getfd e pidfd_send_signal sono stati implementati per fornire l'accesso alla funzionalità pidfd che aiuta a gestire le situazioni di riutilizzo del PID per identificare più accuratamente i processi che accedono ai file monitorati (pidfd è associato a un processo specifico e non cambia, mentre il PID può essere collegato a un altro processo al termine del processo). PID).

A parte quello, anche in Linux arriva process_madvise(), che consente a un processo di eseguire una chiamata di sistema madvise() per conto di un altro processo, identificando il processo di destinazione utilizzando pidfd. Tramite madvise(), puoi informare il kernel sulle caratteristiche di lavorare con la memoria per ottimizzare la gestione della memoria del processo, ad esempio, in base alle informazioni passate, il kernel può iniziare a rilasciare ulteriore memoria libera.

Si segnala inoltre che la funzione è stata aggiunta process_mrelease(), che consente di velocizzare il rilascio di memoria per un processo che ne termina l'esecuzione. In circostanze normali, il rilascio delle risorse e la terminazione del processo non sono istantanei e possono essere ritardati per vari motivi, interferendo con i sistemi di allerta precoce dello spazio utente come oomd (fornito da systemd). Chiamando process_mrelease, questi sistemi possono avviare in modo più prevedibile i recuperi di memoria per i processi che sono stati terminati forzatamente.

D'altra parte, si nota che è stato aggiunto supporto per l'opzione "no-aaaa". alla realizzazione integrata di Risoluzione DNS, che consente di disabilitare l'invio di richieste DNS per i record AAAA (determinando un indirizzo IPv6 in base al nome host), anche quando si eseguono funzioni NSS come getaddrinfo(), per semplificare la risoluzione dei problemi. Questa opzione non ha effetto sulla gestione dei binding degli indirizzi IPv6 definiti in /etc/hosts e delle chiamate a getaddrinfo() con il flag AI_PASSIVE.

Per Linux, aggiunte le funzioni fsopen, fsmount, move_mount, fsconfig, fspick, open_tree e mount_setattr per fornire l'accesso a una nuova API del kernel per controllare come vengono montati i file system in base agli spazi dei nomi di montaggio. Le funzioni proposte consentono l'elaborazione separata di diversi passaggi di montaggio (elaborazione del superblocco, acquisizione di informazioni sul file system, montaggio, collegamento al punto di montaggio), che in precedenza venivano eseguiti utilizzando la funzione mount() comune.

Erano aggiunti le funzioni arc4random, arc4random_buf e arc4random_uniform per fornire collegamenti alla chiamata di sistema getrandom e l'interfaccia / Dev / urandom, restituendo numeri pseudocasuali di alta qualità.

Quando è in esecuzione su Linux, viene fornito il supporto per l'architettura. dal set di istruzioni LoongArch utilizzato nei processori Loongson 3 5000 e viene implementato un nuovo RISC ISA simile a MIPS e RISC-V. Nella sua forma attuale, è disponibile solo la compatibilità con variante a 64 bit da LoongArch (LA64). Richiede almeno binutils 2.38, GCC 12 e Linux kernel 5.19 per essere eseguito.

Tra le altre modifiche che si distinguono:

  • Il meccanismo di precollegamento, così come le variabili di ambiente LD_TRACE_PRELINKING e LD_USE_LOAD_BIAS associate e le funzionalità del linker, sono obsoleti e verranno rimossi in una versione futura.
  • Rimosso il codice per controllare la versione del kernel Linux e gestire la variabile di ambiente LD_ASSUME_KERNEL. La versione minima del kernel supportata durante la compilazione di Glibc è determinata dal campo ELF NT_GNU_ABI_TAG.
  • La variabile di ambiente LD_LIBRARY_VERSION è stata deprecata sulla piattaforma Linux.

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.