Разработчиците на платформата XCP-ng, развивана под крилото на проекта Xen, публикуваха план за създаване на замяна на различни компоненти от софтуерния стек Xen на езика Rust. Понастоящем не планират да преработват самия хипервайзор Xen, а работата е основно сосредоточена върху преработката на отделни компоненти от инструментариума.
В момента платформата използва компоненти на езиците C, Python, OCaml и Go, някои от които са остарели и създават проблеми със съпровождението. Отбелязва се, че използването на Rust няма да доведе до общо увеличаване на броя на използваните езици, тъй като на Go е реализиран само един компонент, който е планиран за замяна на първо място.
Езикът Rust е избран като съчетаващ висока производителност на резултатния код с възможности за безопасна работа с паметта, без необходимост от използване на сборщик на боклука, подходящ за разработка на ниско и високослойни компоненти, предоставящ допълнителни възможности за намаляване на потенциалните грешки, като проверка на заимстването на променливи (borrow checker). Rust също така е по-разпространен от в момента използвания в XAPI език OCaml, което улеснява привлекателността на проекта за нови разработчици.
В първия етап е планирано разработване на замяна за няколко компонента, за да се отработят процесите и да се подготви основата за замяна на други части от софтуерния стек. В частност, на Rust ще бъде пренаписан инструментариумът на Linux guest tools, за който в момента се използва езикът Go, и фоновият процес за събиране на метрики, написан на OCaml.
Необходимостта от преработка на Linux guest tools (xe-guest-utilities) е предизвикана от проблеми с качеството на кода и развитието извън проекта Xen Project под контрола на Cloud Software Group, което затруднява формирането на пакети и влиянието на общността върху разработката. Новият вариант на инструментариума (xen-guest-agent) планират да създадат напълно от нулата, като го направят възможно най-прост и да разделят логиката на агента от библиотеките. Фоновият процес за събиране на метрики (rrdd) решават да преработят, тъй като той е компактен и отделен, което улеснява провеждането на експерименти за използване на новия език при разработката.
През следващата година може да започне разработката на компонента xenopsd-ng на Rust, който ще оптимизира архитектурата на програмния стек. Основната идея е да се съсредоточи работата с нискостепенното API в един компонент и да се организира предоставянето на всички високостепенни API на другите компоненти на стека чрез него.
Текуща архитектура на стека Xen:

Предложена архитектура на стека Xen на базата на xenopsd-ng:

Източник: opennet.ru
