Os desenvolvedores da plataforma XCP-ng, que está sendo desenvolvida sob o projeto Xen, publicaram um plano para criar em Rust uma substituição para vários componentes da pilha de software do Xen. A reformulação do hipervisor Xen não está nos planos, e o foco está principalmente na reescrita de componentes individuais das ferramentas.
Atualmente, a plataforma utiliza componentes escritos em C, Python, OCaml e Go, alguns dos quais estão desatualizados e criam problemas de manutenção. Observa-se que a aplicação de Rust não resultará em um aumento geral no número de linguagens utilizadas, já que apenas um componente implementado em Go está planejado para ser substituído primeiro.
A linguagem Rust foi escolhida por combinar alta performance do código resultante com recursos para gerenciamento seguro de memória, sem necessidade de coletor de lixo, sendo adequada para o desenvolvimento de componentes de baixo e alto nível, além de oferecer capacidades adicionais para reduzir erros potenciais, como a verificação de empréstimos de variáveis (borrow checker). Rust também é mais difundido do que o OCaml, atualmente usado no XAPI, o que facilitará a atração de novos desenvolvedores para o projeto.
Na primeira fase, está previsto desenvolver substituições para vários componentes, a fim de testar processos e preparar a base para a troca de outras partes da pilha de software. Em particular, as ferramentas de Linux guest tools, atualmente escritas em Go, serão reescritas em Rust, assim como o processo em segundo plano para coleta de métricas, que é escrito em OCaml.
A necessidade de reformular as Linux guest tools (xe-guest-utilities) foi motivada por problemas de qualidade de código e pelo desenvolvimento fora do projeto Xen Project sob a supervisão do Cloud Software Group, o que dificulta a formação de pacotes e a influência da comunidade no desenvolvimento. Uma nova versão das ferramentas (xen-guest-agent) será criada completamente do zero, com o objetivo de torná-la o mais simples possível, separando a lógica do agente das bibliotecas. O processo em segundo plano para coleta de métricas (rrdd) será reformulado, uma vez que é compacto e isolado, facilitando a realização de experimentos com a nova linguagem durante o desenvolvimento.
No próximo ano, pode começar o trabalho no desenvolvimento do componente xenopsd-ng em Rust, que permitirá otimizar a arquitetura da pilha de software. A principal ideia é concentrar em um único componente o trabalho com a API de baixo nível e organizar a disponibilização de todas as APIs de alto nível para os outros componentes da pilha.
Arquitetura atual da pilha Xen:

Arquitetura proposta da pilha Xen baseada no xenopsd-ng:

Fonte: opennet.ru
