Vývojáři platformy XCP-ng, která se rozvíjí pod záštitou projektu Xen, zveřejnili plán na vytvoření náhrady různých komponent softwarového stacku Xen v jazyce Rust. Hypervizor Xen zatím nebude přepracováván, práce se zaměřuje především na přepracování jednotlivých komponent nástrojů.
V současnosti platforma 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. Bylo poznamenáno, že použití Rustu nezvýší celkový počet využívaných jazyků, protože na Go je realizována pouze jedna komponenta, která má být v první řadě nahrazena.
Jazyk Rust byl vybrán, protože kombinuje vysoký výkon výsledného kódu s možnostmi pro bezpečnou práci s pamětí, obejde se bez garbage collectoru, a je vhodný pro vývoj jak nízkoúrovňových, tak vysoceúrovňových komponent. Nabízí také další možnosti pro snížení potenciálních chyb, jako je kontrola půjčování proměnných (borrow checker). Rust je také rozšířenější než nyní používaný jazyk OCaml v XAPI, což usnadní přilákání nových vývojářů do projektu.
V první fázi se plánuje vyvinout náhradu pro několik komponent, aby se otestovaly procesy a připravila základna pro výměnu dalších částí softwarového stacku. Konkrétně bude nejdříve přepsán nástroj pro Linux guest tools v Rustu, pro nějž se nyní používá jazyk Go, a proces na pozadí pro sběr metrik, napsaný v OCaml.
Potřeba přepracování Linux guest tools (xe-guest-utilities) je způsobena problémy s kvalitou kódu a vývojem mimo projekt Xen Project pod kontrolou Cloud Software Group, což ztěžuje vytváření balíčků a vliv komunity na vývoj. Nová verze nástrojů (xen-guest-agent) se plánuje vytvořit zcela od nuly, s cílem jej co nejvíce zjednodušit a oddělit logiku agenta od knihoven. Proces na pozadí pro sběr metrik (rrdd) byl rozhodnut přepracovat, protože je kompaktní a samostatný, což usnadňuje provádění experimentů s novým jazykem během vývoje.
V příštím roce by mohla začít práce na vývoji komponenty xenopsd-ng v jazyce Rust, která umožní optimalizaci architektury programového stacku. Hlavní myšlenkou je soustředit v jednom komponentu práci s nízkoúrovňovým API a uspořádat poskytování všech vysoceúrovňových API ostatním komponentům stacku.
Současná architektura stacku Xen:

Navrhovaná architektura stacku Xen na bázi xenopsd-ng:

Zdroj: opennet.ru
