Выпуск стандартной Си-библиотеки Musl 1.2.6

После двух лет разработки представлен релиз стандартной Си-библиотеки Musl 1.2.6, предоставляющей реализацию libc, которая подходит для применения как на стационарных ПК и серверах, так и на мобильных системах, сочетая полноценную поддержку стандартов (как в Glibc) с небольшим размером, низким потреблением ресурсов и высокой производительностью (как в uClibc, dietlibc и Android Bionic). Имеется поддержка всех обязательных интерфейсов C99 и POSIX 2008, а также частично C11 и набор расширений для многопоточного программирования (POSIX threads), управления памятью и работы с локалями. Код Musl поставляется под свободной лицензией MIT.

Основные изменения:

  • Реализована функция posix_getdents, появившаяся в стандарте POSIX-2024. Функция читает содержимое каталога, связанного с открытым файловым дескриптором и помещает информацию о подкаталогах и файлах в структуры posix_dent с возможностью ограничения максимального размера.

  • Добавлена специфичная для Linux функция renameat2, предоставляющая средства для атомарной замены имён двух файлов (первый файл переименовывается во второй, а второй в первый). От renameat новая функция отличается наличием дополнительного флагового поля — без выставления флага поведение renameat2 полностью аналогично renameat, а при указании флага RENAME_NOREPLACE операция переименования не приводит к замене уже существующего файла.

  • Для систем Loongarch64 добавлена поддержка механизма TLSDESC (Thread-Local Storage Descriptor) для эффективного доступа к переменным в локальном хранилище потока.

  • При помощи vDSO оптимизирована работы функции clock_gettime на архитектурах riscv32, riscv64, powerpc, powerpc64 и s390x. vDSO (virtual dynamic shared object) позволяет перенести обработчик системного вызова из ядра в пространство пользователя и избежать переключений контекста.

  • Для определения возможностей CPU в runtime компиляторов, символ __getauxval переведён в публичный ABI.

  • Устранена уязвимость (CVE-2025–26519), приводящая к переполнению буфера при преобразовании специально оформленного текста из кодировки EUC-KR в UTF-8 при помощи функции iconv (). Уязвимость выявлена более года назад и до релиза устранялась через установку патча.

  • Решены проблемы с совместимостью в функциях initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt и vdso, а также в заголовочных файлах sched.h и shadow.h.
  • Улучшено соответствие спецификациям в функциях pwrite (решена проблема с O_APPEND), mbnrtowcs (учтены требования POSIX-2024), strptim (учтены требования POSIX-2024e), inet_ntop (обеспечено соответствие RFC 5952).



Источник: http://www.opennet.ru/opennews/art.shtml? num=65037

© OpenNet