Выпуск операционной системы Redox OS 0.9, написанной на языке Rust

После почти двух лет разработки опубликован выпуск операционной системы 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. Пользовательское окружение построено на базе собственной графической оболочки Orbital и тулкита OrbTk, предоставляющего API, похожий на Flutter, React и Redux. Имеется поддержка GUI-библиотек Slint, Iced и winit.

Операционная система развивается в соответствии с философией 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.
  • Расширены возможности системы сборки.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61836