GNU C Library 2.42: Новые возможности и улучшения производительности


GNU C Library 2.42 вышла с поддержкой ISO C23, новыми математическими функциями, улучшениями производительности malloc и исправлением критических уязвимостей. Подробный обзор нововведений и их влияния на разработку программного обеспечения.

GNU C Library 2.42: Новые возможности и улучшения производительности

Проект GNU недавно выпустил версию 2.42 библиотеки GNU C Library (glibc), которая является стандартной библиотекой C и обеспечивает основной интерфейс между пользовательскими программами и ядром Linux. Эта версия представляет собой значительный шаг вперед, предлагая поддержку новых стандартов, улучшения производительности и исправления критических уязвимостей.

Поддержка ISO C23 и новые математические функции

Одним из ключевых нововведений версии 2.42 является поддержка развивающегося стандарта ISO C23. В новом релизе добавлены новые математические функции, которые расширяют возможности разработчиков. В файл <math.h> добавлены функции compoundn, pown, powr, rootn и семейство rsqrt. Эти функции сопровождаются соответствующими типо-независимыми макросами в файле <tgmath.h>.

Кроме того, в библиотеку добавлены функции беззнакового абсолютного значения uabs, ulabs и другие, которые дополняют числовой инструментарий glibc.

Улучшения производительности malloc

Важным аспектом новой версии glibc является значительное улучшение производительности функции malloc. В частности, локальный кэш потока (tcache) теперь поддерживает кэширование больших блоков памяти до 4 МБ, что ускоряет выделение небольших участков памяти. Разработчики систем могут настроить этот параметр с помощью нового тюнинга glibc.malloc.tcache_max.

Новые функции и поддержка архитектур

Версия 2.42 также вводит новую вспомогательную функцию pthread_gettid_np, которая позволяет получить идентификатор ядра потока без необходимости использования ненадежных, специфичных для платформы системных вызовов.

Добавлена поддержка SFrame, которая позволяет программам записывать метаданные для развертывания стека. Эта функция активируется при сборке glibc с опцией --enable-sframe и при использовании Binutils версии 2.45 и выше. Это обеспечивает компактный и удобный для отладчиков способ хранения данных о стеке.

Архитектурно, библиотека теперь автоматически определяет новые процессоры Intel, такие как Arrow Lake, Panther Lake, Clearwater Forest и Diamond Rapids, а также недавно анонсированные мейнфреймы IBM z17.

Исправление уязвимостей

В glibc 2.42 исправлены четыре публично отслеживаемых уязвимости, включая переполнение буфера в обработке сообщений assert() (CVE-2025-0395), а также две ошибки, связанные с регистрами векторов Power10, которые могли приводить к некорректным результатам функций strcmp и strncmp (CVE-2025-5702 и CVE-2025-5745). Также исправлена ошибка двойного освобождения памяти в движке регулярных выражений POSIX (CVE-2025-8058).

Стоит отметить, что на данный момент активных эксплойтов для этих уязвимостей не зафиксировано, однако рекомендуется как можно скорее обновить пакеты до новой версии через тестовые репозитории.

Заключение

Выпуск GNU C Library 2.42 представляет собой значительное обновление, которое предоставляет разработчикам новые инструменты и возможности. Поддержка ISO C23, улучшения производительности и исправление критических уязвимостей делают эту версию библиотеки крайне важной для всех, кто занимается разработкой программного обеспечения на платформах Linux. Для тех, кто использует российский дистрибутив НайсОС, обновление glibc до версии 2.42 также будет полезным шагом для повышения безопасности и производительности системы.

Для получения дополнительной информации рекомендуется ознакомиться с официальным объявлением и заметками о выпуске.