Xen е хипервайзор, който осигурява сигурна изолация, контрол на ресурсите, гаранции за качество на услугата и миграция на виртуална машина.
Лос Разработчици на платформа XCP-ng, който е разработен под крилото на проекта Xen, пуснаха план за създаване на заместител на Rust различни компоненти на софтуерния стек Xen.
Самият Xen хипервизор все още предстои да бъде обработен и работата е фокусирана основно върху преработването на отделни компоненти на набора от инструменти.
В момента платформата използва компоненти в C, Python, OCaml и Go, някои от които са остарели и причиняват проблеми с поддръжката. Наблюдава се, че използването на Rust няма да доведе до общо увеличение в броя на включените езици, тъй като само един компонент е внедрен в Go, който се планира да бъде заменен на първо място.
Очевидно не очаквайте да пренапишем Xen хипервайзора и всичко в Rust като наш първи опит. Всъщност нашата цел тук е да започнем да заменяме някои от по-малките компоненти около него, което ни позволява да „разрастваме“ самия език и да мислим как да заменяме нещата блок по блок, за цялата платформа.
Rust е избран като език, който комбинира висока производителност на кода Резултатът е безопасни възможности за памет, не изисква използването на събирач на отпадъци, подходящ е за разработване на компоненти от ниско и високо ниво, предоставя допълнителни функции за намаляване на потенциални грешки, като например променливата заемател (проверка на заеми). Rust също е по-разпространен от сегашния XAPI език OCaml, което ще улесни привличането на нови разработчици към проекта.
На първия етап, планира се разработване на заместители на различни компоненти cза разрешаване на процесите и подготовка на базата за замяна на други части от софтуерния стек. По-специално, първо, инструментите за гости на Linux ще бъдат пренаписани на Rust, за който в момента се използва езикът Go, а фоновият процес за събиране на показатели ще бъде написан на OCaml.
Тъй като Rust е безопасен и бърз, какво още ни трябва? Нуждаем се също от език за програмиране, който може да работи на различни нива (отдолу и отгоре на стека). Не бих се доверил на Go или Python да се справят с неща от толкова ниско ниво, които можем да имаме в XCP-ng, и по подобен начин не бих се доверил на C да прави неща от по-високо ниво. Използването на Rust предоставя потенциала да бъде навсякъде в стека XCP-ng'.
Освен това Rust вече не е "нишов" език. Например, дори и да е страхотен, OCaml (използван в XAPI) не е добре познат, което намалява шансовете ни лесно да наемем хора с опит в този език. Това също намалява способността на общността с отворен код да спечели сътрудници. Смятаме, че Rust няма да бъде пречка за това (както наемане, така и вноски), вероятно дори обратното: двигател за привличане на повече хора, тъй като това е „желана“ технология.
Необходимостта от редизайн инструментите на инструменти за гости на linux (xe-guest-utilities) се дължи на проблеми с разработката и качеството на кода извън проекта Xen под контрола на Cloud Software Group, което затруднява пакетирането и влиянието на общността върху разработката. Предвижда се да се създаде нов вариант на набора от инструменти ( xen-guest-agent ) напълно от нулата, като се поддържа възможно най-опростен и се отделя логиката на агента от библиотеките. Решихме да преработим задния процес за събиране на показатели ( rrdd ), тъй като той е компактен и отделен, което улеснява експериментирането с използването на нов език по време на разработката.
Догодина вероятно ще започне работа по разработката на компонента xenopsd-ng в Rust, което ще ни позволи да оптимизираме архитектурата на софтуерния стек. Основната идея е да се концентрира работата с API на ниско ниво в един компонент и да се организира предоставянето на всички API на високо ниво на останалата част от стека чрез него.
И накрая, ако имате интерес да научите повече за него, можете да се консултирате с подробностите В следващия линк.