Glibc 2.36 поставляется с новыми функциями для Linux, улучшениями и многим другим

После полугода разработки было объявлено о выходе новой версии glibc 2.36, которая полностью соответствует требованиям стандартов ISO C11 и POSIX.1-2017 и в которую новая версия включает исправления от 59 разработчиков.

Тем, кто не знаком с Glibc, следует знать, что это такое. библиотека GNU C, обычно известная как glibc — это стандартная библиотека времени выполнения GNU C. В системах, где она используется, эта библиотека C, которая предоставляет и определяет системные вызовы и другие базовые функции, он используется почти всеми программами. 



Основные новые возможности Glibc 2.36

В представленной новой версии подчеркивается, что добавлена ​​поддержка нового формата адреса относительного перемещения DT_RELR, который позволяет уменьшить размер относительных перемещений в общих объектах и ​​связанных исполняемых файлах в режиме PIE (Position Independent Executables). Использование поля DT_RELR в файлах ELF требует поддержки опции «-z pack-relative-relocs» в компоновщике, представленной в binutils 2.38.



Еще одно изменение, которое выделяется в новой версии, заключается в том, что для Linux функции pidfd_open, pidfd_getfd и pidfd_send_signal были реализованы для обеспечения доступа к функциям pidfd который помогает обрабатывать ситуации повторного использования PID для более точной идентификации процессов, обращающихся к отслеживаемым файлам (pidfd связан с конкретным процессом и не меняется, а PID может быть присоединен к другому процессу после завершения процесса) текущий процесс, связанный с этим ПИД).

Кроме того, также в Linux есть process_madvise()что позволяет процессу выполнять системный вызов madvise() от имени другого процесса, определяя целевой процесс с помощью pidfd. Через madvise() можно сообщить ядру особенности работы с памятью для оптимизации управления памятью процесса, например, на основе переданной информации ядро ​​может начать освобождать дополнительную свободную память.



Также отмечается, что была добавлена ​​функция process_mrelease(), который позволяет ускорить высвобождение памяти для процесса, завершившего свое выполнение. В нормальных условиях освобождение ресурсов и завершение процесса не происходят мгновенно и могут быть задержаны по разным причинам, мешая работе систем раннего предупреждения в пользовательском пространстве, таких как oomd (предоставляется systemd). Вызывая process_mrelease, эти системы могут более предсказуемо начать извлечение памяти для процессов, которые были принудительно завершены.

С другой стороны, отмечается, что он был добавлен поддержка опции «нет-аааа» к комплексному осуществлению Разрешение DNS, позволяющее отключить отправку DNS-запросов для записей AAAA. (определение IPv6-адреса по имени хоста), даже при выполнении функций NSS, таких как getaddrinfo(), для упрощения устранения неполадок. Этот параметр не влияет на обработку привязок IPv6-адресов, определенных в /etc/hosts, и на вызовы getaddrinfo() с флагом AI_PASSIVE.

Для Linux добавлены функции fsopen, fsmount, move_mount, fsconfig, fspick, open_tree и mount_setattr для предоставить доступ к новому API ядра для управления монтированием файловых систем на основе пространств имен монтирования. Предлагаемые функции позволяют раздельно обрабатывать разные этапы монтирования (обработка суперблока, получение информации о файловой системе, монтирование, присоединение к точке монтирования), которые ранее выполнялись с помощью общей функции mount().



Были добавлены функции arc4random, arc4random_buf и arc4random_uniform обеспечить привязки к системному вызову получитьслучайный и интерфейс / DEV / urandom, возвращая качественные псевдослучайные числа.

При работе в Linux предоставляется поддержка архитектуры. из набора инструкций ЛунгАрч используется в процессорах Loongson 3 5000, и реализована новая RISC ISA, аналогичная MIPS и RISC-V. В текущем виде доступна только совместимость с 64-битным вариантом от LoongArch (LA64). Для запуска требуется как минимум binutils 2.38, GCC 12 и ядро ​​​​Linux 5.19.



Из других изменений, которые выделяются:

  • Механизм предварительной компоновки, а также связанные переменные среды LD_TRACE_PRELINKING и LD_USE_LOAD_BIAS и функции компоновщика устарели и будут удалены в будущем выпуске.
  • Удален код для проверки версии ядра Linux и обработки переменной среды LD_ASSUME_KERNEL. Минимальная версия ядра, поддерживаемая при компиляции Glibc, определяется полем ELF NT_GNU_ABI_TAG.
  • Переменная среды LD_LIBRARY_VERSION устарела на платформе Linux.

Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.




2022-08-03T01:17:07
приложений