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 je podpora za nov format DT_RELR (relativna premestitev), ki zmanjša velikost relativnih premestitev v deljenih objektih in izvedljivih datotekah, povezanih v načinu PIE (Position-Independent Executables). Uporaba polja DT_RELR v datotekah ELF zahteva podporo za možnost povezovalnika »-z pack-relative-relocs«, ki je bila uvedena v binutils 2.38.
- Za platformo Linux Implementirane so bile funkcije pidfd_open, pidfd_getfd in pidfd_send_signal, ki omogočajo dostop do funkcionalnosti pidfd, ki pomaga pri obvladovanju situacij s ponovno uporabo PID-ov za natančnejšo identifikacijo procesov, ki dostopajo do nadzorovanih datotek (pidfd je povezan z določenim procesom in se ne spreminja, medtem ko je PID mogoče povezati z drugim procesom, potem ko se trenutni proces, povezan s tem PID-om, zaključi).
- Za platformo Linux Dodana je bila funkcija process_madvise(), ki omogoča enemu procesu, da izvede sistemski klic madvise() v imenu drugega procesa, pri čemer ciljni proces identificira z uporabo pidfd. Funkcija madvise() se lahko uporabi za obveščanje jedra o podrobnostih uporabe pomnilnika za optimizacijo upravljanja pomnilnika procesa; jedro lahko na primer uporabi posredovane informacije za sprožitev sproščanja dodatnega prostega pomnilnika. Klic funkcije madvise() s strani drugega procesa je lahko potreben v primerih, ko trenutnemu procesu niso znane informacije, ki jih koordinira ločen proces za nadzor v ozadju, ki lahko neodvisno sproži sproščanje neuporabljenega pomnilnika iz procesov.
- Za platformo Linux Dodana je bila funkcija process_mrelease(), ki pospešuje sproščanje pomnilnika iz procesa, ki se zaključuje. V normalnih pogojih sproščanje virov in zaključek procesa nista takojšnja in se lahko zaradi različnih razlogov odložita, kar moti sisteme za opozarjanje na pritisk pomnilnika v uporabniškem prostoru, kot je oomd (ki ga zagotavlja systemd). S klicem process_mrelease lahko takšni sistemi bolj predvidljivo sprožijo ponovno pridobivanje pomnilnika iz prisilno zaključenih procesov.
- Vgrajena implementacija razreševalnika DNS zdaj podpira možnost »no-aaaa«. Ta možnost vam omogoča, da onemogočite poizvedbe DNS za zapise AAAA (razreševanje naslovov IPv6 na podlagi imena gostitelja), da poenostavite odpravljanje težav, vključno z izvajanjem funkcij NSS, kot je getaddrinfo(). Ta možnost ne vpliva na obdelavo vezav naslovov IPv6, definiranih v /etc/hosts ali klicih getaddrinfo() z zastavico AI_PASSIVE.
- Za platformo Linux Dodane so bile funkcije fsopen, fsmount, move_mount, fsconfig, fspick, open_tree in mount_setattr, ki omogočajo dostop do novega API-ja jedra za upravljanje priklopa datotečnega sistema glede na imenske prostore priklopa. Te funkcije omogočajo ločeno obdelavo različnih stopenj priklopa (obdelava superbloka, pridobivanje informacij o datotečnem sistemu, priklop in pritrditev na točko priklopa), ki so se prej izvajale s skupno funkcijo mount(). Te ločene funkcije omogočajo bolj zapletene scenarije priklopa in ločene operacije, kot so ponovna konfiguracija superbloka, omogočanje možnosti, spreminjanje točke priklopa in premikanje v drug imenski prostor. Poleg tega ločena obdelava omogoča natančno določanje vzrokov kod napak in specifikacijo več virov za večplastne datotečne sisteme, kot je overlayfs.
- localedef izvaja podporo za obdelavo datotek z definicijami lokalnih nastavitev, podanimi v kodiranju UTF-8 namesto ASCII.
- Dodane funkcije za pretvorbo večbajtnih kodiranj mbrtoc8 in c8rtomb, ki ustrezajo specifikacijama ISO C2X N2653 in C++20 P0482R6.
- Dodana je podpora za tip char8_t, definiran v osnutku standarda ISO C2X N2653.
- Dodane funkcije arc4random, arc4random_buf in arc4random_uniform, ki zagotavljajo ovojnice okoli sistemskega klica getrandom in vmesnika /dev/urandom, ki vračajo visokokakovostna psevdonaključna števila.
- Pri delu na platformi Linux Implementirana je bila podpora za arhitekturo nabora ukazov LoongArch (ISA), ki se uporablja v procesorjih Loongson 3 5000. Ta arhitektura implementira nov RISC ISA, podoben MIPS in RISC-V. Trenutno je na voljo le podpora za 64-bitno različico LoongArch (LA64). Za to so potrebni vsaj binutils 2.38, GCC 12 in jedro. Linux 5.19.
- Mehanizem predhodnega povezovanja, skupaj s pripadajočimi okoljskimi spremenljivkami LD_TRACE_PRELINKING in LD_USE_LOAD_BIAS ter funkcijami povezovalnika, je zastarel in bo odstranjen v prihodnji izdaji.
- Odstranjena koda za preverjanje različice jedra Linux in obdelavo okoljske spremenljivke LD_ASSUME_KERNEL. Najmanjša različica jedra, ki je podprta med prevajanjem Glibc, je določena s poljem ELF NT_GNU_ABI_TAG.
- Na platformi Linux Podpora za okoljsko spremenljivko LD_LIBRARY_VERSION je bila ukinjena.
Vir: opennet.ru
