In de codebasis van de systeembeheerder systemd is een wijziging doorgevoerd die de mogelijkheid toevoegt om componenten in de programmeertaal Rust te maken. Rust zal alleen worden gebruikt voor de ontwikkeling van nieuwe componenten, en het bestaande C-code zal niet naar Rust worden herschreven. De pakketbeheerder cargo wordt niet gebruikt tijdens de bouwfase, alleen het build-systeem Meson blijft actief. Rust-code wordt gebruikt in de 'no_std' modus (zonder standaardbibliotheek), waarbij alleen de bibliotheken core, alloc en libc zijn toegestaan.
De componenten van systemd in Rust worden dynamisch gekoppeld aan de C-bibliotheek libsystemd-shared. Rust-wrappers bovenop libsystemd-shared worden automatisch gegenereerd tijdens de bouwfase uit de headerbestanden met behulp van de tool bindgen, en zijn beschikbaar voor rust-programma's in de vorm van het pakket systemd_shared. Voor gebruik is minimaal rustc versie 1.85 en bindgen 0.71.1 vereist, overeenkomstig de versies in Debian 13.
Een testuitvoerbaar bestand in Rust neemt 32 KB in beslag bij het bouwen met LTO-optimalisaties, terwijl de overeenkomstige versie in C 20 KB in beslag neemt. Standaard wordt ondersteuning voor Rust alleen ingeschakeld als de overeenkomstige Rust-toolchain in het systeem aanwezig is (-Drust=auto). Het eerste component dat in Rust wordt ontwikkeld, is systemd-keyring-setup, dat nog niet is geaccepteerd in de hoofdcodebasis van systemd. Systemd-keyring-setup is bedoeld voor het configureren en beheren van X.509-certificaten voor de mechanismen van de Linux-kernel dm-verity, fs-verity en bpf.
Bron: opennet.ru
