Die Entwickler der XCP-ng-Plattform, die im Rahmen des Xen-Projekts entwickelt wird, haben einen Plan veröffentlicht, um verschiedene Komponenten des Xen-Programmstacks in der Programmiersprache Rust zu ersetzen. Der Hypervisor Xen selbst soll vorerst nicht überarbeitet werden; die Arbeit konzentriert sich hauptsächlich auf die Umgestaltung einzelner Komponenten des Werkzeugs.
Derzeit werden in der Plattform Komponenten in den Programmiersprachen C, Python, OCaml und Go verwendet, von denen einige veraltet sind und Probleme bei der Wartung verursachen. Es wird angemerkt, dass die Verwendung von Rust nicht zu einer allgemeinen Erhöhung der verwendeten Sprachen führen wird, da in Go nur ein einziger Bestandteil implementiert ist, der zuerst ersetzt werden soll.
Die Programmiersprache Rust wurde gewählt, weil sie eine hohe Leistung des resultierenden Codes mit Möglichkeiten für sichere Speicherverwaltung kombiniert, ohne auf einen Garbage Collector angewiesen zu sein. Sie eignet sich sowohl für die Entwicklung von Low-Level- als auch von High-Level-Komponenten und bietet zusätzliche Möglichkeiten zur Verringerung potenzieller Fehler, wie die Prüfung der Variablenleihgaben (borrow checker). Rust ist außerdem verbreiteter als das derzeit in XAPI verwendete OCaml, was die Einbindung neuer Entwickler in das Projekt erleichtert.
Im ersten Schritt ist geplant, einige Komponenten zu ersetzen, um die Prozesse zu erproben und eine Grundlage für den Austausch anderer Teile des Programmstacks zu schaffen. Insbesondere wird das Linux Guest Tools-Werkzeug, das derzeit in Go programmiert ist, zuerst in Rust neu geschrieben, ebenso wie der Hintergrundprozess zur Datensammlung, der auf OCaml basiert.
Die Notwendigkeit, die Linux Guest Tools (xe-guest-utilities) zu überarbeiten, ergibt sich aus Problemen mit der Codequalität und der Entwicklung außerhalb des Xen-Projects unter der Aufsicht der Cloud Software Group, was die Paketerstellung und den Einfluss der Community auf die Entwicklung erschwert. Eine neue Version des Werkzeugs (xen-guest-agent) wird von Grund auf neu entwickelt, mit dem Ziel, sie so einfach wie möglich zu gestalten und die Logik des Agenten von den Bibliotheken zu trennen. Der Hintergrundprozess zur Datensammlung (rrdd) soll ebenfalls überarbeitet werden, da er kompakt und isoliert ist, was Experimente mit der Verwendung der neuen Sprache bei der Entwicklung erleichtert.
Im nächsten Jahr könnte die Entwicklung eines Rust-basierten components xenopsd-ng beginnen, das die Architektur des Software-Stacks optimieren wird. Die Hauptidee ist, die Arbeit mit niedriger Ebene API in einem einzigen Component zu konzentrieren und alle höheren APIs für die anderen Komponenten des Stacks über diese bereitzustellen.
Die aktuelle Architektur des Xen-Stacks:

Die vorgeschlagene Architektur des Xen-Stacks basierend auf xenopsd-ng:

Quelle: opennet.ru
