Po roce a půl vývoje byl publikován vydání projektu MirageOS 4.0, který umožňuje vytvářet operační systémy jednoho aplikačního modulu, kde aplikace je dodávána jako samostatný "unikernel", schopný fungovat bez operačních systémů, samostatného jádra OS a jakýchkoli vrstev. Pro vývoj aplikací se používá jazyk OCaml. Kód projektu je šířen pod volnou licencí ISC.
Všechna nízkoúrovňová funkčnost, charakteristická pro operační systém, je realizována ve formě knihovny, která je připojena k aplikaci. Aplikace může být vyvinuta v jakémkoli OS a poté je zkompilována do specializovaného jádra (koncept unikernel), které může běžet přímo nad hypervizory Xen, KVM, BHyve a VMM (OpenBSD), na mobilních platformách, ve formě procesu v prostředí kompatibilním s POSIX, nebo v cloudových prostředích Amazon Elastic Compute Cloud a Google Compute Engine.
Vygenerované prostředí neobsahuje nic nadbytečného a interaguje přímo s hypervizorem bez ovladačů a systémových vrstev, což umožňuje dosáhnout výrazného snížení režijních nákladů a zvýšení bezpečnosti. Práce s MirageOS se skládá ze tří fází: příprava konfigurace s určením používaných OPAM balíčků v prostředí, sestavení prostředí a spuštění prostředí. Runtime pro zajištění činnosti nad hypervizory je postaven na základě jádra Solo5.
I když jsou aplikace a knihovny vytvářeny ve vysoce úrovňovém jazyce OCaml, výsledná prostředí vykazují velmi dobrou výkonnost a minimální velikost (například DNS server zabírá pouhých 200 KB). Správa prostředí je rovněž zjednodušená, protože při aktualizaci programu nebo změně konfigurace stačí vytvořit a spustit nové prostředí. Podporuje se několik stovek knihoven v jazyce OCaml pro provádění síťových operací (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN atd.), práci se skladovacími systémy a zajištění paralelního zpracování dat.
Klíčová vylepšení:
- Byl upraven proces kompilace projektů a unikernel. Místo dříve používaného sestavovacího systému ocamlbuild byl nasazen nástroj dune a lokální repozitáře (monorepo). Pro vytváření těchto repozitářů byla přidána nová utilita opam-monorepo, která umožnila oddělit správu balíčků od sestavení ze zdrojových textů. Utilita opam-monorepo vykonává úkoly, jako je vytváření lock souborů pro závislosti spojené s projektem, stahování a extrakce kódu závislostí a nastavení prostředí pro použití sestavovacího systému dune. Samotné sestavení se provádí pomocí nástroje dune.
- Byl poskytnut opakovatelný proces sestavení. Použití lock souborů zajišťuje vazby na verze závislostí a umožňuje kdykoli plně zopakovat proces sestavení se stejným kódem.
- Byl realizován nový proces kroskompilace a byla zajištěna možnost kroskompilace pro všechny podporované cílové platformy z jednoho společného sestavovacího prostředí, v němž se také provádí kroskompilace závislostí a knihoven se vazbami v jazyce C, aniž by bylo nutné tyto vazby přidávat do hlavního balíku. Kroskompilace je organizována s použitím pracovních prostorů, které poskytuje sestavovací systém dune.
- Byla přidána podpora nových cílových platforem, například byla poskytnuta experimentální možnost sestavení samostatných aplikací pro provoz na deskách Raspberry Pi 4.
- Byla provedena práce na integraci částí MirageOS do ekosystémů spojených s vývojem v jazyce OCaml, aby se usnadnilo sestavení aplikací ve formě unikernel. Mnoho balíčků MirageOS bylo portováno pro sestavovací systém dune. Utilita opam-monorepo je dostupná pro instalaci pomocí správce balíčků opam a může být použita v projektech, které využívají sestavovací systém dune. Pro údržbu patchů, které řeší problémy se sestavením závislostí v dune, byly vytvořeny dva repozitáře dune-universe/opam-overlays a dune-universe/mirage-opam-overlays, které jsou zahrnuty ve výchozím nastavení při použití CLI utility mirage.
- Byla zjednodušená integrace MirageOS s knihovnami v jazycích C a Rust.
- Byl navržen nový OCaml runtime, který umožňuje obejít se bez libc (libc-free).
- Byla poskytnuta možnost používání služby Merlin pro integraci s typovými integrovanými vývojovými prostředími.
Zdroj: opennet.ru
