Im Codebasis des Systemmanagers systemd wurde eine Änderung eingeführt, die die Möglichkeit zur Erstellung von Komponenten in Rust hinzufügt. Rust soll ausschließlich zur Entwicklung neuer Komponenten verwendet werden, während der bestehende C-Code nicht in Rust umgeschrieben wird. Der Paketmanager cargo wird im Build-Prozess nicht verwendet, es bleibt nur das Build-System Meson aktiv. Rust-Code wird im „no_std“-Modus (ohne Standardbibliothek) verwendet, es dürfen nur die Bibliotheken core, alloc und libc genutzt werden.
Die systemd-Komponenten in Rust werden dynamisch mit der C-Bibliothek libsystemd-shared verknüpft. Die Rust-Bindings für libsystemd-shared werden automatisch während des Builds aus den Header-Dateien mit Hilfe des Tools bindgen generiert und stehen rust-Programmen in Form des Pakets systemd_shared zur Verfügung. Für die Verwendung werden mindestens die Versionen rustc 1.85 und bindgen 0.71.1 benötigt, die den Versionen aus Debian 13 entsprechen.
Eine Testausführungsdatei in Rust belegt bei der Erstellung mit LTO-Optimierungen 32 KB, während das Äquivalent in C 20 KB benötigt. Standardmäßig wird die Unterstützung für Rust nur aktiviert, wenn die entsprechende Rust-Toolchain im System vorhanden ist (-Drust=auto). Als erste Komponente, die in Rust geschrieben wurde, entwickelt sich systemd-keyring-setup, das bisher nicht in die Hauptcodebasis von systemd übernommen wurde. systemd-keyring-setup dient der Konfiguration und Verwaltung von X.509-Zertifikaten für die Mechanismen des Linux-Kernels dm-verity, fs-verity und bpf.
Quelle: opennet.ru
