Базовая библиотека GNU/Linux получила C23-нововведения, openat2 и исправления уязвимостей.

Если вы пользуетесь Linux, то одна из самых важных частей системы только что получила крупное обновление, и вы, скорее всего, даже не заметите этого сразу. Вышла GNU C Library (glibc) версии 2.43, та самая базовая библиотека, через которую работают почти все программы на GNU/Linux, от оболочки и менеджера пакетов до браузера и серверных сервисов. Обновление традиционно выглядит как «что-то для разработчиков», но на практике оно влияет на безопасность, совместимость и производительность всего стека.
Главный вектор релиза это движение к свежим стандартам языка и платформы. В glibc 2.43 добавили новые функции и уточнения, связанные с ISO C23 и POSIX.1-2024: появились, например, free_sized и free_aligned_sized, memset_explicit и набор функций для выравнивания памяти, а assert теперь допускает вариативные аргументы, чтобы корректно переживать выражения с запятой внутри составных литералов. Для ряда классических строковых и поисковых функций, которые возвращают указатели внутрь входных массивов, появились макроопределения с «сохранением const»: если вы передаете const-указатель, то и результат будет const. Это правильное поведение по C23, но оно может неожиданно всплыть при сборке старого кода, особенно там, где используются не самые свежие снимки gnulib.
Есть и заметные изменения, которые напрямую касаются безопасности и «гигиены» выполнения. На Linux добавили поддержку mseal: это системный вызов, который позволяет «запечатывать» отображения памяти и запрещать дальнейшие изменения во время работы процесса, например смену прав доступа, размонтирование, перенос в другое место или уменьшение размера. Для атак класса «поменяли защиту страницы и выполнили код» или для сценариев, где важно стабилизировать раскладку памяти, такой инструмент выглядит очень практично. В том же ряду появился openat2, расширение openat с более богатой семантикой, но с оговорками: он доступен только в режиме LFS и является отменяемой точкой входа.
Производительность тоже подтянули, особенно там, где она чувствуется в численных задачах. В библиотеку импортировали дополнительные оптимизированные и корректно округляемые математические функции из проекта CORE-MATH, включая acosh, asinh, atanh, erf/erfc, lgamma и tgamma, а также добавили улучшенные реализации fma, remainder, frexp и ряда вариантов frexpl для разных форматов. В некоторых случаях разработчики аккуратно переложили «старые» режимы обработки ошибок (SVID) в символы совместимости, чтобы основной путь стал быстрее. Из архитектурных новостей: на AArch64 по умолчанию включили поддержку 2 МБ transparent huge pages в malloc, добавили настройки для усиления защит вроде BTI и предупреждения загрузчика через LD_DEBUG=security, на RISC-V появился вариант memset с оптимизациями под RVV, а на x86 обновили распознавание новых поколений процессоров Intel, включая Nova Lake и Wildcat Lake.
Отдельно стоит отметить «инструментальные» изменения. В glibc 2.43 добавили экспериментальную поддержку сборки clang, но только при достаточно свежей версии (не ниже clang 18), для целей aarch64-linux-gnu или x86_64-linux-gnu и при наличии рантайма, совместимого с libgcc. Параллельно разработчики подчистили и модернизировали документацию, заметно улучшили тестовый набор, особенно вокруг scanf, strerror, strsignal и многопоточных сценариев, а поддержку Unicode обновили до версии 17.0.0.
Как обычно, у релиза есть и «ломающие» моменты. Убрали поддержку dumped heaps, из-за чего malloc_set_state() теперь всегда возвращает -1. Переименовали uimaxabs в umaxabs в русле изменений будущего стандарта (старое имя оставили как символ совместимости для уже собранных бинарников). Из pthread убрали поддержку TX lock elision на всех архитектурах, где она еще жила. LD_PROFILE больше не пишет профили в каталог «по умолчанию», теперь нужно явно задавать LD_PROFILE_OUTPUT, иначе данные просто некуда будет сохранить. Еще один важный сигнал для экосистемы: 31-битная конфигурация s390-linux-gnu объявлена устаревшей в 2.43 и планируется к удалению в 2.44 на фоне того, что в Linux 6.19 ожидается удаление compat syscalls на s390x, при этом 64-битная s390x-linux-gnu остается поддерживаемой.
В части безопасности разработчики закрыли несколько уязвимостей. Среди них переполнение целого в memalign, которое могло приводить к повреждению кучи (CVE-2026-0861), утечка данных со стека в DNS-резолвер через getnetbyaddr/getnetbyaddr_r (CVE-2026-0915), а также ситуация, когда wordexp с флагами WRDE_REUSE и WRDE_APPEND мог возвращать неинициализированную память (CVE-2025-15281). Для дистрибутивов это означает очередной пакетный апдейт, который чаще всего прилетит незаметно, но закроет неприятные края.
Релиз glibc 2.43 объявлен 23–24 января 2026 года, исходники и пакеты доступны на зеркалах GNU, а сопровождающим дистрибутивов рекомендуют отслеживать ветки release/*, куда будут попадать консервативные исправления и новые возможности при сохранении обратной совместимости. Для обычного пользователя это обновление из категории «тихо улучшили фундамент», а для разработчиков хороший повод проверить сборки на C23-изменения и обновить зависимости, если где-то всплывут новые требования к const или к поведению макросов.