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

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

Разработчики systemd официально разрешили писать новые компоненты на Rust — при этом старый код на Си останется как есть.

В основную ветку системного менеджера systemd вошло изменение, которое открывает дорогу Rust-коду. Речь не о тотальной миграции: на Rust будут делать только новые модули, а уже существующие части на Си никто переписывать не собирается. Привычный пакетный менеджер cargo в сборке не участвует — всё по-прежнему держится на Meson.

Rust применяется в режиме «no_std», то есть без стандартной библиотеки: из разрешённого — лишь core, alloc и libc. Готовые Rust-компоненты динамически линкуются с Си-библиотекой libsystemd-shared. Чтобы не описывать вручную все прослойки, на этапе сборки из заголовочных файлов автоматически генерируются обвязки над libsystemd-shared с помощью утилиты bindgen. В результате Rust-программы получают доступ к ним как к пакету systemd_shared.

Первым кандидатом на Rust стал компонент systemd-keyring-setup, но в основную кодовую базу его пока не приняли. Заодно всплыли цифры по размеру: тестовый исполняемый файл на Rust с LTO-оптимизациями весит 32 КБ, тогда как его аналог на Си — 20 КБ.

Поддержка Rust по умолчанию включается, только если в системе есть нужный инструментарий — флаг -Drust=auto. Минимальные требования: rustc версии не ниже 1.85 и bindgen 0.71.1, что соответствует пакетам из Debian 13.

Недавно также вышел systemd 262, а в Git 2.55 поддержку Rust включили по умолчанию — так что тренд набирает обороты.

Ссылка на основную публикацию