
В конце января 2026 года состоялся релиз системной библиотеки GNU C Library 2.43 (glibc). Это решение полностью следует требованиям стандартов ISO C23 и POSIX.1–2024. В создании нового выпуска glibc приняли участие 68 разработчиков, а ревью кода выполняли 28 мейнтейнеров проекта. Прошлая стабильная версия glibc вышла в июле 2025 года.
По информации OpenNET, основные изменения и доработки в Glibc 2.42:
добавлена экспериментальная возможность сборки компилятором Clang, которая пока доступна только для платформ aarch64-linux-gnu и x86_64-linux-gnu при использовании runtime, совместимого с libgcc. Для сборки Glibc требуется как минимум версия Clang 18;
для систем Linux добавлена функция mseal(), позволяющая процессам выставлять блокировку на изменение определённых частей своего адресного пространства;
для систем Linux добавлена функция openat2(), в отличие от функции openat() поддерживающая набор дополнительных флагов для ограничения разрешения файлового пути (запрет пересечения точек монтирования, символических ссылок, magic-ссылок (/proc/PID/fd), компонентов "../");
добавлены функции free_sized, free_aligned_sized, memset_explicit и memalignment, появившиеся в стандарте C23;
в соответствии со стандартом C23 вызов assert определён как макрос с переменным числом аргументов, поддерживающий выражения с запятой внутри инициализатора;
в соответствии со стандартом C23 функции bsearch, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr и wmemchr, возвращающие указатели на входные массивы, переопределены как макросы, возвращающие указатель на тип с квалификатором "const", если входной аргумент является указателем на тип с квалификатором "const";
в заголовочный файл math.h добавлены определения типов long_double_t, Float32t, Float64t и Float128t, появившихся в стандарте C23;
добавлены опциональные режимы исчисления времени TIME_MONOTONIC (постоянно увеличивающееся время, не зависящее от изменения системных часов), TIME_ACTIVE и TIME_THREAD_ACTIVE (время активного выполнения процесса или потока) для использования в функции timespec_get;
из проекта CORE-MATH перенесены оптимизированные варианты математических функций acosh, asinh, atanh, erf, erfc, lgamma и tgamma;
добавлены оптимизированные реализации функций fma, fmaf, remainder, remaindef, frexpf, frexp, frexpl (binary128) и frexpl (intel96);
повышена производительность математических функций acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf, lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0, y1/j1 и yn/jn, благодаря удалению кода обработки ошибок SVID (вызов пользовательской функции matherr при ошибке) для новых сборок (для сохранения совместимости с уже собранными программами они оставлены в режиме compat);
на системах x86 добавлена поддержка процессоров Intel Nova Lake и Wildcat Lake;
на системах AArch64 в функции malloc по умолчанию включена поддержка больших страниц памяти (transparent huge pages) размером 2MB (параметр ibc.malloc.hugetlb теперь выставлен в 1). В функции clone() реализовано отключение состояния ZA (Z-Array) на CPU с поддержкой расширения SME (Scalable Matrix Extension);
для систем AArch64, поддерживающих расширение BTI (Branch Target Identification), добавлена настройка glibc.cpu.aarch64_bti, позволяющая принудительно активировать BTI для всех исполняемых файлов и библиотек. BTI обеспечивает блокирование переходов на произвольные участки кода для противодействия созданию гаджетов в эксплоитах, использующих приёмы возвратно-ориентированного программирования;
на системах AArch64, поддерживающих одно из расширений для защиты ветвления (Branch Target Identification или Guarded Control Stack), разрешено использование переменной окружения "LD_DEBUG=security" для вывода компоновщиком предупреждений при загрузке исполняемых файлов и библиотек, не поддерживающих данные расширения;
для систем AArch64 добавлены векторные варианты функций exp2m1, exp10m1, log10p1, log2p1 и rsqrt;
для архитектуры RISC-V добавлена оптимизированная реализация функции memset, использующая расширение RVV (RISC-V Vector);
в тестовом наборе значительно расширена проверка многопоточности и функций scanf, strerror и strsignal;
данные кодировок, информация о типах символов и таблицы транслитерации обновлены для поддержки спецификации Unicode 17.0.0;
в реализации функциональности LD_PROFILE прекращено использование каталога по умолчанию (/var/tmp) для записи данных профилирования. Для сохранения подобных данных теперь требуется явное определение для них каталога через переменную окружения LD_PROFILE_OUTPUT;
устранены уязвимости:
CVE-2026-0861 — целочисленное переполнение в функции memalign, приводящее к повреждению кучи;
CVE-2026-0915 — утечка содержимого стека в функциях getnetbyaddr и getnetbyaddr_r;
CVE-2025-15281 — возвращение неинициализированной памяти, которая может содержать остаточные данные, при использовании функции wordexp с параметрами WRDE_REUSE и WRDE_APPEND.
