Deweloperzy platformy XCP-ng, rozwijanej pod egidą projektu Xen, opublikowali plan utworzenia w języku Rust zamienników różnych komponentów stosu oprogramowania Xen. Na razie nie planują przerabiać samego hyperwizora Xen; prace skupiają się głównie na przebudowie poszczególnych komponentów narzędzi.
W chwili obecnej w platformie używane są komponenty w językach C, Python, OCaml i Go, z których niektóre są przestarzałe i stwarzają problemy ze wsparciem. Zauważono, że zastosowanie Rust nie prowadzi do ogólnego zwiększenia liczby używanych języków, ponieważ w Go zrealizowany jest tylko jeden komponent, który planuje się zastąpić w pierwszej kolejności.
Język Rust został wybrany, ponieważ łączy wysoką wydajność wynikowego kodu z możliwościami bezpiecznej obsługi pamięci, nie wymagając jednocześnie zastosowania zbieracza śmieci; nadaje się do tworzenia zarówno komponentów niskopoziomowych, jak i wysokopoziomowych, oferując dodatkowe możliwości w zakresie zmniejszenia potencjalnych błędów, takie jak sprawdzanie pożyczania zmiennych (borrow checker). Rust jest również bardziej rozpowszechniony niż obecnie używany w XAPI język OCaml, co ułatwi przyciąganie nowych programistów do projektu.
W pierwszym etapie przewidziano opracowanie zamiany dla kilku komponentów, aby przetestować procesy i przygotować podstawy do zamiany innych części stosu oprogramowania. Szczególnie w pierwszej kolejności w Rust zostanie przepisany zestaw narzędzi Linux guest tools, dla którego obecnie używany jest język Go, oraz proces w tle do zbierania metryk, napisany w OCaml.
Konieczność przeróbki Linux guest tools (xe-guest-utilities) wynika z problemów z jakością kodu oraz rozwoju poza projektem Xen Project pod kontrolą Cloud Software Group, co utrudnia tworzenie pakietów i wpływ społeczności na rozwój. Nową wersję narzędzi (xen-guest-agent) planuje się stworzyć całkowicie od zera, czyniąc ją tak prostą, jak to możliwe, i oddzielając logikę agenta od bibliotek. Proces w tle do zbierania metrik (rrdd) postanowiono przerobić, ponieważ jest on kompaktowy i odrębny, co ułatwia przeprowadzanie eksperymentów z użyciem nowego języka w rozwoju.
W przyszłym roku możliwe jest rozpoczęcie prac nad rozwinięciem komponentu xenopsd-ng w języku Rust, który pozwoli na optymalizację architektury stosu oprogramowania. Główna idea polega na skoncentrowaniu w jednym komponencie pracy z niskopoziomowym API i zorganizowaniu dostarczania przez niego wszystkich wysoko poziomowych API dla pozostałych komponentów stosu.
Aktualna architektura stosu Xen:

Proponowana architektura stosu Xen oparta na xenopsd-ng:

Źródło: opennet.ru
