Glibc 2.36 Stelselbiblioteekvrystelling

Na ses maande se ontwikkeling is die GNU C Library (glibc) 2.36-stelselbiblioteek vrygestel, wat ten volle aan die vereistes van die ISO C11- en POSIX.1-2017-standaarde voldoen. Die nuwe weergawe bevat regstellings van 59 ontwikkelaars.

Sommige van die verbeterings wat in Glibc 2.36 geïmplementeer is, sluit in:

  • Bygevoeg ondersteuning vir die nuwe DT_RELR (relatiewe hervestiging) adres hervestiging formaat, wat jou toelaat om die grootte van relatiewe hervestigings in gedeelde voorwerpe en uitvoerbare lêers wat in PIE (Posisie-onafhanklike uitvoerbare)-modus gekoppel is, te verminder. Die gebruik van die DT_RELR-veld in ELF-lêers vereis ondersteuning vir die "-z pack-relative-relocs" opsie in die skakelaar, bekendgestel in die vrystelling van binutils 2.38.
  • Vir die Linux-platform word die funksies pidfd_open, pidfd_getfd en pidfd_send_signal geïmplementeer, wat toegang bied tot pidfd-funksionaliteit wat help om PID-hergebruiksituasies te hanteer om prosesse wat toegang tot gemonitorde lêers verkry meer akkuraat te identifiseer (pidfd word geassosieer met 'n spesifieke proses en verander nie, terwyl PID kan aan 'n ander proses gekoppel word nadat die huidige proses wat met daardie PID geassosieer word, beëindig is).
  • Vir die Linux-platform is die process_madvise()-funksie bygevoeg om een ​​proses toe te laat om die madvise()-stelseloproep namens 'n ander proses uit te reik, wat die teikenproses met pidfd identifiseer. Deur madvise(), kan jy die kern inlig oor die kenmerke van werk met geheue om prosesgeheuebestuur te optimaliseer; byvoorbeeld, gebaseer op die oorgedra inligting, kan die kern die vrystelling van addisionele vrye geheue inisieer. 'n Oproep na madvise() deur 'n ander proses kan vereis word in 'n situasie waar die inligting wat benodig word vir optimalisering onbekend is aan die huidige proses, maar gekoördineer word deur 'n aparte agtergrondbeheerproses, wat onafhanklik die verwydering van ongebruikte geheue uit prosesse kan inisieer.
  • Vir die Linux-platform is die process_mrelease()-funksie bygevoeg, wat jou toelaat om die vrystelling van geheue te bespoedig vir 'n proses wat die uitvoering daarvan voltooi. Onder normale omstandighede is hulpbronvrystelling en prosesbeëindiging nie oombliklik nie en kan dit om verskeie redes vertraag word, wat inmeng met die gebruiker-spasie geheue vroeë reaksie stelsels soos oomd (verskaf deur systemd). Deur process_mrelease te noem, kan sulke stelsels die herwinning van geheue van gedwonge prosesse meer voorspelbaar veroorsaak.
  • Ondersteuning vir die "no-aaaa"-opsie is bygevoeg tot die ingeboude implementering van die DNS-oplosser, wat jou toelaat om die stuur van DNS-versoeke vir AAAA-rekords te deaktiveer (bepaal 'n IPv6-adres volgens gasheernaam), insluitend wanneer NSS uitgevoer word funksies soos getaddriinfo(), om probleemdiagnose te vereenvoudig. Hierdie opsie beïnvloed nie die verwerking van IPv6-adresbindings gedefinieer in /etc/hosts en oproepe na getaddriinfo() met die AI_PASSIVE-vlag nie.
  • Vir die Linux-platform is die funksies fsopen, fsmount, move_mount, fsconfig, fspick, open_tree en mount_setattr bygevoeg, wat toegang bied tot 'n nuwe kern-API vir die bestuur van lêerstelselmontering gebaseer op bergnaamruimtes. Die voorgestelde funksies laat jou toe om verskillende stadiums van montering afsonderlik te verwerk (verwerk die superblok, verkry inligting oor die lêerstelsel, monteer, heg aan die monteerpunt), wat voorheen uitgevoer is met behulp van die common mount()-funksie. Afsonderlike funksies bied die vermoë om meer komplekse monteer-scenario's uit te voer en afsonderlik bewerkings uit te voer soos om die superblok te herkonfigureer, opsies te aktiveer, die monteerpunt te verander en na 'n ander naamruimte te skuif. Daarbenewens laat aparte verwerking jou toe om die redes vir die uitvoer van foutkodes akkuraat te bepaal en verskeie bronne vir meerlaaglêerstelsels in te stel, soos oorlegsels.
  • localedef bied ondersteuning vir die verwerking van locale definisie lêers verskaf in UTF-8 enkodering in plaas van ASCII.
  • Bygevoeg funksies om multi-grepe mbrtoc8 en c8rtomb enkoderings om te skakel na ISO C2X N2653 en C++20 P0482R6 spesifikasies.
  • Bygevoeg ondersteuning vir die char8_t tipe gedefinieer in die konsep ISO C2X N2653 standaard.
  • Bygevoeg arc4random, arc4random_buf, en arc4random_uniform funksies wat omhulsels verskaf oor die willekeurige stelseloproep en die /dev/urandom-koppelvlak wat pseudo-willekeurige nommers van hoë gehalte terugstuur.
  • Wanneer dit op die Linux-platform loop, ondersteun dit die LoongArch-instruksiestel-argitektuur wat in die Loongson 3 5000-verwerkers gebruik word en implementeer die nuwe RISC ISA, soortgelyk aan MIPS en RISC-V. In sy huidige vorm is slegs ondersteuning vir die 64-bis weergawe van LoongArch (LA64) beskikbaar. Om te werk, benodig jy ten minste weergawes van Binutils 2.38, GCC 12 en Linux kernel 5.19.
  • Die voorafskakelmeganisme, sowel as sy geassosieerde LD_TRACE_PRELINKING- en LD_USE_LOAD_BIAS-omgewingsveranderlikes en koppelvermoëns, is opgeskort en sal in 'n toekomstige vrystelling verwyder word.
  • Verwyder kode om die Linux-kernweergawe na te gaan en die LD_ASSUME_KERNEL omgewingsveranderlike te hanteer. Die minimum weergawe van die kern wat ondersteun word wanneer Glibc gebou word, word deur die ELF-veld NT_GNU_ABI_TAG bepaal.
  • Die LD_LIBRARY_VERSION omgewingsveranderlike is gestaak op die Linux-platform.

Bron: opennet.ru

Voeg 'n opmerking