После шести месяцев разработки se объявил о выпуске новой версии Glibc 2.38, версия, в которую внесены различные изменения, объявлены и удалены устаревшие функции, интегрированы улучшения безопасности и многое другое.
Тем, кто не знаком с Glibc, следует знать, что это такое. библиотека GNU C, обычно известная как glibc — это стандартная библиотека времени выполнения GNU C. В системах, где она используется, эта библиотека C, которая предоставляет и определяет системные вызовы и другие базовые функции, он используется почти всеми программами.
Основные новые возможности Glibc 2.38
В представленной новой версии Glibc 2.38 одна из главных новинок, которая выделяется, заключается в том, что добавлены новые функции strlcpy и strlcat, который являются альтернативой функциям strncpy и strncat., которые содержат защиту от переполнения буфера и обязательно устанавливают в конечной строке нулевой байт. Реализация функций выполнялась со времен OpenBSD, и ожидается, что в будущем эти функции будут включены в стандарт POSIX.
Еще одна новинка, которая выделяется в этой новой версии, когда функции C2X включены и базовый аргумент равен 0 или 2, во входных параметрах различных функций, разрешить использование префиксов 0b и 0B для определения двоичных значений, указав режим форматирования через файл «%i. Независимо от включения стандарта C2X, эти функции также поддерживают отдельную опцию формата «%b» для двоичных чисел.
Также подчеркивается, что теперь вы можете использовать новый вариант конфигурации, «—enable-укрепить-источник», для компиляции Glibc с участием «_FORTIFY_SOURCE«, для обнаружения возможных переполнений буфера во время выполнения строковых функций, определенных в заголовочном файле string.h.
Кроме того, сейчасФункции семейства Printf поддерживают модификаторы длины. формата «wN» для аргументов типа intN_t, int_leastN_t, uintN_t и uint_leastN_t и формат «вфн» модификаторы длины для аргументов типа int_fastN_t или uint_fastN_t, как указано в проекте ISO C2X.
Исправлена уязвимость CVE-2023-25139., что вызвало переполнение буфера в функциях семейства printf при записи в буфер строковых представлений чисел с разделителями тысяч, если размер буфера вычисляется без разделителей (например, вывод 1,234,567 2 XNUMX приведет к переполнению на XNUMX байта).
С другой стороны, упоминается, что для архитектуры AArch64 добавлена поддержка векторная математическая библиотека «libmvec«, для которого требуется версия GCC >= 10.1.0. Его можно отключить через «—disable-mathvec«, однако это не поддерживаемая конфигурация, так как она изменяет ABI. Имена символов соответствуют ABI вектора AArch64, объявлены в math.h и должны вызываться вручную на этом этапе.
Что касается ффункции, которые устарели и были удалены в этой новой версии упоминается, например, что устат больше не доступен для недавно связанных двоичных файлов и заголовков были удалены и .
По умолчанию, либкрипт больше не создается, и теперь рекомендуется использовать «—enable-crypt» строить либкрипт. Похоже, что либкрипт будут удалены в будущем выпуске, поэтому рекомендуется перенести приложения в альтернативу, например libxcrypt.
Из других изменений которые выделяются:
- Добавлены настройкиglibc.pthread.stack_hugetlb отключить THP (прозрачные огромные страницы) для выделения стека во время pthread_create.
- Добавлена поддержка x86_64, работающего на Hurd. Этот порт требует как минимум binutils 2.40 и GCC 13.
- Убраны «варианты»—disable-experimental-malloc» и «—enable-tunables» (внутренняя настройка теперь всегда включена).
- Макросы C2X PRIB*, PRIB* и SCNb* были добавлены в шапку .
- В ядре Linux для архитектуры hppa/parisc некоторые константы MADV_XXX были изменены, чтобы иметь те же значения, что и для других архитектур.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.