Po več kot letu in pol razvoja je izšla različica projekta MirageOS 4.0, ki omogoča oblikovanje operacijskih sistemov za eno aplikacijo, kjer je aplikacija dostavljena kot samostojni "unikernel", ki lahko deluje brez operacijskih sistemov, ločenega jedra OS in kakršnih koli slojev. Za razvoj aplikacij se uporablja jezik OCaml. Koda projekta se distribuira pod prostimi licencami ISC.
Vsa nizkonivojska funkcionalnost, značilna za operacijski sistem, je realizirana v obliki knjižnice, pritrjene na aplikacijo. Aplikacijo je mogoče razviti v katerem koli OS, po čemer se prevede v specializirano jedro (koncept unikernel), ki se lahko izvaja neposredno nad hipervizorji Xen, KVM, BHyve in VMM (OpenBSD), na mobilnih platformah, v obliki procesa v POSIX-združljivem okolju ali v oblačnih okoljih Amazon Elastic Compute Cloud in Google Compute Engine.
Generirano okolje ne vsebuje ničesar odvečnega in neposredno sodeluje s hipervizorjem brez gonilnikov in sistemskih slojev, kar omogoča znatno zmanjšanje stroškov in povečano varnost. Delo z MirageOS se nanaša na tri stopnje: priprava konfiguracije, ki določa uporabljene OPAM pakete v okolju, sestavljanje okolja in zagon okolja. Runtime za zagotavljanje delovanja nad hipervizorji je zgrajen na osnovi jedra Solo5.
Kljub temu, da so aplikacije in knjižnice oblikovane v visokonivojskem jeziku OCaml, končna okolja izkazujejo precej dobro zmogljivost in minimalno velikost (na primer, DNS strežnik zaseda le 200 KB). Poenostavljeno je tudi vzdrževanje okolij, saj je ob potrebi po posodobitvi programa ali spremembi konfiguracije dovolj, da se ustvari in zažene novo okolje. Podpira se več sto knjižnic v jeziku OCaml za izvedbo omrežnih operacij (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN itd.), delo s shrambi in zagotavljanje paralelnega obdelovanja podatkov.
Ključna poboljšanja:
- Postopek kompilacije projektov in unikernel je bil spremenjen. Namesto prej uporabljenega sistemskega orodja ocamlbuild je bil implementiran orodjar dune in lokalni repozitoriji (monorepo). Nova pripomoček opam-monorepo je bila dodana za ustvarjanje takšnih repozitorijev, ki omogoča ločevanje upravljanja paketov od kompilacije iz izvorne kode. Orodje opam-monorepo opravi naloge, kot so ustvarjanje lock-dokumentov za povezane odvisnosti projekta, prenos in ekstrakcijo kode odvisnosti ter nastavitev okolja za uporabo orodja za kompilacijo dune. Dejanska kompilacija poteka z orodjem dune.
- Zagotovljen je bil ponovljiv postopek gradnje. Uporaba lock-dokumentov zagotavlja povezanost z različicami odvisnosti in omogoča popolno ponovitev postopka gradnje z istim tokom kode kadarkoli.
- Uveden je bil nov proces križnega kompiliranja in omogočena križna kompilacija za vse podprte ciljne platforme iz enotnega skupnega okolja za kompilacijo, ki vključuje tudi križno kompilacijo odvisnosti in knjižnic, ki imajo povezave v programskem jeziku C, brez potrebe po dodajanju teh povezav v glavni paket. Križna kompilacija je organizirana z uporabo delovnih prostorov, ki jih nudi orodje dune.
- Dodana je podpora za nove ciljne platforme, na primer, omogočena je bila eksperimentalna možnost gradnje samostojnih aplikacij za delovanje na karticah Raspberry Pi 4.
- Opravljeno je bilo delo na integraciji delov MirageOS v ekosisteme, povezane z razvojem v programskem jeziku OCaml, z namenom poenostavitve kompilacije aplikacij v obliki unikernel. Mnogi paketi MirageOS so bili preneseni za orodje dune. Orodje opam-monorepo je na voljo za namestitev prek upravljalnika paketov opam in ga je mogoče uporabljati v projektih, ki uporabljajo orodje dune. Za spremljanje popravkov, ki rešujejo težave pri kompilaciji odvisnosti v orodju dune, sta bila ustvarjena dva repozitorija dune-universe/opam-overlays in dune-universe/mirage-opam-overlays, ki sta privzeto vključena pri uporabi CLI orodja mirage.
- Poenostavljena je bila integracija MirageOS z knjižnicami v programskih jezikih C in Rust.
- Predlagan je nov OCaml runtime, ki omogoča delovanje brez libc (libc-free).
- Omogočena je bila uporaba storitve Merlin za integracijo z integriranimi razvojnimi okolji.
Izvor: opennet.ru
