Dezvoltatorii platformei XCP-ng, care este dezvoltată sub umbrela proiectului Xen, au publicat un plan de creare a unui înlocuitor pentru diverse componente ale stivei software Xen în limbajul Rust. Hypervisorul Xen nu va fi refăcut deocamdată, iar munca se concentrează în principal pe refacerea unor componente specifice ale setului de instrumente.
În prezent, platforma utilizează componente în limbajele C, Python, OCaml și Go, dintre care unele sunt depășite și provoacă probleme de întreținere. Se observă că utilizarea Rust nu va duce la o creștere generală a numărului de limbaje utilizate, deoarece în Go este implementată doar o componentă, care urmează să fie înlocuită prima dată.
Limba Rust a fost aleasă deoarece combină o performanță înaltă a codului rezultat cu posibilități pentru o gestionare sigură a memoriei, fără a necesita un colector de gunoi, fiind potrivită pentru dezvoltarea atât a componentelor de nivel inferior cât și a celor de nivel superior, oferind posibilități suplimentare de reducere a erorilor potențiale, cum ar fi verificarea împrumutului variabilelor (borrow checker). Rust este de asemenea mai răspândit decât limbajul OCaml utilizat în prezent în XAPI, ceea ce va simplifica atragerea de noi dezvoltatori în proiect.
În prima etapă se preconizează dezvoltarea unui înlocuitor pentru câteva componente, pentru a optimiza procesele și a pregăti baza pentru înlocuirea altor părți ale stivei software. În special, în primul rând, setul de instrumente pentru Linux guest tools, care în prezent folosește limbajul Go, va fi rescris în Rust, împreună cu un proces de fundal pentru colectarea metricilor, scris în OCaml.
Necesitatea refacerii Linux guest tools (xe-guest-utilities) este generată de problemele de calitate a codului și de dezvoltarea în afara proiectului Xen Project sub controlul Cloud Software Group, ceea ce complică formarea pachetelor și influența comunității asupra dezvoltării. Noua variantă a setului de instrumente (xen-guest-agent) se va crea complet de la zero, făcându-l cât mai simplu posibil și separând logica agentului de biblioteci. Procesul de fundal pentru colectarea metricilor (rrdd) va fi refăcut deoarece este compact și bine definit, ceea ce simplifică efectuarea experimentelor cu utilizarea noului limbaj în dezvoltare.
Anul viitor, ar putea începe lucrările pentru dezvoltarea componentului xenopsd-ng în Rust, care va permite optimizarea arhitecturii stivei de programe. Ideea principală este de a concentra într-o singură componentă procesarea cu API-ul de nivel scăzut și de a organiza furnizarea tuturor API-urilor de nivel înalt către celelalte componente ale stivei.
Arhitectura actuală a stivei Xen:

Arhitectura propusă a stivei Xen bazată pe xenopsd-ng:

Sursa: opennet.ro
