Efter seks måneders udvikling er frigivelsen af systembiblioteket GNU C Library (glibc) 2.36 blevet offentliggjort. Denne version opfylder fuldt ud kravene i standarderne ISO C11 og POSIX.1-2017. Den nye udgave indeholder rettelser fra 59 udviklere.
Blandt de forbedringer, der er implementeret i Glibc 2.36, kan nævnes:
- Understøttelse af det nye format til relative adresser DT_RELR (relative relocation) er blevet tilføjet, hvilket gør det muligt at reducere størrelsen af relative flytninger i delte objekter og eksekverbare filer, der er samlet i position-uafhængig tilstand (Position-independent executables). For at bruge DT_RELR-feltet i ELF-filer kræves understøttelse af indstillingen "-z pack-relative-relocs" i linkeren, som blev introduceret i binutils 2.38.
- For Linux-platformen er funktionerne pidfd_open, pidfd_getfd og pidfd_send_signal blevet implementeret, hvilket giver adgang til pidfd-funktionaliteten, der hjælper med at håndtere situationer med genbrug af PID for mere præcis identifikation af processer, der interagerer med overvågede filer (pidfd er knyttet til en specifik proces og ændres ikke, mens PID kan bindes til en anden proces efter afslutningen af den nuværende proces, der er knyttet til denne PID).
- For Linux-platformen er funktionen process_madvise() blevet tilføjet, hvilket giver en proces mulighed for at udføre systemopkaldet madvise() på vegne af en anden proces ved at identificere målaprosessen med pidfd. Via madvise() kan kernen informeres om særlige forhold vedrørende hukommelsesarbejde for at optimere hukommelsesstyringen af processen, for eksempel kan kernen initiere frigivelsen af ekstra ledig hukommelse baseret på de oplysninger, der gives. Opkald af madvise() fra en anden proces kan være nødvendigt i situationer, hvor de oplysninger, der er nødvendige for optimering, ikke er kendt af den nuværende proces, men koordineres af en separat baggrundsstyringsproces, der selv kan initiere tilbagetrækning af ubrugt hukommelse fra processerne.
- Til Linux-platformen er der tilføjet en funktion process_mrelease(), som muliggør hurtigere frigivelse af hukommelse for den proces, der afslutter sin kørsel. Under normale omstændigheder udføres frigivelsen af ressourcer og afslutning af processen ikke øjeblikkeligt og kan forsinkes af forskellige årsager, hvilket hæmmer driften af de systemer til tidlig reaktion på hukommelsesmangel, som fungerer i brugerens rum, såsom oomd (tilvejebragt i systemd). Ved hjælp af kaldet process_mrelease kan sådanne systemer mere forudsigeligt initiere tilbagegivelsen af hukommelse fra tvangsafsluttede processer.
- Den indbyggede implementering af DNS-resolveren har fået støtte til indstillingen "no-aaaa", som muliggør at deaktivere sending af DNS-forespørgsler om AAAA-poster (bestemmelse af IPv6-adressen ud fra værtsnavnet) for at forenkle diagnosticering af problemer, herunder ved udførelse af NSS-funktioner, såsom getaddrinfo(). Indstillingen påvirker ikke behandlingen af IPv6-adresser, der er defineret i /etc/hosts og kald til getaddrinfo() med flaget AI_PASSIVE.
- Til Linux-platformen er der tilføjet funktioner som fsopen, fsmount, move_mount, fsconfig, fspick, open_tree og mount_setattr, som giver adgang til det nye kerne-API til håndtering af montering af filsystemer med hensyn til mount namespaces. De foreslåede funktioner muliggør en separat behandling af de forskellige trin i monteringsprocessen (behandling af superblok, indhentning af filsysteminformation, montering, vedhæftning til monteringspunkt), som tidligere blev udført ved hjælp af den generelle funktion mount(). De separate funktioner giver mulighed for at udføre mere komplekse monteringsscenarier og særskilt udføre operationer såsom omkonfiguration af superblok, aktivering af indstillinger, ændring af monteringspunkt og flytning til et andet namespace. Derudover muliggør den separate behandling en præcis identifikation af årsagerne til fejlkoder og angivelse af flere kilder til lagdelte filsystemer som overlayfs.
- I localedef er der implementeret support til behandling af filer med lokaledefinitioner, der leveres i UTF-8-kodning i stedet for ASCII.
- Der er tilføjet funktioner til konvertering af multibyte-kodninger, mbrtoc8 og c8rtomb, der svarer til specifikationerne ISO C2X N2653 og C++20 P0482R6.
- Der er tilføjet support for typen char8_t, som er defineret i udkastet til standarden ISO C2X N2653.
- Funktionerne arc4random, arc4random_buf og arc4random_uniform er blevet tilføjet, og de giver indpakninger omkring systemopkaldet getrandom og grænsefladen /dev/urandom, der returnerer pseudotilfældige tal af høj kvalitet.
- På Linux-platformen er der implementeret support for LoongArch-instruktionssættet, som anvendes i Loongson 3 5000-processorerne, og som implementerer en ny RISC ISA, der ligner MIPS og RISC-V. I sin nuværende form er kun 64-bit versionen af LoongArch (LA64) tilgængelig. Der kræves mindst versionerne binutils 2.38, GCC 12 og Linux-kernen 5.19 for at kunne anvende det.
- Mechanismen prelink er erklæret forældet og vil blive fjernet i næste udgave, sammen med de relaterede miljøvariabler LD_TRACE_PRELINKING og LD_USE_LOAD_BIAS samt linkerfunktionaliteter.
- Koden til versionstjek af Linux-kernen og behandlingen af miljøvariablen LD_ASSUME_KERNEL er blevet fjernet. Den mindst understøttede version af kernen ved opbygning af Glibc bestemmes gennem ELF-feltet NT_GNU_ABI_TAG.
- Support for miljøvariablen LD_LIBRARY_VERSION er blevet fjernet på Linux-platformen.
Kilde: opennet.ru
