Wydanie MirageOS 4.0, platformy do uruchamiania aplikacji na hypervisorze

Po półtorarocznych pracach opublikowana została wersja projektu MirageOS 4.0, która umożliwia tworzenie systemów operacyjnych jednego aplikacji, w których aplikacja dostarczana jest jako samodzielny „unikernel”, zdolny do działania bez użycia systemów operacyjnych, oddzielnego jądra OS i jakichkolwiek warstw pośrednich. Do opracowywania aplikacji używany jest język OCaml. Kod projektu jest dostępny na licencji ISC.

Cała niskopoziomowa funkcjonalność typowa dla systemu operacyjnego jest zaimplementowana w formie biblioteki dołączanej do aplikacji. Aplikacja może być opracowywana w dowolnym systemie operacyjnym, po czym jest kompilowana do specjalizowanego jądra (koncepcja unikernel), które może być uruchamiane bezpośrednio nad hipernadzorcami Xen, KVM, BHyve i VMM (OpenBSD), na platformach mobilnych, w formie procesu w zgodnym z POSIX środowisku lub w chmurach Amazon Elastic Compute Cloud i Google Compute Engine.

Wygenerowane środowisko nie zawiera niczego zbędnego i współdziała bezpośrednio z hipernadzorcą bez sterowników i systemowych warstw pośrednich, co pozwala na istotne obniżenie kosztów i zwiększenie bezpieczeństwa. Praca z MirageOS sprowadza się do trzech etapów: przygotowania konfiguracji z określeniem używanych pakietów OPAM, budowy środowiska i uruchamiania środowiska. Runtime odpowiedzialne za działań nad hipernadzorcami opiera się na jądrze Solo5.

Mimo że aplikacje i biblioteki są tworzone w wysokopoziomowym języku OCaml, końcowe środowiska wykazują całkiem dobrą wydajność i minimalny rozmiar (na przykład serwer DNS zajmuje zaledwie 200 KB). Uproszczone jest również zarządzanie środowiskami, ponieważ w przypadku potrzeby aktualizacji programu lub zmiany konfiguracji wystarczy utworzyć i uruchomić nowe środowisko. Obsługiwanych jest kilka setek bibliotek w języku OCaml do wykonywania operacji sieciowych (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN itp.), pracy z magazynami i zapewnienia równoległego przetwarzania danych.

Kluczowe ulepszenia:

  • Zmieniono proces kompilacji projektów oraz unikernel. Zamiast wcześniej używanego systemu budowania ocamlbuild zastosowano narzędzie dune oraz lokalne repozytoria (monorepo). Do tworzenia takich repozytoriów dodano nowe narzędzie opam-monorepo, które pozwoliło na oddzielenie zarządzania pakietami od budowania ze źródeł. Narzędzie opam-monorepo wykonuje takie zadania, jak tworzenie plików lock dla zależności związanych z projektem, pobieranie i ekstrakcję kodu zależności oraz konfigurację środowiska do używania systemu budowania dune. Bezpośrednia budowa odbywa się przy pomocy narzędzia dune.
  • Zapewniono powtarzalny proces budowy. Użycie plików lock zapewnia powiązanie z wersjami zależności i pozwala na pełne powtórzenie procesu budowy z tym samym kodem w dowolnym momencie.
  • Wdrożono nowy proces krzyżowej kompilacji oraz zapewniono możliwość krzyżowej kompilacji dla wszystkich wspieranych platform docelowych z jednego wspólnego środowiska budowania, w którym również odbywa się krzyżowa kompilacja zależności i bibliotek związanych z językiem C, bez potrzeby dodawania tych powiązań do głównego pakietu. Krzyżowa kompilacja zorganizowana jest przy użyciu przestrzeni roboczych, oferowanych przez system budowania dune.
  • Dodano wsparcie dla nowych platform docelowych, na przykład zapewniono eksperymentalną możliwość budowania samowystarczalnych aplikacji dla płyt Raspberry Pi 4.
  • Przeprowadzono prace nad integracją komponentów MirageOS z ekosystemami związanymi z tworzeniem oprogramowania w języku OCaml, aby uprościć budowę aplikacji w postaci unikernel. Wiele pakietów MirageOS zostało przeniesionych do systemu budowania dune. Narzędzie opam-monorepo jest dostępne do zainstalowania za pomocą menedżera pakietów opam i może być używane w projektach, które stosują system budowania dune. W celu zarządzania poprawkami rozwiązującymi problemy z budową zależności w dune utworzono dwa repozytoria dune-universe/opam-overlays oraz dune-universe/mirage-opam-overlays, które są domyślnie uwzględnione przy użyciu narzędzia CLI mirage.
  • Uproszczono integrację MirageOS z bibliotekami w językach C oraz Rust.
  • Proponowany jest nowy runtime OCaml, który nie wymaga libc (bez libc).
  • Zapewniono możliwość korzystania z usługi Merlin do integracji z zintegrowanymi środowiskami programistycznymi.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster