После года разработки подготовлен (https://www.redox-os.org/news/release-0.5.0/) выпуск операционной системы Redox 0.5 (http://www.redox-os.org), разработанной с использованием языка Rust и концепции микроядра. Наработки проекта распространяются (https://github.com/redox-os/redox) под свободной лицензией MIT. Для тестирования в VirtualBox или QEMU предложены (https://gitlab.redox-os.org/redox-os/redox/-/jobs/10824/arti.../) готовые загрузочные образы.Пользовательское окружение в Redox построено на базе графической оболочки Orbital (https://www.opennet.ru/opennews/art.shtml?num=38934), работающей поверх Wayland. В качестве web-браузера применяется Netsurf (https://www.opennet.ru/opennews/art.shtml?num=41855). Операционная система использует концепцию микроядра, при котором на уровне ядра обеспечивается только взаимодействие между процессами и управление ресурсами, а вся остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предоставляется специальная POSIX-прослойка, позволяющая запускать многие программы без портирования.
Redox развивается в соответствии с философией Unix c заимствованием некоторых идей из SeL4, Minix и Plan 9. В системе применяется принцип "все есть URL". Например, для записи в лог может использоваться URL "log://", для взаимодействия между процессами "bus://", для сетевого взаимодействия "tcp://" и т.п. Модули, которые могут быть реализованы в форме драйверов, расширений ядра и пользовательских приложений, могут регистрировать свои обработчики URL, например, можно написать модуль обращения к портам ввода/вывода и привязать его к URL "port_io://", после чего можно использовать его для доступа к 60 порту через открытие URL "port_io://60".
Проектом также развивается собственный пакетный менеджер (https://github.com/redox-os/pkgutils), набор стандартных утилит (binutils, coreutils, netutils, extrautils), командная оболочка ion (https://github.com/redox-os/ion), vim-подобный текстовый редактор sodium (https://github.com/redox-os/sodium), сетевой стек и файловая система TFS (https://github.com/redox-os/tfs), развиваемая на основе идей ZFS (модульный вариант ZFS на языке Rust). Конфигурация задаётся на языке Toml (https://github.com/toml-lang/toml). Система поддерживает запуск на процессорах с архитектурой x86_64 c VBE-совместимой графической картой (nvidia, intel, amd), AHCI-дисками и сетевыми картами на базе чипов E1000 или RTL8168.
Из новшеств, добавленных в выпуске Redox 0.5, можно отметить:
- Предложена собственная стандартная Си-библиотека Relibc (https://github.com/redox-os/relibc), написанная на языке Rust. Relibc позиционируется как переносимая реализация стандартной библиотеки Си, соответствующая стандарту POSIX и способная работать не только в Redox, но и в дистрибутивах на базе ядра Linux.
Ранее в Redox в качестве стандартной библиотеки применялся форк (https://github.com/redox-os/newlib) библиотеки newlib (https://github.com/redox-os/newlib) от проекта Сygwin, но он не устраивал разработчиков с точки зрения безопасности и кросс-платформенности. На текущей стадии развития Relibc уже намного превосходит newlib по функциональности;
- Подготовлены новые загрузчики bootloader-coreboot (https://gitlab.redox-os.org/redox-os/bootloader-coreboot) и bootloader-efi (https://gitlab.redox-os.org/redox-os/bootloader-efi) для coreboot и EFI, на основе которых сформированы загрузочные образы. Написаны библиотеки для работы с EFI на языке Rust и загрузочный код (payload для coreboot) на Rust. Загрузчики могут применяться обособленно от Redox и в других проектах;
- Система обработки событий переработана для предоставления корректной поддержки вызовов select и poll;
- Реализована полноценная поддержка функций отображения в память (mmap);
- Добавлена поддержка Pthreads и предложены дополнительные системные вызовы для обработки сигналов;
- Улучшена совместимость с LLVM, что позволило обеспечить сборку rustc и Mesa (c llvmpipe);
- Благодаря переходу на новую системную библиотеку удалось добиться поддержки многих новых приложений (https://static.redox-os.org/pkg/x86_64-unknown-redox/repo.toml). Для установки в Redox подготовлены готовые пакеты с библитеками SDL2, ffmpeg, cairo, gstreamer, pcre, glib, pixman, libiconv, libsodium и gettext, набором компиляторов llvm, реализацией OpenGL/Vulkan Mesa, эмуляторами scummvm, dosbox и mgba, играми eduke32 (Duke Nukem 3D), openttd и FreeDoom. Всего добавлено 62 новых пакета.
URL: https://www.redox-os.org/news/release-0.5.0/
Новость: https://www.opennet.ru/opennews/art.shtml?num=50387