Efter halvandet års udvikling er udgivelsen af MirageOS 4.0-projektet blevet offentliggjort, som giver dig mulighed for at lave operativsystemer til en enkelt applikation, hvor applikationen leveres som en selvforsynende "unikernel", der kan køre uden brugen af operativsystemer, en separat OS-kerne og eventuelle lag. Applikationsudviklingssproget er OCaml. Projektkoden distribueres under en gratis ISC-licens.
Al funktionalitet på lavt niveau, der er hjemmehørende i operativsystemet, implementeres som et bibliotek knyttet til applikationen. En applikation kan udvikles på ethvert OS og derefter kompileres til en specialiseret kerne (det unikernel-koncept), der kan køre direkte oven på Xen, KVM, BHyve og VMM (OpenBSD) hypervisorer, på mobile platforme, som en proces i en POSIX- kompatibelt miljø eller i Amazon Elastic Compute Cloud- og Google Compute Engine-skymiljøer.
Det genererede miljø indeholder ikke noget overflødigt og interagerer direkte med hypervisoren uden drivere og systemlag, hvilket gør det muligt at opnå en betydelig reduktion i overheadomkostninger og øge sikkerheden. At arbejde med MirageOS kommer ned til tre trin: forberedelse af konfigurationen med definitionen af de OPAM-pakker, der bruges i miljøet, opbygning af miljøet og lancering af miljøet. Runtime til at levere arbejde oven på hypervisorer er bygget på basis af Solo5-kernen.
På trods af det faktum, at applikationer og biblioteker er dannet i højniveausproget OCaml, viser de resulterende miljøer ret god ydeevne og minimal størrelse (for eksempel tager DNS-serveren kun 200 KB). Vedligeholdelsen af miljøer er også forenklet, da hvis du skal opdatere programmet eller ændre konfigurationen, er det nok at oprette og køre et nyt miljø. Flere hundrede OCaml-biblioteker understøttes til at udføre netværksoperationer (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN osv.), arbejde med lagringspladser og levere parallel databehandling.
Vigtigste forbedringer:
- Ændrede processen med at kompilere projekter og unikernel. I stedet for det tidligere brugte ocamlbuild-byggesystem, bruges klitværktøjssættet og lokale repositories (monorepo). For at oprette sådanne arkiver er der tilføjet et nyt hjælpeprogram opam-monorepo, som gjorde det muligt at adskille pakkehåndtering fra bygning fra kilde. Opam-monorepo-værktøjet udfører arbejdet med at skabe låsefiler til projektrelaterede afhængigheder, downloade og udtrække afhængighedskode og opsætte miljøet til at bruge klitbyggesystemet. Selve bygningen udføres af klitværktøjssættet.
- En gentagelig byggeproces leveres. Brugen af låsefiler giver binding til afhængighedsversioner og giver dig mulighed for fuldstændigt at gentage byggeprocessen til enhver tid med den samme kode.
- En ny krydskompileringsproces er implementeret og det er muligt at krydskompilere for alle understøttede målplatforme fra ét fælles byggemiljø, hvor blandt andet afhængigheder og biblioteker med C-bindinger krydskompileres uden behov for tilføjelse disse bindinger til hovedpakken. Krydskompilering er organiseret ved hjælp af de arbejdsrum, der leveres af klitbyggesystemet.
- Understøttelse af nye målplatforme er blevet tilføjet, for eksempel er der givet en eksperimentel mulighed for at bygge selvstændige applikationer til arbejde på Raspberry Pi 4-kort.
- Der er arbejdet på at integrere dele af MirageOS i økosystemer relateret til OCaml-udvikling for at forenkle bygningsapplikationer i form af unikernel. Mange MirageOS-pakker er blevet overført til klitbyggesystemet. Opam-monorepo-værktøjet er tilgængeligt til installation med opam-pakkehåndteringen og kan bruges i projekter, der bruger klitbyggesystemet. For at ledsage patches, der løser problemer med bygningsafhængigheder i klit, er der oprettet to repositories klit-univers/opam-overlays og klit-univers/mirage-opam-overlays, som er aktiveret som standard ved brug af mirage CLI-værktøjet.
- Forenklet integration af MirageOS med C- og Rust-biblioteker.
- En ny OKaml-runtime er blevet foreslået til at undvære libc (libc-free).
- Giver mulighed for at bruge Merlin-tjenesten til integration med standard integrerede udviklingsmiljøer.
Kilde: opennet.ru