Izdaja sistemske knjižnice Glibc 2.36

Po šestih mesecih razvoja je izšla sistemska knjižnica GNU C Library (glibc) 2.36, ki je v celoti skladna z zahtevami standardov ISO C11 in POSIX.1-2017. Nova izdaja vključuje popravke 59 razvijalcev.

Nekatere izboljšave, implementirane v Glibc 2.36, vključujejo:

  • Dodana podpora za novo obliko premestitve naslova DT_RELR (relativna premestitev), ki vam omogoča zmanjšanje velikosti relativnih premestitev v predmetih v skupni rabi in izvedljivih datotekah, povezanih v načinu PIE (od položaja neodvisne izvršljive datoteke). Uporaba polja DT_RELR v datotekah ELF zahteva podporo za možnost "-z pack-relative-relocs" v povezovalniku, uvedeno v izdaji binutils 2.38.
  • Za platformo Linux so implementirane funkcije pidfd_open, pidfd_getfd in pidfd_send_signal, ki zagotavljajo dostop do funkcionalnosti pidfd, ki pomaga obravnavati situacije ponovne uporabe PID za natančnejšo identifikacijo procesov, ki dostopajo do nadzorovanih datotek (pidfd je povezan z določenim procesom in se ne spreminja, medtem ko lahko PID priključiti drugemu procesu po zaključku trenutnega procesa, povezanega s tem PID).
  • Za platformo Linux je bila dodana funkcija process_madvise(), ki enemu procesu omogoča, da izda sistemski klic madvise() v imenu drugega procesa in identificira ciljni proces s pidfd. Prek madvise() lahko jedro obvestite o funkcijah dela s pomnilnikom, da optimizirate upravljanje pomnilnika procesa; na primer, na podlagi posredovanih informacij lahko jedro sproži sprostitev dodatnega prostega pomnilnika. Klic madvise() s strani drugega procesa je morda potreben v situaciji, ko informacije, potrebne za optimizacijo, trenutnemu procesu niso znane, vendar jih usklajuje ločen proces nadzora v ozadju, ki lahko neodvisno sproži odstranitev neuporabljenega pomnilnika iz procesov.
  • Za platformo Linux je dodana funkcija process_mrelease(), ki omogoča pospešitev sproščanja pomnilnika za proces, ki zaključi svojo izvedbo. V normalnih okoliščinah sprostitev virov in prekinitev procesa nista trenutna in sta lahko odložena zaradi različnih razlogov, kar moti sisteme zgodnjega odziva pomnilnika uporabniškega prostora, kot je oomd (zagotavlja systemd). S klicem process_mrelease lahko taki sistemi bolj predvidljivo sprožijo povrnitev pomnilnika iz vsiljenih procesov.
  • V vgrajeni implementaciji razreševalnika DNS je bila dodana podpora za možnost »no-aaaa«, ki omogoča onemogočanje pošiljanja poizvedb DNS za zapise AAAA (določanje naslova IPv6 z imenom gostitelja), tudi pri izvajanju NSS funkcije, kot je getaddrinfo(), za poenostavitev diagnoze težav. Ta možnost ne vpliva na obdelavo vezav naslovov IPv6, definiranih v /etc/hosts, in klicev getaddrinfo() z zastavico AI_PASSIVE.
  • Za platformo Linux so bile dodane funkcije fsopen, fsmount, move_mount, fsconfig, fspick, open_tree in mount_setattr, ki omogočajo dostop do novega API-ja jedra za upravljanje namestitve datotečnega sistema na podlagi imenskih prostorov napenjanja. Predlagane funkcije vam omogočajo ločeno obdelavo različnih stopenj namestitve (obdelava superbloka, pridobitev informacij o datotečnem sistemu, namestitev, pritrditev na točko namestitve), ki so bile prej izvedene s skupno funkcijo mount(). Ločene funkcije nudijo možnost izvajanja bolj zapletenih scenarijev vpenjanja in ločenega izvajanja operacij, kot je ponovna konfiguracija superbloka, omogočanje možnosti, spreminjanje točke vpenjanja in premikanje v drug imenski prostor. Poleg tega vam ločena obdelava omogoča, da natančno določite razloge za izpis kod napak in nastavite več virov za večplastne datotečne sisteme, kot so prekrivanja.
  • localedef zagotavlja podporo za obdelavo datotek z definicijo področne nastavitve, ki so na voljo v kodiranju UTF-8 namesto v ASCII.
  • Dodane funkcije za pretvorbo večbajtnih kodiranj mbrtoc8 in c8rtomb v specifikacije ISO C2X N2653 in C++20 P0482R6.
  • Dodana podpora za tip char8_t, opredeljen v osnutku standarda ISO C2X N2653.
  • Dodane funkcije arc4random, arc4random_buf in arc4random_uniform, ki zagotavljajo ovoje nad sistemskim klicem getrandom in vmesnikom /dev/urandom, ki vrne visokokakovostna psevdonaključna števila.
  • Ko deluje na platformi Linux, podpira arhitekturo nabora navodil LoongArch, ki se uporablja v procesorjih Loongson 3 5000, in implementira novi RISC ISA, podoben MIPS in RISC-V. V trenutni obliki je na voljo samo podpora za 64-bitno različico LoongArch (LA64). Za delovanje potrebujete vsaj različice binutils 2.38, GCC 12 in jedro Linuxa 5.19.
  • Mehanizem predpovezave, kot tudi z njim povezane spremenljivke okolja LD_TRACE_PRELINKING in LD_USE_LOAD_BIAS ter zmožnosti povezovalnika so bili opuščeni in bodo odstranjeni v prihodnji izdaji.
  • Odstranjena koda za preverjanje različice jedra Linuxa in ravnanje s spremenljivko okolja LD_ASSUME_KERNEL. Najmanjša različica jedra, ki je podprta pri gradnji Glibc, je določena s poljem ELF NT_GNU_ABI_TAG.
  • Spremenljivka okolja LD_LIBRARY_VERSION je bila ukinjena na platformi Linux.

Vir: opennet.ru

Dodaj komentar