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 DT_RELR (relativní relokace), který zmenšuje velikost relativních relokací 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 linkeru „-z pack-relative-relocs“, která byla zavedena v binutils 2.38.
- Pro platformu Linux реализованы функции pidfd_open, pidfd_getfd и pidfd_send_signal, предоставляющие доступ к функциональности pidfd, помогающей обрабатывать ситуации с повторным использованием PID для более точной идентификации процессов, обращающихся к отслеживаемым файлам (pidfd связывается с конкретным процессом и не меняется, в то время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID).
- Pro platformu Linux добавлена функция process_madvise(), позволяющая одному процессу выполнить системный вызов madvise() от имени другого процесса, идентифицируя целевой процесс при помощи pidfd. Через madvise() можно информировать ядро об особенностях работы с памятью для оптимизации управления памятью процесса, например, на основе переданной информации ядро может инициировать высвобождение дополнительной свободной памяти. Вызов madvise() другим процессом может потребоваться в ситуации, когда информация, необходимая для оптимизации, неизвестна текущему процессу, а координируется отдельным фоновым управляющим процессом, который самостоятельно может инициировать изъятие у процессов неиспользуемой памяти.
- Pro platformu Linux добавлена функция process_mrelease(), позволяющая ускорить освобождение памяти процесса, завершающего своё выполнение. В обычных условиях освобождение ресурсов и завершение процесса выполняется не мгновенно и по разным причинам может задерживаться, что мешает работе функционирующих в пространстве пользователя систем раннего реагирования на нехватку памяти, таких как oomd (предоставляется в systemd). При помощи вызова process_mrelease подобные системы могут более предсказуемо инициировать возвращение памяти от принудительно завершаемых процессов.
- Vestavěná implementace DNS resolveru nyní podporuje volbu „no-aaaa“. Tato volba umožňuje zakázat dotazy DNS pro záznamy AAAA (rozlišení adres IPv6 na základě názvu hostitele) pro zjednodušení řešení problémů, a to i při provádění funkcí NSS, jako je getaddrinfo(). Tato volba neovlivňuje zpracování vazeb adres IPv6 definovaných v souboru /etc/hosts nebo volání getaddrinfo() s příznakem AI_PASSIVE.
- Pro platformu Linux добавлены функции fsopen, fsmount, move_mount, fsconfig, fspick, open_tree и mount_setattr, предоставляющие доступ к новому API ядра для управления монтированием файловых систем с учётом пространств имён точек монтирования (mount namespaces). Предложенные функции позволяют раздельно обработать разные стадии монтирования (обработать суперблок, получить информацию об ФС, примонтировать, прикрепить к точке монтирования), которые ранее выполнялись при помощи общей функции mount(). Раздельные фунеции дают возможность выполнять более сложные сценарии монтирования и отдельно выполнять такие операции, как перенастройка суперблока, включение опций, изменение точки монтирования и перенос в другое пространство имён. Кроме того, раздельная обработка позволяет точно определять причины вывода кодов ошибок и задавать несколько источников для многослойных ФС, таких как overlayfs.
- localedef implementuje podporu pro zpracování souborů s definicemi locale dodanými 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, odpovídající specifikacím 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 kolem systémového volání getrandom a rozhraní /dev/urandom, jež vracejí vysoce kvalitní pseudonáhodná čísla.
- При работе на платформе Linux реализована поддержка архитектуры набора команд LoongArch, применяемой в процессорах Loongson 3 5000 и реализующей новый RISC ISA, похожий на MIPS и RISC-V. В текущем виде доступна только поддержка 64-разрядного варианта LoongArch (LA64). Для работы требуется наличие как минимум версий binutils 2.38, GCC 12 и ядра Linux 5.19.
- Mechanismus předlinkování spolu s přidruženými proměnnými prostředí LD_TRACE_PRELINKING a LD_USE_LOAD_BIAS a funkcemi linkeru byl zastaralý a bude v budoucí verzi odstraněn.
- Удалён код для проверки версии ядра Linux и обработки переменной окружения LD_ASSUME_KERNEL. Минимально поддерживаемая при сборке Glibc версия ядра определяется через ELF-поле NT_GNU_ABI_TAG.
- Na plošině Linux прекращена поддержка переменной окружения LD_LIBRARY_VERSION.
Zdroj: opennet.ru
