Los desarrolladores de la plataforma XCP-ng, que se desarrolla bajo el paraguas del proyecto Xen, han publicado un plan para crear en Rust una sustitución de varios componentes de la pila de software de Xen. De momento, no se tiene intención de reestructurar el hipervisor Xen, ya que el trabajo se centra principalmente en la reescritura de componentes individuales de las herramientas.
Actualmente, la plataforma utiliza componentes en lenguajes como C, Python, OCaml y Go, algunos de los cuales están obsoletos y generan problemas de mantenimiento. Se señala que la implementación de Rust no llevará a un aumento general en el número de lenguajes utilizados, ya que solo hay un componente implementado en Go, que se tiene previsto reemplazar primero.
Rust se ha elegido por su combinación de alta productividad con capacidades para trabajar de manera segura con la memoria, evitando el uso de un recolector de basura, y siendo apto tanto para el desarrollo de componentes de bajo como de alto nivel, proporcionando oportunidades adicionales para reducir errores potenciales, como la verificación de préstamos de variables (borrow checker). Además, Rust es más común que el lenguaje OCaml, que actualmente se utiliza en XAPI, lo que facilitará la atracción de nuevos desarrolladores al proyecto.
En la primera etapa, se planea desarrollar sustitutos para varios componentes, con el fin de ensayar los procesos y sentar las bases para el reemplazo de otras partes de la pila de software. En particular, las herramientas para Linux guest tools, que actualmente están programadas en Go, se reescribirán primero en Rust, así como el proceso en segundo plano para recopilar métricas, que está escrito en OCaml.
La necesidad de reestructurar Linux guest tools (xe-guest-utilities) surge de problemas en la calidad del código y del desarrollo fuera del proyecto Xen Project bajo el control de Cloud Software Group, lo que dificulta la formación de paquetes y la influencia de la comunidad en el desarrollo. Se planea crear una nueva variante de la herramienta (xen-guest-agent) completamente desde cero, simplificándola tanto como sea posible y separando la lógica del agente de las bibliotecas. El proceso en segundo plano para recopilar métricas (rrdd) se decidirá rehacer, ya que es compacto y aislado, lo que facilita la realización de experimentos utilizando el nuevo lenguaje durante el desarrollo.
El próximo año podría comenzar el trabajo en el desarrollo del componente xenopsd-ng en Rust, que permitirá optimizar la arquitectura de la pila de software. La idea principal es concentrar en un solo componente el trabajo con la API de bajo nivel y organizar la provisión de todas las API de alto nivel a los demás componentes de la pila.
Arquitectura actual de la pila Xen:

Arquitectura propuesta de la pila Xen basada en xenopsd-ng:

Fuente: opennet.ru
