Byla zahájena iniciativa s cílem přepracovat Xen Hypervisor v Rustu

Xen

Xen je hypervizor, který poskytuje bezpečnou izolaci, kontrolu zdrojů, záruky kvality služeb a migraci virtuálních strojů.

Vývojáři platformy XCP-ng, která je vyvíjena v rámci projektu Xen, zveřejnili plán na vytvoření náhrady v Rustu pro několik komponent softwarového balíku Xen .

Samotný hypervizor Xen ještě není zpracován a práce se soustředí především na přepracování jednotlivých komponent sady nástrojů.

Platforma v současné době používá komponenty v jazycích C, Python, OCaml a Go, z nichž některé jsou zastaralé a způsobují problémy s údržbou. Je třeba poznamenat, že použití jazyka Rust nepovede k celkovému zvýšení počtu podporovaných jazyků, protože v Go je implementována pouze jedna komponenta, která má být nahrazena.

Samozřejmě nečekejte, že jako první pokus přepíšeme hypervizor Xen a vše v Rustu. Ve skutečnosti je naším cílem začít nahrazovat některé menší komponenty kolem něj, což nám umožní „vypěstovat“ samotný jazyk a přemýšlet o tom, jak nahradit věci blok po bloku pro celou platformu.

Rust byl vybrán, protože kombinuje vysoce výkonný kód s paměťově šetrnými funkcemi, nevyžaduje garbage collector, je vhodný pro vývoj nízkoúrovňových i vysokoúrovňových komponent a poskytuje další funkce pro snížení potenciálních chyb, jako je například kontrola půjček. Rust je také šířeji používaný než současný jazyk XAPI OCaml, což usnadní přilákání nových vývojářů do projektu.

V první fázi se plánuje nahrazení několika komponent, aby se vyřešily procesy a připravily se základy pro nahrazení dalších částí softwarového stacku. Konkrétně budou nástroje pro hostování Linuxu nejprve přepsány v Rustu, který v současnosti používá jazyk Go, a proces na pozadí pro sběr metrik bude napsán v OCaml.

Vzhledem k tomu, že Rust je bezpečný a rychlý, co víc potřebujeme? Potřebujeme také programovací jazyk, který dokáže pracovat na různých úrovních (jak nižších, tak vyšších na stacku). Nespoléhal bych se na Go nebo Python pro řešení úloh na nízké úrovni, které můžeme provádět v XCP-ng, a – stejně tak – bych se nespoléhal na C pro řešení úloh na vyšší úrovni. Použití Rustu nám poskytuje potenciál být všude na stacku XCP-ng.

Rust už také není žádný „speciální“ jazyk. Například, i když je to skvělé, OCaml (používaný v XAPI) není příliš známý, což snižuje naše šance na snadné najímání lidí se zkušenostmi s tímto jazykem. To také snižuje schopnost komunity s otevřeným zdrojovým kódem získávat přispěvatele. Myslíme si, že Rust tomu nebude překážkou (jak najímání, tak příspěvky), pravděpodobně dokonce naopak: řidič, který přiláká více lidí, protože je to „žádaná“ technologie.

Potřeba přepracovat nástroje pro hosty Linuxu ( xe-guest-utilities) pramení z problémů s kvalitou kódu a vývojem mimo projekt Xen pod kontrolou skupiny Cloud Software Group, což brání balíčkování a vlivu komunity na vývoj. Je plánována nová varianta sady nástrojů (xen-guest-agent), vytvořená zcela od nuly, s co nejjednodušším provedením a oddělením logiky agenta od knihoven. Bylo rozhodnuto přepracovat proces na pozadí pro sběr metrik (rrdd), protože je kompaktní a samostatný, což usnadňuje experimentování s novým jazykem během vývoje.

Příští rok pravděpodobně začneme s vývojem komponenty xenopsd-ng v Rustu, která nám umožní optimalizovat architekturu softwarového stacku. Hlavní myšlenkou je soustředit práci s nízkoúrovňovým API do jedné komponenty a organizovat poskytování všech vysokoúrovňových API zbytku stacku prostřednictvím ní.

A konečně, pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu