Udgivelse af MirageOS 4.0, en platform til at køre applikationer oven på en hypervisor

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

Tilføj en kommentar