Redox: ремонтопригодный unsafe в relibc и профилирование размера ядра

31.08.2026

Две работы по сопровождаемости Redox: 4lDO2 задокументировал философию безопасности relibc и перенёс почти весь unsafe-код в листовые функции, а Ибак Лоренцсон добавил профилирование размера ядра, чтобы видеть, что именно стоит места.

Философия безопасности relibc

relibc — стандартная C-библиотека Redox, написанная на Rust, и большая её часть по необходимости использует unsafe: работа с памятью по указателям невозможна без него. Проблема не в самом unsafe, а в том, что он размазан по сотням функций, где ошибиться легко.

Новый подход — свести его к «листовым» функциям: сосредоточить unsafe в небольшом числе нижних функций, где нет ветвлений и сложного состояния, а всё остальное писать в безопасном Rust. Такой код читается целиком при ревью, и ошибки в нём видны сразу. Заодно упрощена внутренняя обработка ошибок: вместо кодов POSIX возвращается больше информации, что облегчает разбор целого класса ошибок.

Документ с изложением подхода добавлен в репозиторий relibc, большую часть unsafe-кода в сокетах и getaddrinfo перенесли в листовые функции.

Профилирование размера ядра

Другая работа — инструмент, который измеряет, сколько места занимает каждая часть ядра и где размер можно сократить. По замыслу, это должно помогать экономить и память. В августе тем же направлением убрано 2,2% размера образа на x86-64 за счёт удаления кода для дерева устройств в ветках, куда управление не заходит.

Оригинал

This Month in Redox — August 2026, разделы «Kernel Binary Size Profiling» и «Better relibc Contribution Philosophy and Goals»

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