У кодову базу системного менеджера 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
