Po šesti měsících vývoje byl zveřejněn release systémové knihovny GNU C Library (glibc) 2.36, která plně vyhovuje požadavkům norem ISO C11 a POSIX.1-2017. Nová verze obsahuje opravy od 59 vývojářů.
Mezi vylepšeními implementovanými v Glibc 2.36 je možné zmínit:
- Byla přidána podpora nového formátu relativních relokací adres DT_RELR (relative relocation), který umožňuje zmenšit velikost relativních relokací ve sdílených objektech a spustitelných souborech, které jsou sestaveny v režimu s PIE (Position-independent executables). Pro použití pole DT_RELR v ELF souborech je vyžadována podpora volby „-z pack-relative-relocs“ v linkeru, která se objevila ve verzi binutils 2.38.
- Pro platformu Linux byly implementovány funkce pidfd_open, pidfd_getfd a pidfd_send_signal, které poskytují přístup k funkcionalitě pidfd, usnadňující zpracování situací s opětovným použitím PID pro přesnější identifikaci procesů přistupujících ke sledovaným souborům (pidfd je spojen s konkrétním procesem a není měněn, zatímco PID může být přiřazen jinému procesu po ukončení aktuálního procesu souvisejícího s tímto PID).
- Pro platformu Linux byla přidána funkce process_madvise(), která umožňuje jednomu procesu provést systémový volání madvise() jménem jiného procesu, identifikující cílový proces pomocí pidfd. Pomocí madvise() lze informovat jádro o zvláštnostech práce s pamětí za účelem optimalizace správy paměti procesu, například na základě předaných informací může jádro iniciovat uvolnění dodatečné volné paměti. Volání madvise() jiným procesem může být nezbytné v situaci, kdy informace potřebné pro optimalizaci není aktuálnímu procesu známa, a koordinuje je samostatný pozadový správní proces, který může samostatně iniciovat odnětí nevyužívané paměti od procesů.
- Pro platformu Linux byla přidána funkce process_mrelease(), která umožňuje zrychlit uvolnění paměti procesu, který končí svou činnost. V běžných podmínkách je uvolnění prostředků a ukončení procesu provedeno ne okamžitě a z různých důvodů může být zpožděno, což brání správné funkci systémů pro včasné reakce na nedostatek paměti, jako je oomd (poskytovaný v systemd). Pomocí volání process_mrelease mohou tyto systémy předvídatelněji iniciovat vracení paměti od nuceně ukončovaných procesů.
- Do vestavěné implementace DNS resolveru byla přidána podpora pro volbu „no-aaaa“, což umožňuje pro zjednodušení diagnostiky problémů vypnout odesílání DNS dotazů na záznamy AAAA (určení adresy IPv6 podle názvu hostitele), včetně provádění NSS funkcí, jako je getaddrinfo(). Tato volba nemá vliv na zpracování vazeb IPv6 adres definovaných v /etc/hosts a volání getaddrinfo() s příflagem AI_PASSIVE.
- Pro platformu Linux byly přidány funkce fsopen, fsmount, move_mount, fsconfig, fspick, open_tree a mount_setattr, které poskytují přístup k novému API jádra pro správu montování souborových systémů se zřetelem na prostory názvů montovacích bodů (mount namespaces). Navržené funkce umožňují samostatně zpracovávat různé fáze montování (zpracovat superblok, získat informace o FS, přimontovat, připojit k montovacímu bodu), které byly dříve prováděny pomocí společné funkce mount(). Oddělené funkce umožňují provádět složitější scénáře montování a samostatně vykonávat operace, jako je přenastavení superbloku, zapnutí možností, změna montovacího bodu a přesun do jiného prostoru názvů. Navíc oddělené zpracování umožňuje přesně určit příčiny výstupu chybových kódů a zadat více zdrojů pro vícestupňové FS, jako je overlayfs.
- Do localedef byla implementována podpora pro zpracování souborů s definicemi lokalizací dodávaných v kódování UTF-8 místo ASCII.
- Byly přidány funkce pro převod vícibajtových kódování mbrtoc8 a c8rtomb, které odpovídají specifikacím ISO C2X N2653 a C++20 P0482R6.
- Byla přidána podpora typu char8_t, definovaného v návrhu standardu ISO C2X N2653.
- Byly přidány funkce arc4random, arc4random_buf a arc4random_uniform, které poskytují obálky nad systémovým voláním getrandom a rozhraním /dev/urandom, vracející vysoce kvalitní pseudonáhodná čísla.
- Na platformě Linux byla implementována podpora architektury pokynového souboru LoongArch, používané v procesorech Loongson 3 5000, která realizuje nový RISC ISA podobný MIPS a RISC-V. V aktuální podobě je dostupná pouze podpora 64bitové varianty LoongArch (LA64). Pro funkčnost jsou potřeba alespoň verze binutils 2.38, GCC 12 a jádro Linux 5.19.
- Mechanismus prelink byl označen za zastaralý a bude odstraněn v následující verzi spolu s ním souvisejícími proměnnými prostředí LD_TRACE_PRELINKING a LD_USE_LOAD_BIAS a možnostmi linkeru.
- Byl odstraněn kód pro kontrolu verze jádra Linux a zpracování proměnné prostředí LD_ASSUME_KERNEL. Minimálně podporovaná verze jádra při sestavování Glibc je určena pomocí pole ELF NT_GNU_ABI_TAG.
- Na platformě Linux byla ukončena podpora proměnné prostředí LD_LIBRARY_VERSION.
Zdroj: opennet.ru
