Vydání systémové knihovny Glibc 2.36

Po šesti měsících vývoje byla vydána systémová knihovna 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ářů.

Některá vylepšení implementovaná v Glibc 2.36 zahrnují:

  • Přidána podpora pro nový formát přemístění adres DT_RELR (relative relocation), který umožňuje snížit velikost relativních přemístění ve sdílených objektech a spustitelných souborech propojených v režimu PIE (Position-independent executables). Použití pole DT_RELR v souborech ELF vyžaduje podporu pro volbu "-z pack-relative-relocs" v linkeru, zavedenou ve verzi binutils 2.38.
  • Pro platformu Linux jsou implementovány funkce pidfd_open, pidfd_getfd a pidfd_send_signal, které poskytují přístup k funkcionalitě pidfd, která pomáhá zvládnout situace opětovného použití PID pro přesnější identifikaci procesů přistupujících k monitorovaným souborům (pidfd je spojen s konkrétním procesem a nemění se, zatímco PID může být připojen k jinému procesu poté, co aktuální proces spojený s tímto PID skončí).
  • Pro platformu Linux byla přidána funkce process_madvise(), která umožňuje jednomu procesu zadávat systémové volání madvise() jménem jiného procesu a identifikovat cílový proces pomocí pidfd. Prostřednictvím madvise() můžete jádro informovat o funkcích práce s pamětí pro optimalizaci správy paměti procesu, například na základě přenášených informací může jádro iniciovat uvolnění další volné paměti. Volání madvise() jiným procesem může být vyžadováno v situaci, kdy informace potřebné pro optimalizaci aktuální proces nezná, ale je koordinován samostatným procesem řízení na pozadí, který může nezávisle iniciovat odstranění nevyužité paměti z procesů.
  • Pro platformu Linux byla přidána funkce process_mrelease(), která umožňuje urychlit uvolnění paměti pro proces dokončující své provádění. Za normálních okolností nejsou uvolnění prostředků a ukončení procesu okamžité a mohou být z různých důvodů zpožděny, což narušuje systémy včasné odezvy paměti uživatelského prostoru, jako je oomd (poskytovaný systemd). Voláním process_mrelease mohou takové systémy předvídatelněji spustit obnovu paměti z vynucených procesů.
  • Do vestavěné implementace DNS resolveru byla přidána podpora pro volbu „no-aaaa“, která umožňuje zakázat odesílání DNS požadavků na AAAA záznamy (určení IPv6 adresy podle názvu hostitele), a to i při spouštění NSS funkce jako getaddrinfo() pro zjednodušení diagnostiky problémů. Tato volba neovlivňuje zpracování vazeb IPv6 adres definovaných v /etc/hosts a volání getaddrinfo() s příznakem 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 kernel API pro správu připojování souborového systému na základě jmenných prostorů připojení. Navrhované funkce umožňují samostatně zpracovávat různé fáze připojení (zpracovat superblok, získat informace o souborovém systému, připojit, připojit k bodu připojení), které byly dříve prováděny pomocí běžné funkce mount(). Samostatné funkce poskytují možnost provádět složitější scénáře připojení a samostatně provádět operace, jako je překonfigurování superbloku, povolení voleb, změna bodu připojení a přesun do jiného jmenného prostoru. Oddělené zpracování navíc umožňuje přesně určit důvody pro výstup chybových kódů a nastavit více zdrojů pro vícevrstvé souborové systémy, jako jsou overlayf.
  • localedef poskytuje podporu pro zpracování souborů definic národního prostředí dodávaných v kódování UTF-8 namísto ASCII.
  • Přidány funkce pro převod vícebajtových kódování mbrtoc8 a c8rtomb na specifikace ISO C2X N2653 a C++20 P0482R6.
  • Přidána podpora pro typ char8_t definovaný v návrhu normy ISO C2X N2653.
  • Přidány funkce arc4random, arc4random_buf a arc4random_uniform, které poskytují obaly přes systémové volání getrandom a rozhraní /dev/urandom, které vracejí vysoce kvalitní pseudonáhodná čísla.
  • Při běhu na platformě Linux podporuje architekturu instrukční sady LoongArch používanou v procesorech Loongson 3 5000 a implementuje nový RISC ISA, podobný MIPS a RISC-V. V současné podobě je dostupná pouze podpora pro 64bitovou verzi LoongArch (LA64). K práci potřebujete alespoň verze binutils 2.38, GCC 12 a Linux kernel 5.19.
  • Mechanismus předběžného propojení, stejně jako související proměnné prostředí LD_TRACE_PRELINKING a LD_USE_LOAD_BIAS a možnosti linkeru, byly zastaralé a budou odstraněny v budoucí verzi.
  • Byl odstraněn kód pro kontrolu verze jádra Linuxu a zpracování proměnné prostředí LD_ASSUME_KERNEL. Minimální verze jádra podporovaná při sestavování Glibc je určena pomocí pole ELF NT_GNU_ABI_TAG.
  • Proměnná prostředí LD_LIBRARY_VERSION byla na platformě Linux ukončena.

Zdroj: opennet.ru

Přidat komentář