Systemd Opens Door to Rust, But Keeps Core in C for Now
The Linux init system has merged Rust support through a 19-commit pull request, allowing new standalone programs to be written in the memory-safe language while maintaining strict constraints on scope and dependencies.

Systemd, the init system and service manager deployed across most mainstream Linux distributions, has integrated Rust support into its codebase via a 19-commit pull request merged to the main branch. The implementation follows guidelines established by maintainers at a recent hackfest in Berlin and supersedes an earlier proposal.
The first program to leverage this capability is systemd-keyring-setup, which loads X.509 certificates into kernel keyrings—including dm-verity and fs-verity—during boot before locking them down.
Rust, but on systemd's terms
The approach taken by systemd keeps Rust optional; distributions can still compile the system without it. Rust code remains confined to new standalone programs that other components do not depend upon, with all builds managed through meson rather than cargo.
Only the core and libc crates are permitted, effectively excluding the standard library and alloc. Programs must use systemd's own Box and Vec types, with allocation failures returning errors rather than triggering panics. Rust programs must also behave identically to their C equivalents, verified through tests for programs declaring the same command.
Building Rust programs requires rustc 1.85, bindgen 0.71.1, and meson 1.4.0 or newer. Distributions that enable all systemd features—such as Arch and openSUSE OBS—must either install the Rust toolchain or disable Rust support.
The shared library problem
Systemd's shared library, libsystemd-shared, remains written in C. Moving Rust into this library would require stable ABI support from Rust itself, which the language currently lacks. Integrating Rust would also risk duplicating code across the library and numerous systemd binaries.
Filesystem access presents another obstacle. Systemd resolves paths through file descriptors to maintain security and does not accept Rust's standard path handling for sensitive components. The project hopes Rust will eventually support this approach as well.
Despite these constraints, systemd remains committed to bringing Rust into its core and has expressed willingness to collaborate with the Rust community to overcome the remaining technical barriers.
A wave of rust
Systemd is not alone in making space for Rust within the Linux ecosystem. The memory-safe language entered the Linux kernel as an experimental feature in version 6.1, with kernel maintainers confirming late last year that the trial period had concluded.
Ubuntu has pursued a similar strategy with its core utilities, adopting sudo-rs and uutils coreutils as default implementations. These developments point toward accelerating Rust adoption as the technology industry moves through 2027.