Вышла версия системной библиотеки GNU C Library 2.43 (glibc) Обложка: Skyread

Вышла версия системной библиотеки GNU C Library 2.43 (glibc)

Новости
Главное:

  • Выпущена системная библиотека GNU C Library версии 2.43, соответствующая стандартам ISO C23 и POSIX.1–2024.
  • В библиотеку добавлены новые функции, улучшена поддержка архитектур AArch64, x86 и RISC-V, а также реализованы оптимизации и исправления уязвимостей.
  • Обновлены математические функции, расширены возможности сборки через Clang, внедрены механизмы повышения безопасности и усовершенствована многопоточность.

В конце января 2026 года был официально выпущен релиз GNU C Library (glibc) версии 2.43 — ключевой системной библиотеки для языков программирования C и C++. Эта версия полностью соответствует последним международным стандартам ISO C23 и POSIX.1–2024. В создании обновления приняли участие 68 разработчиков, при этом 28 мейнтейнеров обеспечивали качественное ревью кода. Предыдущий стабильный выпуск glibc состоялся в июле 2025 года.

Новая версия содержит ряд значительных доработок и улучшений. Среди важных новшеств — экспериментальная поддержка сборки компилятором Clang 18 и выше для платформ aarch64-linux-gnu и x86_64-linux-gnu при использовании runtime, совместимого с libgcc. Для Linux введены функции mseal() — позволяющая процессам защищать участки памяти от изменений, и расширенный системный вызов openat2() с улучшенными механизмами контроля разрешений путей файловой системы.

Также реализована поддержка ключевых нововведений стандарта C23: добавлены функции free_sized, free_aligned_sized, memset_explicit и memalignment, модифицирован макрос assert с поддержкой переменного числа аргументов, а ряд стандартных функций для работы со строками и памятью стали макросами, возвращающими корректно квалифицированные указатели.

В заголовочном файле math.h появились новые типы данных (long_double_t, Float32t, Float64t, Float128t), соответствующие стандарту C23. Для измерения времени в функции timespec_get добавлены режимы TIME_MONOTONIC, TIME_ACTIVE и TIME_THREAD_ACTIVE.

Особое внимание уделено оптимизации математических функций, многие из которых перенесены из проекта CORE-MATH и дополнительно улучшены. Значительно повысилась производительность функций, таких как acosf, lgammaf, log10f и других. На архитектурах x86 обновилась поддержка процессоров Intel Nova Lake и Wildcat Lake.

Для архитектуры AArch64 включена поддержка больших страниц памяти (2 МБ), добавлена возможность отключения состояния Z-Array на CPU с расширением SME, а также включен режим принудительной активации технологии Branch Target Identification (BTI) для защиты от эксплойтов типа вернуть-ориентированного программирования. Поддержка BTI и Guarded Control Stack сопровождается функцией вывода предупреждений через переменную окружения LD_DEBUG=security.

В системе RISC-V появилась оптимизированная реализация функции memset с использованием векторного расширения RVV.

В тестовом наборе glibc значительно расширена проверка многопоточности и функций стандартной библиотеки, включая scanf, strerror и strsignal. Обновлены данные кодировок и таблицы транслитерации для поддержки Unicode 17.0.0.

Также прекращено автоматическое использование каталога /var/tmp для LD_PROFILE, теперь для сохранения профилей требуется явно указывать каталог через переменную LD_PROFILE_OUTPUT.

Наконец, в версии 2.43 исправлены несколько серьезных уязвимостей, включая CVE-2026-0861 (целочисленное переполнение в функции memalign), CVE-2026-0915 (утечка стека в функциях getnetbyaddr и getnetbyaddr_r) и CVE-2025-15281 (возврат неинициализированной памяти в функции wordexp при определённых параметрах).

Таким образом, релиз glibc 2.43 представляет собой важный шаг вперёд в развитии системной библиотеки, обеспечивая соответствие актуальным стандартам, улучшая производительность и безопасность современных Linux-систем и других платформ, а также расширяя функциональные возможности для разработчиков.

Tagged