Glibc 2.36 System Library Release

Etter seks måneders utvikling har GNU C Library (glibc) 2.36-systembiblioteket blitt utgitt, som fullt ut oppfyller kravene i ISO C11- og POSIX.1-2017-standardene. Den nye utgivelsen inkluderer rettelser fra 59 utviklere.

Noen av forbedringene implementert i Glibc 2.36 inkluderer:

  • Lagt til støtte for det nye DT_RELR (relative relocation) adresseflyttingsformatet, som lar deg redusere størrelsen på relative flyttinger i delte objekter og kjørbare filer koblet i PIE (Position-independent executables)-modus. Bruk av DT_RELR-feltet i ELF-filer krever støtte for alternativet "-z pack-relative-relocs" i linkeren, introdusert i utgivelsen av binutils 2.38.
  • For Linux-plattformen er funksjonene pidfd_open, pidfd_getfd og pidfd_send_signal implementert, og gir tilgang til pidfd-funksjonalitet som hjelper til med å håndtere PID-gjenbrukssituasjoner for mer nøyaktig å identifisere prosesser som får tilgang til overvåkede filer (pidfd er assosiert med en spesifikk prosess og endres ikke, mens PID kan kobles til en annen prosess etter at den gjeldende prosessen knyttet til den PID-en avsluttes).
  • For Linux-plattformen er process_madvise()-funksjonen lagt til for å tillate en prosess å utstede madvise()-systemanropet på vegne av en annen prosess, og identifisere målprosessen ved hjelp av pidfd. Gjennom madvise() kan du informere kjernen om funksjonene ved å arbeide med minne for å optimere prosessminnehåndtering; for eksempel, basert på den overførte informasjonen, kan kjernen starte utgivelsen av ekstra ledig minne. Et kall til madvise() fra en annen prosess kan være nødvendig i en situasjon der informasjonen som trengs for optimalisering er ukjent for gjeldende prosess, men koordineres av en egen bakgrunnskontrollprosess, som uavhengig kan initiere fjerning av ubrukt minne fra prosesser.
  • For Linux-plattformen er funksjonen process_mrelease() lagt til, som lar deg fremskynde utgivelsen av minne for en prosess som fullfører dens utførelse. Under normale omstendigheter er ressursfrigjøring og prosessavslutning ikke øyeblikkelig og kan bli forsinket av ulike årsaker, noe som forstyrrer brukerplassminne tidlige responssystemer som oomd (levert av systemd). Ved å kalle process_mrelease kan slike systemer mer forutsigbart utløse gjenvinning av minne fra tvungne prosesser.
  • Støtte for alternativet "no-aaaa" er lagt til den innebygde implementeringen av DNS-resolveren, som lar deg deaktivere sending av DNS-forespørsler for AAAA-poster (bestemme en IPv6-adresse ved vertsnavn), inkludert når du utfører NSS funksjoner som getaddriinfo(), for å forenkle problemdiagnose. Dette alternativet påvirker ikke behandlingen av IPv6-adressebindinger definert i /etc/hosts og kall til getaddriinfo() med flagget AI_PASSIVE.
  • For Linux-plattformen er funksjonene fsopen, fsmount, move_mount, fsconfig, fspick, open_tree og mount_setattr lagt til, og gir tilgang til et nytt kjerne-API for å administrere filsystemmontering basert på mount-navneområder. De foreslåtte funksjonene lar deg behandle forskjellige monteringsstadier separat (behandle superblokken, få informasjon om filsystemet, montere, feste til monteringspunktet), som tidligere ble utført ved å bruke felles mount()-funksjonen. Separate funksjoner gir muligheten til å utføre mer komplekse monteringsscenarier og separat utføre operasjoner som å rekonfigurere superblokken, aktivere alternativer, endre monteringspunktet og flytte til et annet navneområde. I tillegg lar separat behandling deg nøyaktig bestemme årsakene til utdata av feilkoder og angi flere kilder for flerlags filsystemer, for eksempel overlegg.
  • localedef gir støtte for behandling av lokalitetsdefinisjonsfiler levert i UTF-8-koding i stedet for ASCII.
  • Lagt til funksjoner for å konvertere multi-byte mbrtoc8 og c8rtomb-kodinger til ISO C2X N2653 og C++20 P0482R6 spesifikasjoner.
  • Lagt til støtte for char8_t-typen definert i utkastet til ISO C2X N2653-standarden.
  • Lagt til funksjoner arc4random, arc4random_buf og arc4random_uniform som gir innpakninger over det tilfeldige systemkallet og /dev/urandom-grensesnittet som returnerer høykvalitets pseudotilfeldige tall.
  • Når den kjøres på Linux-plattformen, støtter den LoongArch-instruksjonssettarkitekturen som brukes i Loongson 3 5000-prosessorene og implementerer den nye RISC ISA, som ligner på MIPS og RISC-V. I sin nåværende form er kun støtte for 64-bitsversjonen av LoongArch (LA64) tilgjengelig. For å fungere trenger du minst versjoner av binutils 2.38, GCC 12 og Linux-kjerne 5.19.
  • Forhåndskoblingsmekanismen, så vel som dens tilknyttede miljøvariabler LD_TRACE_PRELINKING og LD_USE_LOAD_BIAS og linkerfunksjoner, er avviklet og vil bli fjernet i en fremtidig utgivelse.
  • Fjernet kode for å sjekke Linux-kjerneversjonen og håndtering av miljøvariabelen LD_ASSUME_KERNEL. Minimumsversjonen av kjernen som støttes når du bygger Glibc, bestemmes gjennom ELF-feltet NT_GNU_ABI_TAG.
  • Miljøvariabelen LD_LIBRARY_VERSION er avviklet på Linux-plattformen.

Kilde: opennet.ru

Legg til en kommentar