Glibc 2.36 System Library -julkaisu

Kuuden kuukauden kehitystyön jälkeen on julkaistu GNU C Library (glibc) 2.36 -järjestelmäkirjasto, joka täyttää täysin ISO C11- ja POSIX.1-2017 -standardien vaatimukset. Uusi julkaisu sisältää korjauksia 59 kehittäjältä.

Jotkut Glibc 2.36:ssa toteutetuista parannuksista ovat:

  • Lisätty tuki uudelle DT_RELR-osoitteen uudelleensijoitusmuodolle (relative relocation), jonka avulla voit pienentää suhteellisten uudelleensijoitusten kokoa jaetuissa objekteissa ja suoritettavissa tiedostoissa, jotka on linkitetty PIE (Position-independent executables) -tilassa. DT_RELR-kentän käyttäminen ELF-tiedostoissa vaatii tukea linkkerissä "-z pack-relative-relocs" -vaihtoehdolle, joka esiteltiin binutils 2.38:n julkaisussa.
  • Linux-alustalle on toteutettu funktiot pidfd_open, pidfd_getfd ja pidfd_send_signal, jotka tarjoavat pääsyn pidfd-toimintoihin, jotka auttavat käsittelemään PID:n uudelleenkäyttötilanteita ja tunnistamaan tarkemmin valvottuja tiedostoja käyttäviä prosesseja (pidfd liittyy tiettyyn prosessiin eikä muutu, kun taas PID voi liitetään toiseen prosessiin sen jälkeen, kun kyseiseen PID:hen liittyvä nykyinen prosessi päättyy).
  • Linux-alustalle process_madvise()-funktio on lisätty, jotta yksi prosessi voi lähettää madvise()-järjestelmäkutsun toisen prosessin puolesta, tunnistaen kohdeprosessin pidfd:n avulla. Madvise():n avulla voit kertoa ytimelle muistin kanssa työskentelyn ominaisuuksista prosessimuistin hallinnan optimoimiseksi; esimerkiksi ydin voi käynnistää lisämuistin vapauttamisen siirrettyjen tietojen perusteella. Toisen prosessin kutsu madvise():lle voi olla tarpeen tilanteessa, jossa optimointiin tarvittavat tiedot eivät ole nykyisen prosessin tiedossa, mutta sitä koordinoi erillinen taustaohjausprosessi, joka voi itsenäisesti käynnistää käyttämättömän muistin poistamisen prosesseista.
  • Linux-alustalle on lisätty process_mrelease()-toiminto, jonka avulla voit nopeuttaa muistin vapauttamista prosessille, joka saattaa sen suorituksen loppuun. Normaalioloissa resurssien vapauttaminen ja prosessin lopettaminen eivät tapahdu hetkessä, ja ne voivat viivästyä useista syistä, mikä häiritsee käyttäjätilan muistin varhaisen reagoinnin järjestelmiä, kuten oomd (systemd:n ​​tarjoama). Kutsumalla process_mrelease, tällaiset järjestelmät voivat ennakoitavammin laukaista muistin palauttamisen pakotetuista prosesseista.
  • Tuki "no-aaaa" -vaihtoehdolle on lisätty DNS-selvittimen sisäänrakennettuun toteutukseen, jonka avulla voit poistaa käytöstä DNS-pyyntöjen lähettämisen AAAA-tietueille (IPv6-osoitteen määrittäminen isäntänimen perusteella), mukaan lukien NSS:ää suoritettaessa. toimii kuten getaddrinfo(), yksinkertaistaa ongelman diagnosointia. Tämä asetus ei vaikuta tiedostossa /etc/hosts määritettyjen IPv6-osoitesidosten käsittelyyn eikä getaddrinfo()-kutsuihin AI_PASSIVE-lipulla.
  • Linux-alustalle on lisätty funktiot fsopen, fsmount, move_mount, fsconfig, fspick, open_tree ja mount_setattr, jotka tarjoavat pääsyn uuteen ytimen API:iin tiedostojärjestelmän liittämisen hallintaan liitännän nimiavaruuksien perusteella. Ehdotetut toiminnot antavat sinun käsitellä erikseen asennuksen eri vaiheita (käsitellä superblock, hankkia tietoja tiedostojärjestelmästä, liittää, liittää liitoskohtaan), jotka aiemmin suoritettiin käyttämällä yhteistä mount()-toimintoa. Erilliset toiminnot tarjoavat mahdollisuuden suorittaa monimutkaisempia liitosskenaarioita ja suorittaa erikseen toimintoja, kuten superblockin uudelleenmäärittelyä, vaihtoehtojen käyttöönottoa, liitoskohdan vaihtamista ja siirtymistä toiseen nimiavaruuteen. Lisäksi erillisen käsittelyn avulla voit määrittää tarkasti virhekoodien tulostuksen syyt ja asettaa useita lähteitä monikerroksisille tiedostojärjestelmille, kuten peittokuvat.
  • localedef tukee UTF-8-koodattujen kieliasetustiedostojen käsittelyä ASCII:n sijaan.
  • Lisätty toimintoja monitavuisten mbrtoc8- ja c8rtomb-koodausten muuttamiseksi ISO C2X N2653- ja C++20 P0482R6 -spesifikaatioiksi.
  • Lisätty tuki ISO C8X N2 -standardin luonnoksessa määritellylle char2653_t-tyypille.
  • Lisätty arc4random-, arc4random_buf- ja arc4random_uniform-funktiot, jotka tarjoavat kääreitä getrandom-järjestelmäkutsulle ja /dev/urandom-rajapinnalle, jotka palauttavat korkealaatuisia näennäissatunnaisia ​​lukuja.
  • Linux-alustalla ajettaessa se tukee Loongson 3 5000 -prosessoreissa käytettyä LoongArch-käskysarjaarkkitehtuuria ja toteuttaa uuden RISC ISA:n, joka on samanlainen kuin MIPS ja RISC-V. Nykyisessä muodossaan vain tuki LoongArchin (LA64) 64-bittiselle versiolle on saatavilla. Toimiaksesi tarvitset vähintään versiot binutils 2.38:sta, GCC 12:sta ja Linux-ytimen 5.19:stä.
  • Esilinkkimekanismi sekä siihen liittyvät LD_TRACE_PRELINKING- ja LD_USE_LOAD_BIAS-ympäristömuuttujat ja linkitysominaisuudet ovat vanhentuneet ja poistetaan tulevassa julkaisussa.
  • Poistettu koodi Linux-ytimen version tarkistamiseksi ja ympäristömuuttujan LD_ASSUME_KERNEL käsittelemiseksi. Glibc:n rakentamisen yhteydessä tuettu ytimen vähimmäisversio määritetään ELF-kentän NT_GNU_ABI_TAG kautta.
  • Ympäristömuuttuja LD_LIBRARY_VERSION on lopetettu Linux-alustalla.

Lähde: opennet.ru

Lisää kommentti