După un an și jumătate de dezvoltare, a fost publicat proiectul MirageOS 4.0, care permite crearea de sisteme de operare pentru aplicații unice, în care aplicația este livrată ca un „unikernel” auto-suficient, capabil să funcționeze fără a necesita sisteme de operare, un nucleu OS separat sau orice strat intermediar. Limbajul utilizat pentru dezvoltarea aplicațiilor este OCaml. Codul proiectului este distribuit sub licența liberă ISC.
Toată funcționalitatea de bază specifică sistemului de operare este implementată sub formă de bibliotecă, atașată aplicației. Aplicația poate fi dezvoltată pe orice sistem de operare, după care este compilată într-un nucleu specializat (conceptul de unikernel), care poate fi lansat direct deasupra hypervisor-urilor Xen, KVM, BHyve și VMM (OpenBSD), deasupra platformelor mobile, sub formă de proces într-un mediu compatibil POSIX sau în medii cloud precum Amazon Elastic Compute Cloud și Google Compute Engine.
Mediul generat nu conține nimic redundant și interacționează direct cu hypervisor-ul fără drivere și straturi de sistem, ceea ce permite o reducere semnificativă a cheltuielilor și o creștere a securității. Lucrul cu MirageOS se reduce la trei etape: pregătirea configurației prin definirea pachetelor OPAM utilizate în mediu, compilarea mediului și lansarea acestuia. Runtime-ul pentru asigurarea funcționării deasupra hypervisor-urilor este construit pe baza nucleului Solo5.
Deși aplicațiile și bibliotecile sunt create într-un limbaj de programare de înalt nivel, OCaml, mediile finale demonstrează o performanță destul de bună și o dimensiune minimă (de exemplu, serverul DNS ocupă doar 200 KB). Întreținerea mediilor devine, de asemenea, mai simplă, deoarece, în cazul actualizării programului sau modificării configurației, este suficient să creezi și să lansezi un nou mediu. Sunt acceptate câteva sute de biblioteci în limbajul OCaml pentru executarea operațiunilor de rețea (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN etc.), gestionarea stocărilor și asigurarea procesării paralele a datelor.
Îmbunătățiri cheie:
- A fost modificat procesul de compilare a proiectelor și unikernel. În locul sistemului de construcție ocamlbuild folosit anterior, a fost utilizat instrumentul dune și repozitoarele locale (monorepo). Pentru a forma astfel de repozitorii, a fost adăugată un nouă utilitate opam-monorepo, care a permis separarea gestionării pachetelor de construcția din sursă. Utilitatea opam-monorepo îndeplinește lucrări precum crearea de fișiere lock pentru dependențele asociate proiectului, descărcarea și extragerea codului dependențelor și configurarea mediului pentru aplicarea sistemului de construcție dune. Compilarea efectivă este realizată cu instrumentul dune.
- A fost furnizat un proces de construcție repetabil. Utilizarea fișierelor lock asigură legătura cu versiunile dependențelor și permite repetarea completă a procesului de construcție cu același cod în orice moment.
- A fost implementat un nou proces de cross-compilation și s-a asigurat posibilitatea de cross-compilation pentru toate platformele țintă suportate dintr-un mediu de construcție comun, în care se efectuează și cross-compilationul dependențelor și bibliotecilor legate în limbajul C, fără a necesita adăugarea acestor legături în pachetul principal. Cross-compilationul este organizat folosind spații de lucru furnizate de sistemul de construcție dune.
- A fost adăugat suport pentru noi platforme țintă, de exemplu, a fost oferită o posibilitate experimentală de construcție a aplicațiilor autonome pentru a rula pe plăcile Raspberry Pi 4.
- S-a lucrat la integrarea componentelor MirageOS în ecosistemele asociate dezvoltării în limbajul OCaml, pentru a simplifica construcția aplicațiilor sub formă de unikernel. Multe pachete MirageOS au fost portate pentru sistemul de construcție dune. Utilitatea opam-monorepo este disponibilă pentru instalare prin managerul de pachete opam și poate fi utilizată în proiectele care aplică sistemul de construcție dune. Pentru a însoți patch-urile care rezolvă problemele de construcție a dependențelor în dune, au fost create două repozitorii dune-universe/opam-overlays și dune-universe/mirage-opam-overlays, care sunt incluse în mod implicit la utilizarea utilitarului CLI mirage.
- A fost simplificată integrarea MirageOS cu bibliotecile în limbajele C și Rust.
- A fost propus un nou runtime OCaml, care permite evitarea libc (fără libc).
- A fost oferită posibilitatea utilizării serviciului Merlin pentru integrarea cu medii de dezvoltare integrate bazate pe tipuri.
Sursa: opennet.ro
