Developers: | MirageOS Core Team |
Last Release Date: | 2022/03/30 |
Technology: | OS |
Main article: Operating systems
MirageOS allows you to form operating systems of one application, in which the application is delivered as a self-sufficient "unikernel," capable of running without the use of operating systems, a separate OS kernel and any layouts.
2022: MirageOS 4.0
March 30, 2022 it became known that the release of the project MirageOS 4.0 was published, in which the OCaml language is used for application development. The project code is distributed under a free ISC license.
As reported, all low-level functionality inherent in is operating system implemented in the form of a library attached to an application. The application can be developed in any OS, and then compiled into a specialized kernel (unikernel concept), which can be run directly on top of,, hypervisors Xen KVM BHyve and VMM (), OpenBSD over mobile platforms, in the form of a process in POSIX a -cooperative environment or cloudy in environments and. Amazon Elastic Compute Cloud Google Compute Engine
The generated environment does not contain anything unnecessary and interacts directly with the hypervisor without drivers and system layouts, which allows you to reduce overhead and optimize security. Working with MirageOS is reduced to three stages: preparing a configuration with the definition of OPAM packages used in the environment, building an environment and starting an environment. Runtime to provide work on top of hypervisors is based on the Solo5 kernel.
Although applications and libraries are generated in OCaml, the resulting environments show proper performance and minimum size (for example, a DNS server takes only 200 KB). The environment maintenance is also optimized, since if you need to update the program or change the configuration, it is enough to create and start another environment. Several hundred OCaml libraries are supported for network operations (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), storage operations, and parallel data processing.
Key changes:
- The process of compiling projects and unikernel has changed. Instead of the previously used ocamlbuild assembly system, the dune tool and local repositories (monorepo) are used. To create such repositories, the opam-monorepo utility was added, which made it possible to separate package management from the assembly from the source text. The opam-monorepo utility performs work such as creating lock files for project-related dependencies, loading and retrieving dependency code, and configuring the environment for the dune assembly system. The dune tool builds directly.
- A repeating build process was provided. Using lock files binds to dependency versions and allows you to completely repeat the assembly process with the same code at any time.
- An updated cross-compilation process is implemented and it is possible to cross-compile for all supported target platforms from one common assembly environment, which includes cross-compiling dependencies and libraries that have bindings in the language, Si without the need to add these bindings to the main package. Cross-compilation is organized using the workspaces provided by the dune assembly system.
- Added support for target platforms, for example, provided the experimental ability to build self-sufficient applications for working on Raspberry Pi 4 boards.
- Work has been carried out to integrate parts of the MirageOS into ecosystems associated with OCaml development to optimize the assembly of applications in the form of unikernel. Many packages MirageOS ported to the dune assembly system. The opam-monorepo utility is available for installation using the opam batch manager and can be used in projects that use the dune assembly system. Two dune-universe/opam-overlays and dune-universe/mirage-opam-overlays repositories have been created to support patches that solve dependency assembly problems in dune, and are enabled by default when using the mirage CLI utility.
- Optimized integration of MirageOS with libraries C in languages and. Rust
- Proposed OCaml runtime, allowing you to do without libc (libc-free).
- It is possible to use the Merlin service for integration with typical integrated development environments[1].