Glibc 2.36 System Library Release

Efter seks måneders udvikling er GNU C Library (glibc) 2.36 systembiblioteket blevet frigivet, som fuldt ud overholder kravene i ISO C11 og POSIX.1-2017 standarderne. Den nye udgivelse indeholder rettelser fra 59 udviklere.

Nogle af forbedringerne implementeret i Glibc 2.36 inkluderer:

  • Tilføjet understøttelse af det nye DT_RELR (relative relocation) adresseflytningsformat, som giver dig mulighed for at reducere størrelsen af ​​relative flytninger i delte objekter og eksekverbare filer forbundet i PIE-tilstand (Position-uafhængige eksekverbare). Brug af DT_RELR-feltet i ELF-filer kræver understøttelse af "-z pack-relative-relocs"-indstillingen i linkeren, introduceret i udgivelsen af ​​binutils 2.38.
  • For Linux-platformen er funktionerne pidfd_open, pidfd_getfd og pidfd_send_signal implementeret, hvilket giver adgang til pidfd-funktionalitet, der hjælper med at håndtere PID-genbrugssituationer for mere præcist at identificere processer, der tilgår overvågede filer (pidfd er forbundet med en specifik proces og ændres ikke, mens PID kan knyttes til en anden proces, efter at den aktuelle proces, der er knyttet til den pågældende PID, afsluttes).
  • For Linux-platformen er process_madvise()-funktionen blevet tilføjet for at give én proces mulighed for at udstede madvise()-systemkaldet på vegne af en anden proces, der identificerer målprocessen ved hjælp af pidfd. Gennem madvise() kan du informere kernen om funktionerne ved at arbejde med hukommelse for at optimere proceshukommelsesstyringen; for eksempel, baseret på den overførte information, kan kernen starte frigivelsen af ​​yderligere ledig hukommelse. Et opkald til madvise() af en anden proces kan være påkrævet i en situation, hvor den nødvendige information til optimering er ukendt for den aktuelle proces, men koordineres af en separat baggrundskontrolproces, som selvstændigt kan initiere fjernelse af ubrugt hukommelse fra processer.
  • Til Linux-platformen er process_mrelease()-funktionen blevet tilføjet, som giver dig mulighed for at fremskynde frigivelsen af ​​hukommelse for en proces, der fuldender dens eksekvering. Under normale omstændigheder er ressourcefrigivelse og procesafslutning ikke øjeblikkelig og kan blive forsinket af forskellige årsager, hvilket interfererer med brugerpladshukommelses tidlige responssystemer såsom oomd (leveret af systemd). Ved at kalde process_mrelease kan sådanne systemer mere forudsigeligt udløse genvinding af hukommelse fra tvungne processer.
  • Understøttelse af "no-aaaa"-muligheden er blevet tilføjet til den indbyggede implementering af DNS-resolveren, som giver dig mulighed for at deaktivere afsendelse af DNS-anmodninger for AAAA-poster (bestemmelse af en IPv6-adresse ved værtsnavn), herunder når du udfører NSS funktioner som getaddriinfo(), for at forenkle problemdiagnose. Denne indstilling påvirker ikke behandlingen af ​​IPv6-adressebindinger defineret i /etc/hosts og kald til getaddriinfo() med flaget AI_PASSIVE.
  • Til Linux-platformen er funktionerne fsopen, fsmount, move_mount, fsconfig, fspick, open_tree og mount_setattr blevet tilføjet, hvilket giver adgang til en ny kerne-API til styring af filsystemmontering baseret på mount-navneområder. De foreslåede funktioner giver dig mulighed for separat at behandle forskellige monteringsstadier (behandle superblokken, indhente oplysninger om filsystemet, montere, vedhæfte til monteringspunktet), som tidligere blev udført ved hjælp af den fælles mount()-funktion. Separate funktioner giver mulighed for at udføre mere komplekse monteringsscenarier og separat udføre operationer såsom at rekonfigurere superblokken, aktivere muligheder, ændre monteringspunktet og flytte til et andet navneområde. Derudover giver separat behandling dig mulighed for nøjagtigt at bestemme årsagerne til output af fejlkoder og indstille flere kilder til flerlags filsystemer, såsom overlejringer.
  • localedef giver support til behandling af lokalitetsdefinitionsfiler, der leveres i UTF-8-kodning i stedet for ASCII.
  • Tilføjede funktioner til at konvertere multi-byte mbrtoc8 og c8rtomb-kodninger til ISO C2X N2653 og C++20 P0482R6 specifikationer.
  • Tilføjet understøttelse af char8_t-typen defineret i udkastet til ISO C2X N2653-standarden.
  • Tilføjede funktioner arc4random, arc4random_buf og arc4random_uniform, der giver indpakninger over det tilfældige systemkald og /dev/urandom-grænsefladen, der returnerer højkvalitets pseudorandom-numre.
  • Når den kører på Linux-platformen, understøtter den LoongArch-instruktionssæt-arkitekturen, der bruges i Loongson 3 5000-processorerne og implementerer den nye RISC ISA, der ligner MIPS og RISC-V. I sin nuværende form er kun understøttelse af 64-bit versionen af ​​LoongArch (LA64) tilgængelig. For at fungere skal du som minimum have versioner af binutils 2.38, GCC 12 og Linux-kerne 5.19.
  • Prelink-mekanismen såvel som dens tilknyttede LD_TRACE_PRELINKING- og LD_USE_LOAD_BIAS-miljøvariabler og linkeregenskaber er blevet forældet og vil blive fjernet i en fremtidig udgivelse.
  • Fjernet kode til kontrol af Linux-kerneversionen og håndtering af miljøvariablen LD_ASSUME_KERNEL. Minimumsversionen af ​​kernen, der understøttes, når Glibc bygges, bestemmes gennem ELF-feltet NT_GNU_ABI_TAG.
  • Miljøvariablen LD_LIBRARY_VERSION er udgået på Linux-platformen.

Kilde: opennet.ru

Tilføj en kommentar