Efter mer Àn ett och ett halvt Ärs utveckling har version 4.0 av MirageOS publicerats, vilket möjliggör skapandet av operativsystem för enskilda applikationer dÀr applikationen levereras som en sjÀlvstÀndig "unikernel" som kan köras utan att anvÀnda operativsystem, separata OS-kÀrnor eller nÄgra mellanlager. Utvecklingen av applikationer görs med programsprÄket OCaml. Koden i projektet distribueras under den fria licensen ISC.
All lÄg nivÄ funktionalitet som Àr typisk för operativsystemet implementeras i form av ett bibliotek som kopplas till applikationen. Applikationen kan utvecklas i vilket operativsystem som helst, och compilers sedan till en specialiserad kÀrna (konceptet unikernel) som kan köras direkt över hypervisorer som Xen, KVM, BHyve och VMM (OpenBSD), över mobila plattformar, som en process i en POSIX-kompatibel miljö eller i molnmiljöer som Amazon Elastic Compute Cloud och Google Compute Engine.
Den genererade miljön innehÄller inget överflödigt och interagerar direkt med hypervisorn utan drivrutiner och systemlager, vilket möjliggör en betydande minskning av overhead och ökad sÀkerhet. Arbetet med MirageOS omfattar tre steg: förbereda konfigurationen med att bestÀmma vilka OPAM-paket som anvÀnds i miljön, bygga miljön och starta miljön. Runtime för att möjliggöra körning över hypervisorer bygger pÄ kÀrnan Solo5.
Trots att applikationer och bibliotek skapas pÄ det hög nivÄ programsprÄket OCaml, visar de slutgiltiga miljöerna en ganska bra prestanda och minimal storlek (till exempel tar DNS-servern bara 200 KB). UnderhÄllet av miljöerna har ocksÄ förenklats, eftersom det vid behov av programuppdateringar eller konfigurationsÀndringar Àr tillrÀckligt att skapa och starta en ny miljö. Flera hundra bibliotek pÄ OCaml stöds för att utföra nÀtverksoperationer (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), arbeta med lagringslösningar och sÀkerstÀlla parallell databehandling.
NyckelförbÀttringar:
- Processen för att kompilera projekt och unikernel har förÀndrats. IstÀllet för det tidigare anvÀnda byggsystemet ocamlbuild, anvÀnds nu verktyget dune och lokala förrÄd (monorepo). För att skapa sÄdana förrÄd har en ny verktyg som heter opam-monorepo lagts till, vilket möjliggör separation av paketförvaltning frÄn kompilering frÄn kÀllkod. Verktyget opam-monorepo utför uppgifter som att skapa lÄs-filer för projektrelaterade beroenden, hÀmta och extrahera kod frÄn beroenden och konfigurera miljön för att anvÀnda byggsystemet dune. SjÀlva kompileringen utförs med verktyget dune.
- En repetitiv byggprocess har tillhandahÄllits. AnvÀndningen av lÄs-filer sÀkerstÀller koppling till versioner av beroenden och gör det möjligt att nÀr som helst helt reproducera byggprocessen med samma kod.
- En ny process för korskompilering har genomförts och möjlighet till korskompilering för alla stödda mÄlplattformar har sÀkerstÀllts frÄn en gemensam byggmiljö, dÀr korskompilering av beroenden och bibliotek som har C-bindningar utförs, utan att dessa bindningar behöver lÀggas till i huvudpaketet. Korskompilering Àr organiserad med hjÀlp av arbetsytor som tillhandahÄlls av byggsystemet dune.
- Stöd för nya mÄlplattformar har lagts till, exempelvis har en experimentell möjlighet till att bygga sjÀlvförsörjande applikationer för anvÀndning pÄ Raspberry Pi 4 tillhandahÄllits.
- Arbete har gjorts för att integrera delar av MirageOS i ekosystem relaterade till utveckling pÄ OCaml, för att förenkla byggandet av applikationer i form av unikernel. MÄnga paket av MirageOS har portats till byggsystemet dune. Verktyget opam-monorepo Àr tillgÀngligt för installation med pakethanteraren opam och kan anvÀndas i projekt som anvÀnder byggsystemet dune. För att stödja patchar som löser problem med beroende-kompilering i dune har tvÄ förrÄd, dune-universe/opam-overlays och dune-universe/mirage-opam-overlays, skapats och ingÄr som standard vid anvÀndning av CLI-verktyget mirage.
- Integrationen av MirageOS med bibliotek pÄ sprÄk som C och Rust har förenklats.
- En ny OCaml-runtime har föreslagits, vilket gör det möjligt att klara sig utan libc (libc-free).
- Möjlighet att anvÀnda tjÀnsten Merlin för integration med typiska integrerade utvecklingsmiljöer har tillhandahÄllits.
KĂ€lla: opennet.ru
