Спустя полтора года разработки авторы операционной системы Redox 0.6, написанной с использованием языка Rust, опубликовали новый выпуск. Новинку можно протестировать — для этого в сеть выложены загрузочные образы. Их объем составляет 61 МБ. Свежая версия может тестироваться уже на обычном «железе», а не в QEMU и VirtualBox.
Операционная система распространяется под свободной лицензией MIT. Что нового в версии 0.6?
- Практически с нуля переписана система управления памятью ядра. Речи идет об rmm, kernel memory manager. Разработчикам удалось избавиться от утечек памяти, создававших проблемы при использовании старого менеджера памяти. Также повышена стабильность поддержки многоядерных систем.
- В состав операционной системы включено несколько проектов, которые разработали студенты в рамках инициативы RSoC (Redox OS Summer of Code), включая разработки, связанные с поддержкой io_uring, ptrace, strace, gdb, дисковыми разделами и ведением логов.
- Авторам проекта удалось доработать стандартную Си-библиотеку Relibc, которая способна работать не только в Redox, но и в дистрибутивах на базе ядра Linux.
- Сейчас добавлен и собственный пакетный менеджер pkgar со связанным с ним форматом пакетов. Пакетный менеджер предоставляет верификацию источника по цифровой подписи. Также есть контроль целостности, возможность повторяемой сборки, автоматические обновления, передача изменившихся данных и независимость от каталога установки. В отличие от других форматов pkgar включает лишь метаданные, которые необходимы для извлечения пакета.
- Еще одно обновление заключается в переводе скриптов cookbook на новую сборочную систему, которая написана на языке Rust. В ней вместо Shell-сценариев для описания логики сборки предложены файлы в формате Tomt.
- Большое количество времени ушло на борьбу с нарушениями совместимости, которые связаны с переработкой макроса Asm.
Что касается особенностей этой операционной системы, то она развивается полностью в соответствии с философией Unix. Ряд идей авторы позаимствовали из SeL4, Minix и Plan 9. Одна из основных «фишек» — использование концепции микроядра, при которой обеспечивается только взаимодействие между процессами и управлением ресурсами. Остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предусмотрена POSIX-прослойка, которая дает возможность запускать многие программы без портирования.
Кроме того, разработчики использовали для своей ОС принцип «все есть URL». Так, для записи в лог может использоваться URL «log://», для взаимодействия между процессами — «bus://», для сетевого взаимодействия — «tcp://» и т.п. Что касается модулей, которые могут быть реализованы в форме драйверов, расширений ядра и пользовательских приложений, могут регистрировать свои обработчики URL. Пример: написание модуля обращения к портам ввода/вывода и привязать его к URL «port_io://», после чего можно использовать его для доступа к 60 порту через открытие URL «port_io://60».
Пользовательское окружение основывается на собственной графической оболочке OrbTk, предоставляющего API, похожий на Flutter, React и Redux. Браузер — Netsurf. В ходе развития проекта разработчики предусмотрели собственный пакетный менеджер, набор стандартных утилит (binutils, coreutils, netutils, extrautils), командная оболочка ion, стандартная Си-библиотека relibc, vim-подобный текстовый редактор sodium, сетевой стек и файловая система TFS, развиваемая на основе идей ZFS (модульный вариант ZFS на языке Rust). Конфигурация задаётся на языке Toml.