Después de un año y medio de desarrollo, se lanza la versión 4.0 del proyecto MirageOS, que permite la creación de sistemas operativos de una sola aplicación, donde la aplicación se proporciona como un «unikernel» autosuficiente, capaz de ejecutarse sin un sistema operativo, un núcleo de sistema operativo separado o cualquier capa intermedia. Para el desarrollo de aplicaciones se utiliza el lenguaje OCaml. El código del proyecto se distribuye bajo la licencia libre ISC.
Toda la funcionalidad de bajo nivel propia de un sistema operativo se implementa en forma de una biblioteca que se adjunta a la aplicación. La aplicación puede ser desarrollada en cualquier sistema operativo, tras lo cual se compila en un núcleo especializado (concepto de unikernel), que puede ejecutarse directamente sobre hipervisores como Xen, KVM, BHyve y VMM (OpenBSD), sobre plataformas móviles, en forma de proceso en un entorno compatible con POSIX o en entornos en la nube como Amazon Elastic Compute Cloud y Google Compute Engine.
El entorno generado no contiene nada superfluo e interactúa directamente con el hipervisor sin controladores y capas del sistema, lo que permite una reducción significativa de la sobrecarga y un aumento de la seguridad. Trabajar con MirageOS se reduce a tres etapas: preparación de la configuración con la determinación de los paquetes OPAM utilizados en el entorno, compilación del entorno y ejecución del entorno. El runtime para garantizar su funcionamiento sobre hipervisores se basa en el núcleo Solo5.
A pesar de que las aplicaciones y bibliotecas se forman en el lenguaje de alto nivel OCaml, los entornos finales demuestran un rendimiento bastante bueno y un tamaño mínimo (por ejemplo, un servidor DNS ocupa solo 200 KB). También se simplifica el mantenimiento de los entornos, ya que, en caso de ser necesario actualizar el programa o cambiar la configuración, basta con crear y ejecutar un nuevo entorno. Se soportan cientos de bibliotecas en el lenguaje OCaml para llevar a cabo operaciones de red (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), trabajar con almacenes y garantizar el procesamiento paralelo de datos.
Mejoras clave:
- Se ha modificado el proceso de compilación de proyectos y unikernel. En lugar del sistema de construcción ocamlbuild anteriormente utilizado, se ha empleado la herramienta dune y repositorios locales (monorepo). Se ha añadido una nueva utilidad opam-monorepo para crear repositorios de este tipo, lo que permite separar la gestión de paquetes de la construcción a partir de código fuente. La utilidad opam-monorepo realiza tareas como la creación de archivos de bloqueo para las dependencias relacionadas con el proyecto, la descarga y extracción de código de dependencias, y la configuración del entorno para usar el sistema de construcción dune. La construcción en sí se lleva a cabo utilizando la herramienta dune.
- Se ha proporcionado un proceso de construcción repetible. El uso de archivos de bloqueo garantiza la vinculación a versiones de dependencias y permite repetir completamente el proceso de construcción en cualquier momento con el mismo código.
- Se ha implementado un nuevo proceso de compilación cruzada y se ha asegurado la posibilidad de realizar compilaciones cruzadas para todas las plataformas objetivo soportadas desde un entorno de construcción común, en el que también se lleva a cabo la compilación cruzada de dependencias y bibliotecas con vínculos en lenguaje C, sin necesidad de agregar esos vínculos al paquete principal. La compilación cruzada se organiza utilizando los espacios de trabajo proporcionados por el sistema de construcción dune.
- Se ha añadido soporte para nuevas plataformas objetivo, por ejemplo, se ha proporcionado la capacidad experimental de construir aplicaciones autónomas para funcionar en placas Raspberry Pi 4.
- Se ha trabajado en la integración de partes de MirageOS en ecosistemas relacionados con el desarrollo en el lenguaje OCaml, para simplificar la construcción de aplicaciones en forma de unikernel. Muchos paquetes de MirageOS han sido portados al sistema de construcción dune. La utilidad opam-monorepo está disponible para instalación mediante el gestor de paquetes opam y puede ser utilizada en proyectos que empleen el sistema de construcción dune. Se han creado dos repositorios dune-universe/opam-overlays y dune-universe/mirage-opam-overlays para acompañar parches que resuelven problemas de construcción de dependencias en dune, los cuales están incluidos por defecto al utilizar la utilidad CLI mirage.
- Se ha simplificado la integración de MirageOS con bibliotecas en los lenguajes C y Rust.
- Se ha propuesto un nuevo runtime de OCaml que permite funcionar sin libc (sin libc).
- Se ha creado la posibilidad de utilizar el servicio Merlin para la integración con entornos de desarrollo integrados.
Fuente: opennet.ru
