Glibc 2.36 System Library Release

Efter sex månaders utveckling har GNU C Library (glibc) 2.36-systembiblioteket släppts, som helt uppfyller kraven i ISO C11- och POSIX.1-2017-standarderna. Den nya utgåvan innehåller korrigeringar från 59 utvecklare.

Några av förbättringarna som implementerats i Glibc 2.36 inkluderar:

  • Lagt till stöd för det nya DT_RELR (relativ omlokalisering) adressflyttningsformatet, vilket låter dig minska storleken på relativa omlokaliseringar i delade objekt och körbara filer länkade i PIE-läge (Positionsoberoende körbara filer). Att använda fältet DT_RELR i ELF-filer kräver stöd för alternativet "-z pack-relative-relocs" i länken, som introducerades i releasen av binutils 2.38.
  • För Linux-plattformen är funktionerna pidfd_open, pidfd_getfd och pidfd_send_signal implementerade, vilket ger tillgång till pidfd-funktionalitet som hjälper till att hantera PID-återanvändningssituationer för att mer exakt identifiera processer som kommer åt övervakade filer (pidfd är associerat med en specifik process och ändras inte, medan PID kan kopplas till en annan process efter att den aktuella processen som är associerad med den PID avslutas).
  • För Linux-plattformen har process_madvise()-funktionen lagts till för att tillåta en process att utfärda madvise()-systemanropet på uppdrag av en annan process, identifiera målprocessen med pidfd. Genom madvise() kan du informera kärnan om funktionerna i att arbeta med minne för att optimera minneshanteringen; till exempel, baserat på den överförda informationen, kan kärnan initiera frisläppandet av ytterligare ledigt minne. Ett anrop till madvise() av ​​en annan process kan krävas i en situation där informationen som behövs för optimering är okänd för den aktuella processen, men koordineras av en separat bakgrundskontrollprocess, som självständigt kan initiera borttagning av oanvänt minne från processer.
  • För Linux-plattformen har funktionen process_mrelease() lagts till, vilket gör att du kan påskynda frigöringen av minne för en process som slutför dess exekvering. Under normala omständigheter sker inte resursfrigöring och processavslutning omedelbart och kan försenas av olika anledningar, vilket stör användarutrymmets tidiga svarssystem som oomd (tillhandahålls av systemd). Genom att anropa process_mrelease kan sådana system mer förutsägbart utlösa återhämtning av minne från forcerade processer.
  • Stöd för alternativet "no-aaaa" har lagts till i den inbyggda implementeringen av DNS-resolvern, som låter dig inaktivera sändningen av DNS-förfrågningar för AAAA-poster (bestämma en IPv6-adress genom värdnamn), inklusive när du kör NSS funktioner som getaddriinfo(), för att förenkla problemdiagnostik. Det här alternativet påverkar inte behandlingen av IPv6-adressbindningar definierade i /etc/hosts och anrop till getaddriinfo() med flaggan AI_PASSIVE.
  • För Linux-plattformen har funktionerna fsopen, fsmount, move_mount, fsconfig, fspick, open_tree och mount_setattr lagts till, vilket ger tillgång till ett nytt kärn-API för hantering av filsystemsmontering baserat på monteringsnamnrymder. De föreslagna funktionerna tillåter dig att separat bearbeta olika monteringssteg (bearbeta superblocket, få information om filsystemet, montera, fästa vid monteringspunkten), som tidigare utfördes med funktionen common mount() . Separata funktioner ger möjlighet att utföra mer komplexa monteringsscenarier och separat utföra operationer som att konfigurera om superblocket, aktivera alternativ, ändra monteringspunkten och flytta till ett annat namnområde. Dessutom låter separat bearbetning dig exakt bestämma orsakerna till utmatningen av felkoder och ställa in flera källor för filsystem med flera lager, till exempel överlagringar.
  • localedef ger stöd för bearbetning av språkdefinitionsfiler som tillhandahålls i UTF-8-kodning istället för ASCII.
  • Tillagda funktioner för att konvertera multi-byte mbrtoc8 och c8rtomb-kodningar till ISO C2X N2653 och C++20 P0482R6 specifikationer.
  • Tillagt stöd för char8_t-typen som definieras i utkastet till ISO C2X N2653-standard.
  • Lade till funktionerna arc4random, arc4random_buf och arc4random_uniform som tillhandahåller omslag över det slumpmässiga systemanropet och gränssnittet /dev/urandom som returnerar högkvalitativa pseudoslumptal.
  • När den körs på Linux-plattformen stöder den LoongArch-instruktionsuppsättningsarkitekturen som används i Loongson 3 5000-processorerna och implementerar den nya RISC ISA, liknande MIPS och RISC-V. I sin nuvarande form är endast stöd för 64-bitarsversionen av LoongArch (LA64) tillgängligt. För att fungera behöver du åtminstone versioner av binutils 2.38, GCC 12 och Linux-kärnan 5.19.
  • Förlänksmekanismen, liksom dess associerade miljövariabler LD_TRACE_PRELINKING och LD_USE_LOAD_BIAS och länkfunktioner, har fasats ut och kommer att tas bort i en framtida version.
  • Borttagen kod för att kontrollera Linux-kärnversionen och hantera miljövariabeln LD_ASSUME_KERNEL. Den minsta versionen av kärnan som stöds när man bygger Glibc bestäms genom ELF-fältet NT_GNU_ABI_TAG.
  • Miljövariabeln LD_LIBRARY_VERSION har upphört på Linux-plattformen.

Källa: opennet.ru

Lägg en kommentar