После 8 месяцев разработки опубликован первый прототип Unix-подобного ядра Moss, частично совместимого с Linux. Код написан на языке Rust с ассемблерными вставками и распространяется под лицензией MIT. В настоящее время проект поддерживает только архитектуру Aarch64, может запускаться в QEMU и протестировано на платах Raspberry Pi 4, Jetson Nano, AMD Kria и imx8. По утверждению разработчиков ядро легко может быть портировано для других архитектур, таких x86_64 и RISC-V, благодаря прослойке для абстрагирования поддержки оборудования.
На данном этапе разработки в Moss реализован 51 системный вызов Linux и обеспечена бинарная совместимость с приложениями для Linux, достаточная для запуска командной оболочки Bash и большинства утилит из набора BusyBox. Из особенностей архитектуры Moss отмечается использование модели async/await для обеспечения асинхронного выполнения компонентов ядра, исключающей основные классы взаимных блокировок. В форме асинхронно выполняемых функций реализованы все нетривиальные системные вызовы.
Основные возможности:
- Система управления памятью с поддержкой страниц памяти в режиме CoW (Copy-on-Write), таблиц страниц памяти, асинхронных функций копирования памяти между ядром и пространством пользователя, обработки исключений (page fault) на стороне ядра и пространства пользователя.
- Система управления процессами с планировщиком задач и поддержкой миграции задач через IPI (inter-processor interrupt). Поддержка ответвления процессов через вызов clone(). Возможности для доставки сигналов процессам и потокам.
- Асинхронно работающий слой VFS (Virtual File System), блочное устройство Ramdisk, драйвер FAT32 и устройство devtmpfs.
- Вынос основной функциональности в библиотеку libkernel, не привязанную к аппаратным архитектурам.
- HAL-прослойка (Hardware Abstraction Layer) для обеспечения поддержки оборудования.
- Тестовый набор, включающий более 230 тестов.
Из существенных ограничений отмечается отсутствие сетевой подсистемы и наличие лишь урезанного драйвера файловой системы, поддерживающего ФС Fat32 в режиме толь для чтения. Среди приоритетных задач упомянуто продолжение реализации системных вызовов Linux, создание TCP/IP стека, поддержка балансировки нагрузки в планировщике задач и предоставление полноценного драйвера для файловой системы (ext2/4).