След като протежи една година и половина разработка, беше публикувана версията на проекта MirageOS 4.0, която позволява създаването на операционни системи за едно приложение, при които приложението се доставя като автономен "unikernel", способен да работи без използването на операционни системи, отделно ядро и всякакви междинни слоеве. За разработка на приложения се използва езикът OCaml. Кодът на проекта се разпространява под свободната лицензия ISC.
Цялата нискоуровнева функционалност, характерна за операционната система, е реализирана под формата на библиотека, прикрепена към приложението. Приложението може да бъде разработено в която и да е операционна система, след което се компилира в специализирано ядро (концепцията unikernel), което може да се стартира директно над хипервизорите Xen, KVM, BHyve и VMM (OpenBSD), на мобилни платформи, под формата на процес в POSIX-съвместима среда или в облачни среди Amazon Elastic Compute Cloud и Google Compute Engine.
Сгенерираната среда не съдържа нищо излишно и взаимодейства директно с хипервизора без драйвери и системни слоеве, което позволява значително намаляване на разходите и повишаване на сигурността. Работата с MirageOS се състои в три етапа: подготовка на конфигурацията с определяне на използваните в средата пакети OPAM, изграждане на средата и стартиране на средата. Runtime за осигуряване на работа над хипервизорите е построен на базата на ядрото Solo5.
Въпреки че приложенията и библиотеките се формират на високоязиковия език OCaml, крайните среди демонстрират достатъчно добра производителност и минимален размер (например, DNS-сървър заема само 200 КБ). Поддръжката на средите също е опростена, тъй като при необходимост от обновление на програмата или промяна на конфигурацията, е достатъчно само да създадете и стартирате нова среда. Поддържат се няколкостотин библиотеки на езика OCaml за извършване на мрежови операции (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN и т.н.), работа с хранилища и осигуряване на паралелна обработка на данни.
Ключови подобрения:
- Процесът на компилиране на проекти и unikernel е променен. Вместо преди използваната система за изграждане ocamlbuild, сега се използва инструментариумът dune и локални хранилища (monorepo). За създаване на такива хранилища е добавен нов инструмент opam-monorepo, който позволява разделяне на управлението на пакетите от изграждането от изходния код. Инструментът opam-monorepo извършва задачи като създаването на lock-файлове за свързаните с проекта зависимости, изтегляне и разкомплектоване на кода на зависимостите и настройка на средата за използване на системата за изграждане dune. Сама по себе си, изграждането се извършва от инструментариума dune.
- Предоставен е повтаряем процес на изграждане. Използването на lock-файлове осигурява привързване към версиите на зависимостите и позволява по всяко време да се повтори напълно процесът на изграждане със същия код.
- Реализиран е нов процес за крос-компилиране и е осигурена възможност за крос-компилиране за всички поддържани целеви платформи от обща среди за изграждане, в която влизат крос-компилирането на зависимости и библиотеки с привързаности на Си, без необходимост от добавяне на тези привързаности в основния пакет. Крос-компилирането е организирано с помощта на работни пространства, предоставени от системата за изграждане dune.
- Добавена е поддръжка за нови целеви платформи, например е предоставена експериментална възможност за изграждане на самостоятелни приложения за работа на платките Raspberry Pi 4.
- Извършена е работа по интеграция на части от MirageOS в екосистемите, свързани с разработката на OCaml, за улесняване на изграждането на приложения под формата на unikernel. Много пакети MirageOS са портнати за системата за изграждане dune. Инструментът opam-monorepo е наличен за инсталиране чрез пакетния мениджър opam и може да се използва в проекти, прилагащи системата за изграждане dune. За поддръжка на пачове, решаващи проблеми с изграждането на зависимости в dune, са създадени две хранилища dune-universe/opam-overlays и dune-universe/mirage-opam-overlays, които са включени по подразбиране при използване на CLI-инструмента mirage.
- Интеграцията на MirageOS с библиотеки на езици C и Rust е опростена.
- Предложен е нов OCaml runtime, който позволява работа без libc (libc-free).
- Предоставена е възможност за използване на услугата Merlin за интеграция с интегрирани среди за разработка.
Източник: opennet.ru
