Systemd 262 引入 Rust 支持,仅限新组件开发

Systemd 262版本引入Rust支持。该功能仅限新叶子组件开发,不重构现有C代码。构建沿用Meson系统并禁用标准库,要求编译器1.85及bindgen 0.71.1以上版本。

Systemd 262 版本引入 Rust 支持,聚焦新组件开发

Unix 启动系统 Systemd 近期增加了对编程语言 Rust 的支持。该功能由开发者 Christian Brauner 实现,并随一个月前发布的 Systemd 262 版本合并。Brauner 在 Mastodon 上宣布了这一进展。

Rust仅用于新叶子组件

此次更新源于提取请求 #44144,该请求被拆分为五个部分:

  • 第 1 部分包含 keyring-util 和 voa-util,用于将证书注册到内核 keyrings;
  • 第 2 部分为核心功能,支持使用 Rust 编写的程序;
  • 后续部分涉及仅绑定 Rust 代码使用的标题、包裹 libsystemd-shared helpers 所需的 systemd-keyring-setup,以及添加 systemd-keyring-setup 本身。

值得注意的是,这一举措并不意味着对现有 C 语言代码进行大规模移植或重写。根据公告说明,Rust 仅用于新的叶子组件(leaf components),现有 C 代码及其他组件所依赖的部分保持不变。换言之,这是允许新的 Systemd 模块以 Rust 编写,而非重构整个项目。

对于 Rust 开发者而言,构建工具链的选择至关重要。Systemd 并未采用 Rust 生态中常见的包管理器和构建系统 Cargo,而是继续使用其现有的 Meson 构建系统。Meson 由 Python 编写,底层调用 Ninja 管理编译过程,该系统也被 GNOME 项目和 Mesa 3D 图库广泛使用。此外,所有 Rust 代码均禁止使用标准库(std),这一限制符合嵌入式 Rust 编程的常见实践。

项目文档明确了具体的环境要求:

  • Rust 编译器版本需达到 1.85 或更高(该版本发布于 2025 年 2 月);
  • bindgen 工具版本需为 0.71.1 或更新(自 2024 年 12 月起可用);
  • Meson 构建系统版本需为 1.4.0 或更新(自 2024 年 3 月起可用)。
这些版本要求相对保守,例如 Debian 13 发行版中已包含兼容的 Meson 版本。

Brauner 在后续帖子中指出,团队计划未来在 systemd 核心中支持 Rust,但目前 Rust 对动态库的支持尚未就绪。此外,在 Rust 中编写 systemd 模块与从 Rust 代码调用 systemd API 是两个不同的概念。后者已有成熟工具支持,例如自 2015 年起存在的 systemd crate。

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读