Инициатива по переработке инструментария для гипервизора Xen на языке Rust

Разработчики платформы XCP-ng, развиваемой под крылом проекта Xen, опубликовали план по созданию на языке Rust замены различных компонентов программного стека Xen. Непосредственно гипервизор 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) решено переработать так как он является компактным и обособленным, что упрощает проведение экспериментов по использованию нового языка при разработке.

В следующем году возможно начнётся работа по разработке на Rust компонента xenopsd-ng, который позволит оптимизировать архитектуру программного стека. Основная идея в том, что бы сосредоточить в одном компоненте работу с низкоуровневым API и организовать предоставление через него всех высокоуровневых API остальным компонентам стека.

Текущая архитектура стека Xen:

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=58815