Efter sex mÄnaders utveckling har version 2.36 av det systembibliotek som ingÄr i GNU C Library (glibc) nu publicerats. Den följer fullt ut kraven i standarderna ISO C11 och POSIX.1-2017. Den nya versionen innehÄller rÀttelser frÄn 59 utvecklare.
Bland förbÀttringarna i Glibc 2.36 kan följande nÀmnas:
- Stöd för det nya formatet för relativa adresser DT_RELR (relativ omplacering) har lagts till, vilket gör det möjligt att minska storleken pÄ relativa omplaceringar i delade objekt och körbara filer som har lÀnkats i lÀge med PIE (positionsoberoende körbara filer). För att anvÀnda fÀltet DT_RELR i ELF-filer behövs stöd för alternativet "-z pack-relative-relocs" i lÀnkaren, som introducerades i versionen binutils 2.38.
- För Linux-plattformen har funktionerna pidfd_open, pidfd_getfd och pidfd_send_signal implementerats, vilket ger Ätkomst till pidfd-funktionalitet som hjÀlper till att hantera situationer med ÄteranvÀndning av PID för mer exakt identifiering av processer som Ätkommer spÄrade filer (pidfd Àr kopplat till en specifik process och Àndras inte, medan PID kan knytas till en annan process efter att den aktuella processen har avslutats, vilket Àr kopplad till denna PID).
- För Linux-plattformen har funktionen process_madvise() lagts till, vilket möjliggör att en process kan utföra systemanropet madvise() Ä en annan process vÀgnar, genom att identifiera den mÄlinriktade processen med hjÀlp av pidfd. Genom madvise() kan kÀrnan informeras om minneshanteringen för att optimera hanteringen av processens minne; till exempel, baserat pÄ den information som skickas kan kÀrnan initiera frigöring av ytterligare ledigt minne. Anropet madvise() frÄn en annan process kan behövas i situationer dÀr informationen som krÀvs för optimering Àr okÀnd för den aktuella processen och koordineras av en separat bakgrundshanteringsprocess, som sjÀlv kan initiera borttagningen av oanvÀnt minne frÄn processerna.
- För Linux-plattformen har funktionen process_mrelease() lagts till, vilket möjliggör snabbare frigöring av minnet för processer som avslutar sin körning. Under normala omstÀndigheter frigörs resurser och processer avslutas inte omedelbart och kan av olika anledningar dröja, vilket hindrar funktionerna hos anvÀndarutrymmet för tidig respons pÄ minnesbrist, sÄsom oomd (tillhandahÄlls av systemd). Genom att anvÀnda anropet process_mrelease kan sÄdana system mer förutsÀgbart initiera minnesÄterlÀmning frÄn tvÄngsavslutade processer.
- Den inbyggda implementeringen av DNS-resolvatorn har fÄtt stöd för alternativet "no-aaaa", vilket gör det möjligt att för att förenkla felsökningen av problem inaktivera avsÀndning av DNS-förfrÄgningar för AAAA-poster (bestÀmning av IPv6-adress frÄn vÀrdnamn), inklusive nÀr NSS-funktioner som getaddrinfo() anvÀnds. Alternativet pÄverkar inte behandlingen av IPv6-adresser som definieras i /etc/hosts och anrop av getaddrinfo() med flaggan AI_PASSIVE.
- För Linux-plattformen har funktioner som fsopen, fsmount, move_mount, fsconfig, fspick, open_tree och mount_setattr lagts till, vilket ger Ätkomst till ett nytt kÀrn-API för hantering av montering av filsystem med hÀnsyn till utrymmen för monteringsnamn (mount namespaces). De föreslagna funktionerna möjliggör separat hantering av olika monteringsfaser (bearbeta superblock, hÀmta information om FS, montera, koppla till monteringspunkt), som tidigare utfördes med hjÀlp av den gemensamma funktionen mount(). Separata funktioner ger möjlighet att utföra mer komplexa monteringsscenarier och utföra operationer som omkonfigurering av superblock, aktivera alternativ, Àndra monteringspunkt och flytta till ett annat namnrum. Dessutom möjliggör separat hantering att exakt ange orsaken till felkoder och stÀlla in flera kÀllor för flerlagrade FS, som overlayfs.
- I localedef har stöd för hantering av filer med lokaliseringsdefinitioner som levereras i UTF-8-kodning istÀllet för ASCII implementerats.
- Funktioner för omvandling av flerbytekodningar mbrtoc8 och c8rtomb, som motsvarar specifikationerna ISO C2X N2653 och C++20 P0482R6, har lagts till.
- Stöd för datatypen char8_t, som definieras i utkastet till standarden ISO C2X N2653, har lagts till.
- Funktioner som arc4random, arc4random_buf och arc4random_uniform har lagts till, vilket ger kapslingar över systemanropet getrandom och grÀnssnittet /dev/urandom, som returnerar högkvalitativa pseudorandomnummer.
- Stödet för kommandosetsarkitekturen LoongArch, som anvÀnds i Loongson 3 5000-processorerna och implementerar en ny RISC ISA som liknar MIPS och RISC-V, har implementerats för Linux-plattformen. För nÀrvarande finns endast stöd för 64-bitars versionen av LoongArch (LA64). Minimikraven Àr versioner av binutils 2.38, GCC 12 och Linux-kÀrnan 5.19.
- Prelink-mekanismen har förklarats som förÄldrad och kommer att tas bort i nÀsta version, liksom de relaterade miljövariablerna LD_TRACE_PRELINKING och LD_USE_LOAD_BIAS samt lÀnkaren.
- Koden för att kontrollera versionen av Linux-kÀrnan och bearbeta miljövariabeln LD_ASSUME_KERNEL har tagits bort. Den minimi stödda kÀrnversionen vid sammansÀttning av Glibc bestÀms via ELF-fÀltet NT_GNU_ABI_TAG.
- Stödet för miljövariabeln LD_LIBRARY_VERSION har upphört pÄ Linux-plattformen.
KĂ€lla: opennet.ru
