Kuuden kuukauden kehitystyön jälkeen on julkaistu GNU C Library (glibc) 2.36 -järjestelmäkirjasto, joka täyttää täysin ISO C11- ja POSIX.1-2017 -standardien vaatimukset. Uusi julkaisu sisältää korjauksia 59 kehittäjältä.
Jotkut Glibc 2.36:ssa toteutetuista parannuksista ovat:
- Lisätty tuki uudelle DT_RELR-osoitteen uudelleensijoitusmuodolle (relative relocation), jonka avulla voit pienentää suhteellisten uudelleensijoitusten kokoa jaetuissa objekteissa ja suoritettavissa tiedostoissa, jotka on linkitetty PIE (Position-independent executables) -tilassa. DT_RELR-kentän käyttäminen ELF-tiedostoissa vaatii tukea linkkerissä "-z pack-relative-relocs" -vaihtoehdolle, joka esiteltiin binutils 2.38:n julkaisussa.
- Alustalle Linux реализованы функции pidfd_open, pidfd_getfd и pidfd_send_signal, предоставляющие доступ к функциональности pidfd, помогающей обрабатывать ситуации с повторным использованием PID для более точной идентификации процессов, обращающихся к отслеживаемым файлам (pidfd связывается с конкретным процессом и не меняется, в то время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID).
- Alustalle Linux добавлена функция process_madvise(), позволяющая одному процессу выполнить системный вызов madvise() от имени другого процесса, идентифицируя целевой процесс при помощи pidfd. Через madvise() можно информировать ядро об особенностях работы с памятью для оптимизации управления памятью процесса, например, на основе переданной информации ядро может инициировать высвобождение дополнительной свободной памяти. Вызов madvise() другим процессом может потребоваться в ситуации, когда информация, необходимая для оптимизации, неизвестна текущему процессу, а координируется отдельным фоновым управляющим процессом, который самостоятельно может инициировать изъятие у процессов неиспользуемой памяти.
- Alustalle Linux добавлена функция process_mrelease(), позволяющая ускорить освобождение памяти процесса, завершающего своё выполнение. В обычных условиях освобождение ресурсов и завершение процесса выполняется не мгновенно и по разным причинам может задерживаться, что мешает работе функционирующих в пространстве пользователя систем раннего реагирования на нехватку памяти, таких как oomd (предоставляется в systemd). При помощи вызова process_mrelease подобные системы могут более предсказуемо инициировать возвращение памяти от принудительно завершаемых процессов.
- Tuki "no-aaaa" -vaihtoehdolle on lisätty DNS-selvittimen sisäänrakennettuun toteutukseen, jonka avulla voit poistaa käytöstä DNS-pyyntöjen lähettämisen AAAA-tietueille (IPv6-osoitteen määrittäminen isäntänimen perusteella), mukaan lukien NSS:ää suoritettaessa. toimii kuten getaddrinfo(), yksinkertaistaa ongelman diagnosointia. Tämä asetus ei vaikuta tiedostossa /etc/hosts määritettyjen IPv6-osoitesidosten käsittelyyn eikä getaddrinfo()-kutsuihin AI_PASSIVE-lipulla.
- Alustalle Linux добавлены функции fsopen, fsmount, move_mount, fsconfig, fspick, open_tree и mount_setattr, предоставляющие доступ к новому API ядра для управления монтированием файловых систем с учётом пространств имён точек монтирования (mount namespaces). Предложенные функции позволяют раздельно обработать разные стадии монтирования (обработать суперблок, получить информацию об ФС, примонтировать, прикрепить к точке монтирования), которые ранее выполнялись при помощи общей функции mount(). Раздельные фунеции дают возможность выполнять более сложные сценарии монтирования и отдельно выполнять такие операции, как перенастройка суперблока, включение опций, изменение точки монтирования и перенос в другое пространство имён. Кроме того, раздельная обработка позволяет точно определять причины вывода кодов ошибок и задавать несколько источников для многослойных ФС, таких как overlayfs.
- localedef tukee UTF-8-koodattujen kieliasetustiedostojen käsittelyä ASCII:n sijaan.
- Lisätty toimintoja monitavuisten mbrtoc8- ja c8rtomb-koodausten muuttamiseksi ISO C2X N2653- ja C++20 P0482R6 -spesifikaatioiksi.
- Lisätty tuki ISO C8X N2 -standardin luonnoksessa määritellylle char2653_t-tyypille.
- Lisätty arc4random-, arc4random_buf- ja arc4random_uniform-funktiot, jotka tarjoavat kääreitä getrandom-järjestelmäkutsulle ja /dev/urandom-rajapinnalle, jotka palauttavat korkealaatuisia näennäissatunnaisia lukuja.
- При работе на платформе Linux реализована поддержка архитектуры набора команд LoongArch, применяемой в процессорах Loongson 3 5000 и реализующей новый RISC ISA, похожий на MIPS и RISC-V. В текущем виде доступна только поддержка 64-разрядного варианта LoongArch (LA64). Для работы требуется наличие как минимум версий binutils 2.38, GCC 12 и ядра Linux 5.19.
- Esilinkkimekanismi sekä siihen liittyvät LD_TRACE_PRELINKING- ja LD_USE_LOAD_BIAS-ympäristömuuttujat ja linkitysominaisuudet ovat vanhentuneet ja poistetaan tulevassa julkaisussa.
- Удалён код для проверки версии ядра Linux и обработки переменной окружения LD_ASSUME_KERNEL. Минимально поддерживаемая при сборке Glibc версия ядра определяется через ELF-поле NT_GNU_ABI_TAG.
- Laiturilla Linux прекращена поддержка переменной окружения LD_LIBRARY_VERSION.
Lähde: opennet.ru
