Gli sviluppatori della piattaforma XCP-ng, sviluppata sotto l'egida del progetto Xen, hanno pubblicato un piano per la creazione in Rust di sostituti per vari componenti dello stack software di Xen. Al momento, non hanno intenzione di rielaborare direttamente l'iper-vissore Xen; il lavoro si concentra principalmente sulla riscrittura di singoli componenti degli strumenti.
Attualmente, la piattaforma utilizza componenti scritti in C, Python, OCaml e Go, alcuni dei quali sono obsoleti e creano problemi di manutenzione. È stato osservato che l'uso di Rust non porterà a un aumento generale del numero di linguaggi coinvolti, poiché su Go è realizzato solo un componente, che sarà sostituito per primo.
Il linguaggio Rust è stato scelto per la sua combinazione di alta performance del codice risultante e possibilità di gestione sicura della memoria, senza necessità di un garbage collector, adatto allo sviluppo sia di componenti a basso livello sia di componenti ad alto livello, offrendo funzionalità aggiuntive per ridurre gli errori potenziali, come il controllo dei prestiti delle variabili (borrow checker). Rust è anche più diffuso rispetto al linguaggio OCaml attualmente utilizzato in XAPI, il che faciliterà l'attrazione di nuovi sviluppatori nel progetto.
Nella prima fase, si prevede di sviluppare una sostituzione per alcuni componenti, per testare i processi e preparare la base per la sostituzione di altre parti dello stack software. In particolare, il toolkit Linux guest tools, attualmente scritto in Go, sarà replicato in Rust per primo, insieme al processo in background per la raccolta delle metriche, scritto in OCaml.
La necessità di rielaborare Linux guest tools (xe-guest-utilities) è stata causata da problemi di qualità del codice e dallo sviluppo al di fuori del progetto Xen Project sotto il controllo del Cloud Software Group, il che complica la creazione di pacchetti e l'influenza della comunità sullo sviluppo. Si prevede di creare una nuova versione degli strumenti (xen-guest-agent) completamente da zero, rendendola il più semplice possibile e separando la logica dell'agente dalle librerie. Inoltre, il processo in background per la raccolta delle metriche (rrdd) sarà rielaborato, poiché è compatto e isolato, il che facilita la sperimentazione con il nuovo linguaggio durante lo sviluppo.
L'anno prossimo potrebbe iniziare lo sviluppo di un componente xenopsd-ng in Rust, che consentirà di ottimizzare l'architettura dello stack software. L'idea principale è quella di concentrare in un unico componente il lavoro con API a basso livello e di organizzare la fornitura di tutte le API ad alto livello agli altri componenti dello stack.
L'architettura attuale dello stack Xen:

L'architettura proposta dello stack Xen basata su xenopsd-ng:

Fonte: opennet.ru
