De ontwikkelaars van het XCP-ng-platform, dat onder de vleugels van het Xen-project wordt ontwikkeld, hebben een plan gepresenteerd voor de vervanging van verschillende componenten van de Xen-softwarestack in de programmeertaal Rust. Het hypervisor zelf, Xen, wordt voorlopig niet herzien; de focus ligt voornamelijk op het herwerken van afzonderlijke componenten van de tools.
Momenteel worden er in het platform componenten gebruikt in de talen C, Python, OCaml en Go, waarvan sommige verouderd zijn en problemen veroorzaken bij het onderhoud. Er wordt opgemerkt dat het gebruik van Rust niet zal leiden tot een algemene toename van het aantal gebruikte talen, aangezien er slechts ƩƩn component in Go is gerealiseerd, die als eerste zal worden vervangen.
De taal Rust is gekozen vanwege de hoge prestaties van de resulterende code, samen met mogelijkheden voor veilig geheugengebruik zonder het gebruik van een garbage collector. Het is geschikt voor de ontwikkeling van zowel lage- als hoog-niveau componenten en biedt extra mogelijkheden om potentiƫle fouten te verminderen, zoals de borrow checker. Rust is ook gebruikelijker dan de momenteel gebruikte taal OCaml in XAPI, wat het gemakkelijker maakt om nieuwe ontwikkelaars voor het project aan te trekken.
In de eerste fase is het plan om vervangingen te ontwikkelen voor verschillende componenten, om de processen uit te werken en de basis te leggen voor de vervangingen van andere delen van de softwarestack. In het bijzonder zal de Linux guest tools-toolset, die momenteel in Go is geschreven, als eerste in Rust worden herschreven, evenals het achtergrondproces voor het verzamelen van metrics, geschreven in OCaml.
De noodzaak voor het herontwerpen van de Linux guest tools (xe-guest-utilities) is ontstaan uit problemen met de codekwaliteit en de ontwikkeling buiten het Xen Project onder toezicht van de Cloud Software Group, wat het creƫren van pakketten en de invloed van de gemeenschap op de ontwikkeling bemoeilijkt. De nieuwe versie van de toolset (xen-guest-agent) zal volledig vanaf nul worden opgebouwd, zo eenvoudig mogelijk gemaakt en de agentlogica zal van de bibliotheken worden gescheiden. Het achtergrondproces voor het verzamelen van metrics (rrdd) zal worden herzien omdat het compact en afzonderlijk is, wat het eenvoudiger maakt om experiments te uitvoeren met de nieuwe taal tijdens de ontwikkeling.
Volgend jaar kan de ontwikkeling van de xenopsd-ng component op Rust beginnen, wat het architectuur van de softwarestack zal optimaliseren. Het belangrijkste idee is om alle interacties met de laag-niveau API in ƩƩn component te centreren en deze via die component aan te bieden aan de andere hoog-niveau API's van de stack.
Huidige architectuur van de Xen stack:

Voorgestelde architectuur van de Xen stack op basis van xenopsd-ng:

Bron: opennet.ru
