relibc: pselect, qsort_r, utimensat, threads.h и static_assert

22.05.2026

В relibc появился набор недостающих POSIX и C11 функций: pselect, qsort_r, utimensat, макрос static_assert и заголовок threads.h с типами для потоков.

pselect

pselect — это select с маской сигналов: он позволяет атомарно установить набор сигналов, блокируемых на время ожидания, и снять блокировку. Это нужно там, где обычный select оставляет окно для гонки — сигнал может прийти между проверкой условия и засыпанием.

Реализована 22 мая.

qsort_r

Вариант qsort, который принимает дополнительный аргумент и передаёт его функции сравнения. Нужен, когда сортируемые данные нельзя положить в глобальную переменную, — то есть в многопоточном коде. Реализована 5 мая.

utimensat

Функция для установки времён доступа и изменения файла относительно каталога-дескриптора, а не текущего каталога. Согласуется с общим переходом Redox на функции с суффиксом at. Реализована 5 мая.

threads.h и static_assert

Заголовок threads.h — часть стандарта C11: типы для потоков, функции и макросы. Без него код на C11 с потоками на Redox не собирался. Добавлен 10 мая.

static_assert — проверка условия во время компиляции. Реализован 18 мая, вместе с тестом.

Почему это важно для Rust

Крейты libc и nix обращаются к этим функциям при сборке под Redox. Пока функции нет, крейт либо не собирался, либо использовал обходной путь. Каждая реализованная POSIX-функция снимает одну причину несовместимости.

Отдельно qsort_r и pselect — не про совместимость, а про корректность: обе функции решают задачи, которые в многопоточном коде иначе решаются неправильно.

Оригинал

Коммиты в репозитории redox-os/relibc за май 2026 года: Implement qsort_r и Implement utimensat от 5 мая, implement threads.h от 10 мая, Implement static_assert от 18 мая, Implement pselect and write test от 22 мая; сводка «This Month in Redox — May 2026», раздел «Relibc Improvements»

Упоминаний: 1 · Просмотров: 2