У кодавую базу сістэмнага мэнэджара systemd прынята змена, якое дадае магчымасць стварэння кампанентаў на мове Rust. Rust маюць намер выкарыстоўваць толькі для распрацоўкі новых кампанентаў, а існуючы код на мове Сі перапісваць на Rust не плануюць. Пакетны мэнэджар cargo падчас зборкі не ўжываецца, застаецца задзейнічаная толькі зборачная сістэма Meson. Rust-код выкарыстоўваецца ў рэжыме "no_std" (без стандартнай бібліятэкі), дазволена выкарыстоўваць толькі бібліятэкі core, alloc і libc.
Кампаненты systemd на Rust дынамічна звязваюцца з Сі-бібліятэкай libsystemd-shared. Rust-абвязкі над libsystemd-shared генеруюцца аўтаматычна на этапе зборкі з загалоўкавых файлаў пры дапамозе ўтыліты bindgen, і становяцца даступныя для rust-праграм у форме пакета systemd_shared. Для працы патрабуецца прынамсі версіі rustc 1.85 і bindgen 0.71.1, якія адпавядаюць версіям з Debian 13.
Тэставы выкананы файл на Rust пры зборцы з LTO-аптымізацыямі займае 32 КБ, пры тым што аналог на Сі займае 20 КБ. Па змаўчанні падтрымка Rust уключаецца толькі пры наяўнасці ў сістэме які адпавядае Rust-інструментара (-Drust=auto). У якасці першага кампанента, напісанага на Rust, развіваецца systemd-keyring-setup, які пакуль не прыняты ў асноўную кодавую базу systemd. Systemd-keyring-setup прызначаны для наладкі і кіравання X.509-сертыфікатамі для механізмаў ядра Linux dm-verity, fs-verity і bpf.
Крыніца: opennet.ru
