Pärast pooleteise aasta arendust on avaldatud MirageOS 4.0 projekt, mis võimaldab luua ühe rakenduse operatsioonisüsteeme, kus rakendus tarnitakse iseseisva «unikernelina», mis suudab töötada ilma operatsioonisüsteemide, eraldi OS tuuma või mis tahes vahekihtideta. Rakenduste arendamiseks kasutatakse OCaml-keelt. Projekti kood levitatakse avatud ISC litsentsi alusel.
Kogu operatsioonisüsteemile omane madala taseme funktsionaalsus on реалiseeritud raamatukoguna, mis kinnitatakse rakendusele. Rakendust võib arendada ükskõik millises operatsioonisüsteemis, seejärel kompileeritakse see spetsialiseeritud tuumaks (unikerneli kontseptsioon), mis saab käivitada otse hüperviisori Xen kohal, KVM, BHyve ja VMM (OpenBSD), mobiilplatvormide kohal, POSIX-ühilduvas keskkonnas protsessina või pilvekeskkondades Amazon Elastic Compute Cloud ja Google Compute Engine.
Soodustatud keskkond ei sisalda midagi üleliigset ja suhtleb otse hüperviisoriga ilma juhtide ja süsteemide vahekihtideta, mis võimaldab saavutada märkimisväärset overheadi vähenemist ja suurenenud turvalisust. MirageOS-i kasutamine koosneb kolmest etapist: keskkonna konfiguratsiooni ettevalmistamine kasutatavate OPAM-pakettide määratlemisega, keskkonna loomine ja käivitamine. Hüperviisorite kohal töötamiseks mõeldud runtime põhineb Solo5 tuumal.
Hoolimata asjaolust, et rakendused ja raamatukogud luuakse kõrgtasemel OCaml-keeles, näitavad lõplikud keskkonnad üsna head jõudlust ja minimaalset suurust (näiteks DNS-server hõlmab vaid 200 KB). Keskkondade haldamine on samuti lihtsam, kuna programmi või konfiguratsiooni muutmisel piisab uue keskkonna loomise ja käivitamise. Toetatakse sadakond raamatukogu OCaml-keeles, et teostada võrguoperatsioone (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN jne), töötada salvestite ja tagada andmete paralleelne töötlemine.
Peamised täiustused:
- Muudetud on projektide ja unikernel'i kompileerimisprotsess. Varasema ocamlbuild'i ehitussüsteemi asemel on kasutusele võetud tööriistakast dune ja kohalikud hoidlased (monorepo). Sarnaste hoidlate loomiseks on lisatud uus utiliit opam-monorepo, mis võimaldab eraldada pakettide halduse lähtekoodist ehitamisest. Utiliit opam-monorepo teostab selliseid ülesandeid nagu lukufailide loomine projektiga seotud sõltuvuste jaoks, sõltuvuste koodi allalaadimine ja väljastamine ning keskkonna seadistamine dune ehitussüsteemi kasutamiseks. Otsene ehitus toimub tööriistakasti dune abil.
- Pakutud on korduv ehitusprotsess. Lukufailide kasutamine tagab sõltuvuste versioonidega sidumise ja võimaldab igal hetkel täielikult korduda sama koodiga ehitusprotsessi.
- Rakendatud on uus ristkompileerimise protsess ja tagatud võimalus ristkompileerimiseks kõikide toetatud sihtplatvormide jaoks ühest ühisest ehituskeskkonnast, kus toimub ka sõltuvuste ja C-keele liidese raamatukogude ristkompileerimine, ilma et neid liideseid oleks vaja põhipaketti lisada. Ristkompileerimine on organiseeritud tööruumide kasutamisega, mida pakub ehitussüsteem dune.
- Lisatud on toetust uutele sihtplatvormidele, nagu näiteks eksperimendina on võimaldatud iseseisvate rakenduste ehitamine Raspberry Pi 4 plaatidel.
- On tehtud tööd MirageOS komponentide integreerimise nimel OCaml'i arenduse ökosüsteemidesse, et lihtsustada rakenduste ehitamist unikernel'i kujul. Paljud MirageOS paketid on portitud ehitussüsteemi dune jaoks. Utiliit opam-monorepo on saadaval paigaldamiseks opam paketihalduriga ja seda saab kasutada projektides, kus rakendatakse ehitussüsteemi dune. Sõltuvuste ehitusprobleemide lahendamiseks loodud patšide haldamiseks on loodud kaks hoidlat dune-universe/opam-overlays ja dune-universe/mirage-opam-overlays, mis on CLI utiliidi mirage kasutamisel vaikimisi kaasatud.
- Lihtsustatud on MirageOS'i integreerimine C- ja Rust-keelte raamatukogudega.
- Pakutud on uus OCaml'i tööaeg, mis võimaldab loobuda libc'ist (libc-free).
- On pakutud võimalust kasutada Merlin teenust integreerimiseks tüüpiliste integreeritud arenduskeskkondadega.
Allikas: opennet.ru
