Nakon šest mjeseci razvoja, objavljeno je izdanje sistemske biblioteke GNU C Library (glibc) 2.36, koja u potpunosti ispunjava zahtjeve standarda ISO C11 i POSIX.1-2017. Novi izdanak uključuje ispravke od 59 programera.
Od poboljšanja implementiranih u Glibc 2.36, mogu se istaknuti:
- Dodana je podrška za novi format relativnog premještanja adresa DT_RELR (relativna relokacija), koji omogućava smanjenje veličine relativnih premještanja u dijeljenim objektima i izvršnim datotekama sastavljenim u načinu s PIE (izvršne datoteke neovisne o položaju). Za korištenje polja DT_RELR u ELF datotekama potrebna je podrška opcije „-z pack-relative-relocs” u linkeru, koja se pojavila u izdanju seta binutils 2.38.
- Za Linux platformu implementirane su funkcije pidfd_open, pidfd_getfd i pidfd_send_signal, koje omogućavaju pristup funkcionalnosti pidfd, pomažući u obradi situacija sa ponovnom upotrebom PID-a za precizniju identifikaciju procesa koji pristupaju praćenim datotekama (pidfd je povezan s konkretnim procesom i ne mijenja se, dok se PID može vezati uz drugi proces nakon završetka trenutnog procesa povezanog s tim PID-om).
- Za Linux platformu dodana je funkcija process_madvise(), koja omogućava jednom procesu da izvrši sistemski poziv madvise() u ime drugog procesa, identificirajući ciljanu procese pomoću pidfd. Putem madvise() moguće je obavijestiti jezgru o posebnim aspektima rada s memorijom radi optimizacije upravljanja memorijom procesa, na primjer, na temelju proslijeđenih informacija jezgra može inicirati oslobađanje dodatne slobodne memorije. Poziv madvise() od strane drugog procesa može biti potreban u situaciji kada informacije potrebne za optimizaciju nisu poznate trenutnom procesu, a koordinira ih zaseban pozadinski upravljački proces, koji sam može inicirati povlačenje neiskorištene memorije od procesa.
- Za Linux platformu dodana je funkcija process_mrelease(), koja omogućava brže oslobađanje memorije procesa koji završava svoje izvršavanje. U normalnim uvjetima oslobađanje resursa i završavanje procesa ne događa se odmah i iz različitih razloga može biti odgođeno, što ometa rad sustava ranog reagiranja na nedostatak memorije, kao što je oomd (dostupno u systemd). Uz poziv process_mrelease, takvi sustavi mogu predvidljivije pokrenuti vraćanje memorije od prisilno završavanih procesa.
- U ugrađenu implementaciju DNS rezolvera dodana je podrška za opciju "no-aaaa", koja omogućava isključivanje slanja DNS zahtjeva za AAAA zapisima (definicija IPv6 adrese prema imenu hosta) radi pojednostavljenja dijagnostike problema, uključujući izvedbu NSS funkcija, poput getaddrinfo(). Opcija ne utječe na obradu IPv6 adresa definiranim u /etc/hosts i pozive getaddrinfo() s flagom AI_PASSIVE.
- Za Linux platformu dodane su funkcije fsopen, fsmount, move_mount, fsconfig, fspick, open_tree i mount_setattr, koje omogućavaju pristup novom API-ju jezgre za upravljanje montiranjem datotečnih sustava uzimajući u obzir prostore imena točaka montiranja (mount namespaces). Predložene funkcije omogućuju odvojenu obradu različitih faza montiranja (obrada superbloka, dobivanje informacija o FS-u, montiranje, vezanje na točku montiranja), koje su se ranije izvodile putem zajedničke funkcije mount(). Odvojene funkcije omogućuju izvođenje složenijih scenarija montiranja i posebno izvršavanje takvih operacija kao što su ponovna konfiguracija superbloka, uključivanje opcija, promjena točke montiranja i premještanje u drugi prostor imena. Osim toga, odvojena obrada omogućuje točno određivanje uzroka izlaza kodova pogrešaka i postavljanje više izvora za višeslojne datotečne sustave, poput overlayfs.
- U localedef implementirana je podrška za obradu datoteka s definicijama lokalizacija, isporučenih u UTF-8 kodiranju umjesto ASCII.
- Dodane su funkcije za pretvaranje više bajtnih kodiranja mbrtoc8 i c8rtomb, koje odgovaraju specifikacijama ISO C2X N2653 i C++20 P0482R6.
- Dodana je podrška za tip char8_t, definiran u nacrtu standarda ISO C2X N2653.
- Dodane su funkcije arc4random, arc4random_buf i arc4random_uniform, koje pružaju omot oko sistemskog poziva getrandom i interfejsa /dev/urandom, vraćajući visokokvalitetne pseudonarandome.
- Na Linux platformi implementirana je podrška za arhitekturu LoongArch, koja se koristi u procesorima Loongson 3 5000 i koja prihvata novi RISC ISA, sličan MIPS-u i RISC-V-u. U trenutnoj verziji dostupna je samo podrška za 64-bitnu varijantu LoongArch (LA64). Potrebno je imati najmanje verzije binutils 2.38, GCC 12 i Linux jezgro 5.19.
- Prelink mehanizam je proglašen zastarjelim i bit će uklonjen u sljedećem izdanju, zajedno s povezanim varijablama okruženja LD_TRACE_PRELINKING i LD_USE_LOAD_BIAS, te mogućnostima linker-a.
- Uklonjen je kod za provjeru verzije Linux jezgra i obrada varijable okruženja LD_ASSUME_KERNEL. Minimalna verzija jezgra koja se podržava prilikom sastavljanja Glibc određena je putem ELF polja NT_GNU_ABI_TAG.
- Na Linux platformi prestaje podrška za varijablu okruženja LD_LIBRARY_VERSION.
Izvor: opennet.ru
