W kodzie podstawowym menedżera systemu systemd wprowadzono zmianę, która umożliwia tworzenie komponentów w języku Rust. Rust ma być używany tylko do opracowywania nowych komponentów, a istniejący kod w języku C nie będzie przepisany na Rust. Menedżer pakietów cargo nie jest stosowany podczas budowy, używana jest tylko system budowy Meson. Kod Rust działa w trybie „no_std” (bez standardowej biblioteki), dozwolone jest używanie tylko bibliotek core, alloc i libc.
Komponenty systemd w Rust są dynamicznie powiązane z biblioteką C libsystemd-shared. Wiązania Rust nad libsystemd-shared są generowane automatycznie na etapie budowy z plików nagłówkowych za pomocą narzędzia bindgen i stają się dostępne dla programów rust w postaci pakietu systemd_shared. Wymagana jest co najmniej wersja rustc 1.85 oraz bindgen 0.71.1, które odpowiadają wersjom z Debian 13.
Testowy plik wykonywalny w Rust po budowie z optymalizacjami LTO zajmuje 32 KB, podczas gdy analog w C zajmuje 20 KB. Domyślnie wsparcie dla Rust jest włączane tylko w przypadku posiadania odpowiedniego narzędziowca Rust w systemie (-Drust=auto). Jako pierwszy komponent napisany w Rust rozwija się systemd-keyring-setup, który nie został jeszcze przyjęty do głównej bazy kodu systemd. Systemd-keyring-setup służy do konfiguracji i zarządzania certyfikatami X.509 dla mechanizmów jądra Linux dm-verity, fs-verity i bpf.
Źródło: opennet.ru
