Lansarea bibliotecii de sistem Glibc 2.36

După șase luni de dezvoltare, a fost lansată biblioteca de sistem GNU C Library (glibc) 2.36, care respectă pe deplin cerințele standardelor ISO C11 și POSIX.1-2017. Noua versiune include remedieri de la 59 de dezvoltatori.

Unele dintre îmbunătățirile implementate în Glibc 2.36 includ:

  • S-a adăugat suport pentru noul format de relocare a adreselor DT_RELR (relative relocation), care vă permite să reduceți dimensiunea relocațiilor relative în obiectele partajate și fișierele executabile legate în modul PIE (executabile independente de poziție). Utilizarea câmpului DT_RELR în fișierele ELF necesită suport pentru opțiunea „-z pack-relative-relocs” din linker, introdusă în lansarea binutils 2.38.
  • Pentru platforma Linux sunt implementate funcțiile pidfd_open, pidfd_getfd și pidfd_send_signal, oferind acces la funcționalitatea pidfd care ajută la gestionarea situațiilor de reutilizare a PID pentru a identifica mai precis procesele care accesează fișierele monitorizate (pidfd este asociat cu un anumit proces și nu se modifică, în timp ce PID poate să fie atașat unui alt proces după ce procesul curent asociat cu acel PID se încheie).
  • Pentru platforma Linux, funcția process_madvise() a fost adăugată pentru a permite unui proces să emită apelul de sistem madvise() în numele unui alt proces, identificând procesul țintă folosind pidfd. Prin madvise(), puteți informa nucleul despre caracteristicile de lucru cu memoria pentru a optimiza gestionarea memoriei procesului; de exemplu, pe baza informațiilor transmise, nucleul poate iniția eliberarea de memorie liberă suplimentară. Un apel la madvise() de către un alt proces poate fi necesar într-o situație în care informațiile necesare pentru optimizare sunt necunoscute procesului curent, dar sunt coordonate de un proces separat de control în fundal, care poate iniția în mod independent eliminarea memoriei neutilizate din procese.
  • Pentru platforma Linux, a fost adăugată funcția process_mrelease(), care vă permite să accelerați eliberarea memoriei pentru un proces care își finalizează execuția. În circumstanțe normale, eliberarea resurselor și terminarea procesului nu sunt instantanee și pot fi întârziate din diverse motive, interferând cu sistemele de răspuns timpuriu ale memoriei spațiului utilizatorului, cum ar fi oomd (furnizat de systemd). Apelând process_mrelease, astfel de sisteme pot declanșa mai previzibil recuperarea memoriei din procesele forțate.
  • Suport pentru opțiunea „no-aaaa” a fost adăugat la implementarea încorporată a rezolutorului DNS, care vă permite să dezactivați trimiterea cererilor DNS pentru înregistrările AAAA (determinarea unei adrese IPv6 după numele gazdei), inclusiv atunci când executați NSS funcții precum getaddrinfo(), pentru a simplifica diagnosticarea problemelor. Această opțiune nu afectează procesarea legăturilor de adrese IPv6 definite în /etc/hosts și apelurile la getaddrinfo() cu flag AI_PASSIVE.
  • Pentru platforma Linux, au fost adăugate funcțiile fsopen, fsmount, move_mount, fsconfig, fspick, open_tree și mount_setattr, oferind acces la un nou API kernel pentru gestionarea montării sistemului de fișiere pe baza spațiilor de nume de montare. Funcțiile propuse vă permit să procesați separat diferite etape de montare (procesați superblocul, obțineți informații despre sistemul de fișiere, montați, atașați la punctul de montare), care au fost efectuate anterior folosind funcția comună mount(). Funcțiile separate oferă posibilitatea de a efectua scenarii de montare mai complexe și de a efectua separat operațiuni precum reconfigurarea superblocului, activarea opțiunilor, schimbarea punctului de montare și mutarea la alt spațiu de nume. În plus, procesarea separată vă permite să determinați cu exactitate motivele pentru ieșirea codurilor de eroare și să setați mai multe surse pentru sistemele de fișiere cu mai multe straturi, cum ar fi suprapunerile.
  • localedef oferă suport pentru procesarea fișierelor de definiții locale furnizate în codificare UTF-8 în loc de ASCII.
  • S-au adăugat funcții pentru a converti codificări multi-octeți mbrtoc8 și c8rtomb la specificațiile ISO C2X N2653 și C++20 P0482R6.
  • S-a adăugat suport pentru tipul char8_t definit în proiectul standardului ISO C2X N2653.
  • S-au adăugat funcții arc4random, arc4random_buf și arc4random_uniform care furnizează wrapper-uri peste apelul de sistem getrandom și interfața /dev/urandom care returnează numere pseudoaleatoare de înaltă calitate.
  • Când rulează pe platforma Linux, acceptă arhitectura setului de instrucțiuni LoongArch utilizată în procesoarele Loongson 3 5000 și implementează noul RISC ISA, similar cu MIPS și RISC-V. În forma sa actuală, este disponibil doar suportul pentru versiunea pe 64 de biți a LoongArch (LA64). Pentru a funcționa, aveți nevoie de cel puțin versiuni de binutils 2.38, GCC 12 și kernel Linux 5.19.
  • Mecanismul de prelink, precum și variabilele de mediu asociate LD_TRACE_PRELINKING și LD_USE_LOAD_BIAS și capabilitățile de conectare au fost depreciate și vor fi eliminate într-o versiune viitoare.
  • S-a eliminat codul pentru verificarea versiunii kernel-ului Linux și gestionarea variabilei de mediu LD_ASSUME_KERNEL. Versiunea minimă a nucleului suportată la construirea Glibc este determinată prin câmpul ELF NT_GNU_ABI_TAG.
  • Variabila de mediu LD_LIBRARY_VERSION a fost întreruptă pe platforma Linux.

Sursa: opennet.ru

Adauga un comentariu