Выпуск MirageOS 4.0, платформы для запуску прыкладанняў па-над гіпервізарам.

Пасля паўтары гадоў распрацоўкі апублікаваны выпуск праекта MirageOS 4.0, які дазваляе фармаваць аперацыйныя сістэмы аднаго прыкладання, у якіх прыкладанне пастаўляецца як самадастатковы "unikernel", здольны выконвацца без ужывання аперацыйных сістэм, асобнага ядра АС і якія-небудзь праслоек. Для распрацоўкі прыкладанняў прымяняецца мова OCaml. Код праекту распаўсюджваецца пад вольнай ліцэнзіяй ISC.

Уся нізкаўзроўневая функцыянальнасць, уласцівая аперацыйнай сістэме, рэалізавана ў форме бібліятэкі, якая прымацоўваецца да дадатку. Прыкладанне можа быць распрацавана ў любой АС, пасля чаго кампілюецца ў спецыялізаванае ядро ​​(канцэпцыя unikernel), якое можа запускацца напрамую па-над гіпервізарамі Xen, KVM, BHyve і VMM (OpenBSD), па-над мабільнымі платформамі, у форме працэсу ў POSIX-сумяшчальным асяроддзі або ў хмарных асяродках Amazon Elastic Compute Cloud і Google Compute Engine.

Згенераванае асяроддзе не ўтрымоўвае нічога лішняга і ўзаемадзейнічае непасрэдна з гіпервізарам без драйвераў і сістэмных праслоек, што дазваляе дамагчыся істотнага паніжэння накладных выдаткаў і падвышэнні бяспекі. Праца з MirageOS зводзіцца да трох стадый: падрыхтоўка канфігурацыі з вызначэннем выкарыстоўваных у асяроддзі OPAM-пакетаў, зборка асяроддзя і запуск асяроддзя. Runtime для забеспячэння працы па-над гіпервізарамі пабудаваны на базе ядра Solo5.

Нягледзячы на ​​тое, што прыкладанні і бібліятэкі фармуюцца на высокаўзроўневай мове OCaml, выніковыя асяроддзі дэманструюць досыць нядрэнную прадукцыйнасць і мінімальны памер (напрыклад, DNS-сервер займае ўсяго 200 КБ). Спрашчаецца і суправаджэнне акружэнняў, бо пры неабходнасці абнаўлення праграмы ці змены канфігурацыі, дастаткова стварыць і запусціць новае асяроддзе. Падтрымліваецца некалькі сотняў бібліятэк на мове OCaml для выканання сеткавых аперацый (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN і да т.п.), працы са сховішчамі і забеспячэнні паралельнай апрацоўкі дадзеных.

Ключавыя паляпшэнні:

  • Зменены працэс кампіляцыі праектаў і unikernel. Замест раней якая ўжывалася зборачнай сістэмы ocamlbuild задзейнічаны інструментар dune і лакальныя рэпазітары (monorepo). Для фармавання падобных рэпазітараў дададзена новая ўтыліта opam-monorepo, якая дазволіла падзяліць кіраванне пакетамі ад зборкі з зыходных тэкстаў. Утыліта opam-monorepo выконвае такую ​​працу, як стварэнне lock-файлаў для злучаных з праектам залежнасцяў, загрузка і вымання кода залежнасцяў і налада асяроддзя для ўжывання зборачнай сістэмы dune. Непасрэдна зборка выконваецца інструментаром dune.
  • Прадастаўлены паўтаральны працэс зборкі. Выкарыстанне lock-файлаў забяспечвае прывязку да версій залежнасцяў і дазваляе ў любы момант цалкам паўтарыць працэс зборкі з тым жа кодам.
  • Рэалізаваны новы працэс крос-кампіляцыі і забяспечана магчымасць крос-кампіляцыі для ўсіх падтрымліваемых мэтавых платформаў з аднаго агульнага зборачнага асяроддзя, у якім у тым ліку выконваецца крос-кампіляцыя залежнасцяў і бібліятэк, якія маюць прывязкі на мове Сі, без неабходнасці дадання гэтых прывязак у асноўны пакет . Крос-кампіляцыя арганізавана з выкарыстаннем працоўных прастор, якія прадстаўляюцца зборачнай сістэмай dune.
  • Дададзена падтрымка новых мэтавых платформаў, напрыклад, прадстаўлена эксперыментальная магчымасць зборкі самадастатковых прыкладанняў для працы на поплатках Raspberry Pi 4.
  • Праведзена праца па інтэграцыі частак MirageOS у экасістэмы, злучаныя з распрацоўкай на мове OCaml, для спрашчэння зборкі прыкладанняў у форме unikernel. Многія пакеты MirageOS партаваны для зборачнай сістэмы dune. Утыліта opam-monorepo даступная для ўсталёўкі пры дапамозе пакетнага мэнэджара opam і можа выкарыстоўваць у праектах, якія ўжываюць зборачную сістэму dune. Для суправаджэння патчаў, якія вырашаюць праблемы са зборкай залежнасцяў у dune, створаны два рэпазітара dune-universe/opam-overlays і dune-universe/mirage-opam-overlays, якія ўключаны па змаўчанні пры выкарыстанні CLI-ўтыліты mirage.
  • Спрошчаная інтэграцыя MirageOS з бібліятэкамі на мовах C і Rust.
  • Прапанаваны новы OCaml runtime, які дазваляе абыйсціся без libc (libc-free).
  • Прадастаўлена магчымасць выкарыстання сэрвісу Merlin для інтэграцыі з тыпавымі інтэграванымі асяроддзямі распрацоўкі.

Крыніца: opennet.ru

Дадаць каментар