Dev News Daily ENDE

systemd erlaubt Rust für neue Randkomponenten, voraussichtlich ab v263

Das systemd-Projekt unterstützt jetzt Randkomponenten, die in Rust geschrieben sind, berichtet LWN. Der Umfang ist bewusst begrenzt: Rust wird nur für neue Randkomponenten verwendet, bestehender Code wird nicht portiert, und nichts, wovon andere Komponenten abhängen, wird in Rust geschrieben.

Das Projekt würde gern weitergehen und Rust im Kern von systemd einsetzen, nennt aber mehrere Hindernisse bei Rusts Unterstützung für dynamische Bibliotheken, die das nur möglich machten, wenn man „jede gebaute Binärdatei massiv aufbläht“. Läuft alles nach Plan, erscheint die Arbeit voraussichtlich in systemd v263, das für Dezember erwartet wird.

In der Diskussion unter dem LWN-Beitrag, auch von einem systemd-Entwickler, wird erklärt, warum das Projekt eine eigene interne Bibliothek Teilen der Rust-Standardbibliothek und gängigen Crates vorzieht: Panics des Allokators gelten für Systemdienste als unpassend, und der eigene Code behandelt Pfadauflösung auf eine Weise, die das Projekt für ein Init-System als sicher ansieht. Andere Kommentatoren hielten den vollständigen Verzicht auf externe Crates für unpraktikabel und verwiesen auf Crates, die openat und verwandte Aufrufe bereits kapseln.

systemd erlaubt Rust für neue Randkomponenten, voraussichtlich ab v263
systemd erlaubt Rust für neue Randkomponenten, voraussichtlich ab v263 — Dev News Daily

Was das bedeutet

Randkomponenten sind der günstigste Ort für eine zweite Sprache: Scheitert eine oder wird sie neu geschrieben, bricht sonst nichts im System. Das genannte Hindernis — dynamisches Linken — ist die echte Grenze für ein Projekt, das viele kleine Binärdateien mit einer gemeinsamen Bibliothek ausliefert, und es ist ein Problem des Rust-Ökosystems, keine Entscheidung von systemd. Für Distributionen bedeutet das ab v263 praktisch eine Rust-Toolchain in den Build-Abhängigkeiten.