После почти двух лет разработки опубликован выпуск операционной системы Redox 0.9, разработанной с использованием языка Rust и концепции микроядра. Наработки проекта распространяются под свободной лицензией MIT. Для тестирования Redox OS предложены загрузочные live-окружения для реального оборудования и системные образы для виртуальных машин (512 МБ и 1.5 ГБ), подготовленные для архитектур x86_64 и i686.
Демонстрационный образ включает эмулятор DOSBox, подборку игр (DOOM, Neverball, Neverputt, sopwith, syobonaction), обучающие программы, музыкальный проигрыватель rodioplay с поддержкой форматов FLAC и WAV, web-браузер Netsurf, просмотрщик изображений, консольный текстовый редактор Sodium, файловый менеджер, эмулятор терминала и текстовый редактор от проекта COSMIC. Имеется поддержка GUI-библиотек Slint, Iced и winit. Пользовательское окружение построено на базе собственной графической оболочки Orbital, которая изначально развивалась на базе тулкита OrbTk, но потом разработка была переведена на библиотеку iced.
Операционная система развивается в соответствии с философией Unix и заимствует некоторые идеи из SeL4, Minix и Plan 9. Redox использует концепцию микроядра, при котором на уровне ядра обеспечивается только взаимодействие между процессами и управление ресурсами, а вся остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предоставляется специальная POSIX-прослойка, позволяющая запускать многие программы без портирования.
Проектом развивается собственный пакетный менеджер, набор стандартных утилит (binutils, coreutils, netutils, extrautils), командная оболочка ion, стандартная Си-библиотека relibc, vim-подобный текстовый редактор sodium, сетевой стек и файловая система. Конфигурация задаётся на языке Toml.
Среди поддерживаемого оборудования отмечены устройства ввода с интерфейсом USB (клавиатуры, мыши, тачпады), вывод графики через API VESA BIOS или UEFI GOP (драйверы для GPU не поддерживаются), звуковые чипы AC’97 и Intel HD Audio, SATA (AHCI, IDE) и NVMe. Поддержка Wi-Fi и устройств хранения с интерфейсом USB пока не доведена до готовности. Работа с графическим окружением протестирована на ноутбуках Lenovo IdeaPad Y510P, System76 Galago Pro и System76 Lemur Pro. С отдельными ограничениями обеспечена поддержка ноутбуков Dell XPS 13, HP Dev One, ASUS X554L, ASUS ROG g55vw, Toshiba Satellite L500 и ASUS Eee PC 900. Из ARM-систем поддерживается Raspberry Pi 3 Model B+.
Основные изменения:
- Значительно расширены возможности, связанные с управлением процессами, потоками, памятью и сигналами, что привело к улучшению работы многих приложений. Например, система достигла уровня, позволяющего собирать простые программы компиляторами GCC и Rust, при этом поддержка самосборки пока не достигнута.
- Из пользовательского окружения COSMIC в Redox перенесены файловый менеджер, текстовый редактор и эмулятор терминала, работающие в графическом режиме.
- Улучшена переносимость с программами из Linux и BSD-систем. Общее число портов приложений доведено примерно до 1700. Из значительных достижений отмечается портирование HTTP-сервера Apache, Simple HTTP Server, RustPython, GNU Make, Lua, Perl 5, текстовых редакторов GNU Nano и Helix.
- Внесены разнообразные оптимизации производительности и исправлены многие проблемы, влияющие на стабильность работы. Повышена производительность файловой системы RedoxFS, системы управления памятью, системных вызовов и переключения контекста. Значительно ускорена работа в виртуальных машинах.
- В дисплейный сервер Orbital добавлена поддержка
GUI-библиотек Slint, Iced и winit. Через winit в Orbital реализована возможность декорирования окон на стороне клиента, создания скрытых окон, развёртывания окон на весь экран. Добавлена возможность воспроизведения музыки и видео из GUI-программ через двойной щелчок мышью. Улучшено оформление среды рабочего стола Orbital. - Вместо адресации через URL (например, для записи в лог мог использоваться URL “log://”, а для сетевого взаимодействия “tcp://”) задействован традиционный для Unix-систем формат файловых путей, что положительно повлияло на совместимость с программами и библиотеками POSIX/Linux.
- Доработана реализация стандартной Си-библиотеки Relibc, которая кроме libm теперь полностью написана на Rust. Расширена поддержка POSIX-функций. Предложена инициативы по предоставлению стабильного ABI для пространства пользователя. Все системные компоненты переведены с redox_syscall на libredox.
- Улучшена работа загрузчика для UEFI.
- Значительно улучшена поддержка архитектуры ARM64 (Aarch64) и обеспечена частичная совместимость с платой Raspberry Pi 3B+.
- Расширены возможности драйвера Contain для изолированного выполнения приложений. Добавлена демонстрация использования драйвера Contain (desktop-contain.toml).
- Улучшены драйверы для PCI и PCIe. Добавлены драйверы VirtIO.
- Расширены возможности системы сборки.