Iniziativa per rielaborare il toolkit dell'hypervisor Xen in Rust

Gli sviluppatori della piattaforma XCP-ng, sviluppata sotto l'ala del progetto Xen, hanno pubblicato un piano per creare un sostituto per vari componenti dello stack software Xen nel linguaggio Rust. Non ci sono piani per rielaborare l'hypervisor Xen stesso; il lavoro si concentra principalmente sulla rielaborazione dei singoli componenti del toolkit.

La piattaforma attualmente utilizza componenti C, Python, OCaml e Go, alcuni dei quali sono obsoleti e pongono problemi di manutenzione. Va notato che l'uso di Rust non porterà ad un aumento complessivo del numero di lingue coinvolte, poiché in Go è implementato un solo componente, che dovrebbe essere sostituito per primo.

Rust è stato scelto come linguaggio che combina codice ad alte prestazioni con funzionalità memory-safe, non richiede un garbage collector, è adatto allo sviluppo di componenti sia di basso che di alto livello e fornisce funzionalità aggiuntive per ridurre potenziali errori, come un prendere in prestito controllore. ). Rust è anche più diffuso del linguaggio OCaml attualmente utilizzato in XAPI, il che renderà più semplice attirare nuovi sviluppatori nel progetto.

La prima fase sarà quella di sviluppare sostituzioni per diversi componenti per testare i processi e preparare la base per la sostituzione di altre parti dello stack software. In particolare, innanzitutto, verranno riscritti in Rust i guest tool Linux, per i quali attualmente viene utilizzato il linguaggio Go, e il processo in background per la raccolta delle metriche, scritto in OCaml.

La necessità di rielaborare gli strumenti guest Linux (xe-guest-utilities) è causata da problemi con la qualità del codice e lo sviluppo al di fuori del progetto Xen sotto il controllo del Cloud Software Group, il che rende difficile il confezionamento dei pacchetti e l'influenza della comunità sullo sviluppo. Hanno in programma di creare una nuova versione del toolkit (xen-guest-agent) completamente da zero, rendendolo il più semplice possibile e separando la logica dell'agente dalle librerie. Si è deciso di rielaborare il processo in background per la raccolta delle metriche (rrdd) poiché è compatto e separato, il che semplifica gli esperimenti sull'utilizzo di un nuovo linguaggio durante lo sviluppo.

L'anno prossimo potrebbero iniziare i lavori per lo sviluppo del componente xenopsd-ng in Rust, che ottimizzerà l'architettura dello stack software. L'idea principale è concentrare il lavoro con le API di basso livello in un componente e organizzare attraverso di esso la fornitura di tutte le API di alto livello ad altri componenti dello stack.

Architettura attuale dello stack Xen:

Iniziativa per rielaborare il toolkit dell'hypervisor Xen in Rust

Architettura dello stack Xen proposta basata su xenopsd-ng:

Iniziativa per rielaborare il toolkit dell'hypervisor Xen in Rust


Fonte: opennet.ru

Aggiungi un commento