В systemd добавлена возможность разработки компонентов на языке Rust

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=66539