В заголовках relibc исправлены раскладки, от которых зависит генерация FFI

11.02.2026

В relibc приведены в соответствие со спецификацией несколько типов: исправлена раскладка sched_param, timespec стал экспортироваться с правильным time_t, починен тип размера блока, добавлен предел PTHREAD_STACK_MIN.

Почему раскладка структуры важнее её полей

Структура, описанная в заголовке, должна точно совпадать с той, что ожидает компилятор, генерирующий привязки. Любое расхождение — это не ошибка компиляции, а тихая порча данных: поля читаются не с того места.

Особенно неприятно, когда поля выглядят осмысленно. При неверной раскладке sched_param программа прочитает параметры планирования из правильных на вид мест, но получит значения из соседних полей. Никакой диагностики не будет — ни компилятор, ни отладчик не имеют оснований возразить.

Что исправлено

  • раскладка структуры sched_param приведена к спецификации — 11 февраля;
  • timespec вынесен в отдельный заголовок и экспортируется с правильным time_t — 12 февраля;
  • починен тип размера блока — 24 февраля;
  • добавлен предел PTHREAD_STACK_MIN — 1 февраля.

Отдельно в этом же месяце на 32-битной цели исправлена ширина int32_t и починены заголовки C++ для 32-битного x86 и RISC-V. Коммиты по ним в выдаче не нашлись, поэтому дата этих двух правок не установлена и в новость не заявлена.

Кого это затрагивает

Генераторы привязок на Rust — bindgen и его потомки — читают заголовки C и строят по ним типы. Ошибка в заголовке становится ошибкой в сгенерированном коде, и дальше она живёт уже без всякой связи с исходной причиной. Поэтому расхождение в заголовке видят не авторы привязки, а пользователи библиотеки, у которых в худшем случае порча данных, а в лучшем — непонятная ошибка компиляции.

Оригинал

Коммиты в репозитории redox-os/relibc: Fix exporting sched_param от 11 февраля 2026 года, extract timespec to a bits header от 12-го, Fix blkcnt_t type от 24-го, define PTHREAD_STACK_MIN от 1-го. Сводка «This Month in Redox — February 2026», раздел «Relibc Improvements»

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