Cargo и rustc заработали на Redox — первый запрос на слияние отправлен с самой системы
19.01.2026Компилятор Rust и система сборки Cargo работают на Redox. Первый вклад в relibc сделан целиком на Redox — правка, сборка, проверка и отправка запроса на слияние из самой системы. Путь к этому занял три месяца.
Почему это так трудно
Компилятор и система сборки — самый жёсткий тест для операционной системы. Их работа устроена неудачно для ОС: они запускают тысячи процессов подряд, постоянно открывают и закрывают мелкие файлы, активно пользуются потоками, сигналами и памятью. Любая ошибка в примитиве проявляется именно здесь.
История Redox с этим длинная. Попытка была ещё в 2022 году в рамках Google Summer of Code, затем отдельная работа «сосредоточиться на rustc». Оба раза до полного успеха не доходило, и причины выдвигались одни и те же: производительность сетевого стека и сложные ошибки в системных примитивах.
Осенью 2025 года появился первый настоящий сдвиг: частичная поддержка сборки Redox на самой Redox. Автор проекта прямо писал, что компиляторы и сборочные системы — настоящее испытание для ОС, и что нужна помощь в борьбе с ошибками.
Что пришлось починить
За три месяца устранено несколько ошибок, каждая из которых ломала именно этот сценарий:
- вызов
mremapвызывал панику — Cargo падал; - ложные пробуждения в
futexошибочно трактовались как истечение таймаута, из-за чего ожидание заканчивалось неверно; - возникал дедлок при переключении контекста;
- динамический линкер и relibc использовали разные аллокаторы — это неопределённое поведение;
- обработка неопределённого индекса символа в релокации
TPOFFисправляла случайные падения компилятора.
Последние две стоит отметить отдельно. Речь о различии аллокаторов в двух частях одной программы — это неопределённое поведение, которое компилятор вправе оптимизировать исходя из неверных посылок. И TPOFF — релокация, через которую работает локальное хранилище потока, то есть то, на чём держится логика Rust с потоками. Ошибка здесь проявлялась не как «что-то не так», а как случайные падения.
Первый вклад из самой системы
Через несколько дней после этого в relibc появился запрос на слияние, полностью сделанный на Redox: правка в редакторе COSMIC Edit, сборка, проверка и отправка из системы, запущенной под эмулятором.
Для операционной системы это закрывает цикл. До этого момента любое изменение обязательно требовало переключения на другую машину. Теперь цикл разработки не прерывается.
Что осталось нерешённым
Пункт «динамическая линковка в начальной файловой системе» пока не релиз: по формулировке сводки, это часть работы, а не завершённый результат. Это важно — сборка работает, но с ограничениями.
Оригинал
Слияние запроса на слияние в redox-os/relibc от 19 января 2026 года; исправления ядра — Fix the mremap system call от 3 января, Fix futex spurious wakeups treated as timeouts от 7 января, Fix a context switch deadlock от 19 января; правки relibc по аллокатору и TPOFF — 8 и 20 января. Сводка «This Month in Redox — January 2026», разделы «Cargo Project Compilation in Redox!» и «First Merge Request Submitted From Redox OS!»; частичная поддержка сборки Redox на Redox — 12 сентября 2025 года
Упоминаний: 1 · Просмотров: 5