Systemd chính thức bổ sung hỗ trợ ngôn ngữ lập trình Rust

Công nghệ29 tháng 10, 2026·4 phút đọc

Dự án systemd đã hợp nhất các thay đổi cho phép viết các module mới bằng Rust, mở ra hướng phát triển hiện đại hơn cho hệ thống khởi động phổ biến nhất trên Linux. Tuy nhiên, đội ngũ phát triển khẳng định sẽ không viết lại mã nguồn C hiện có và cũng chưa thể đưa Rust vào phần lõi.

Systemd chính thức bổ sung hỗ trợ ngôn ngữ lập trình Rust

Systemd chính thức bổ sung hỗ trợ ngôn ngữ lập trình Rust

Systemd — hệ thống khởi động và quản lý dịch vụ quen thuộc nhất trên các bản phân phối Linux — vừa đánh dấu một bước ngoặt quan trọng khi chính thức bổ sung khả năng hỗ trợ ngôn ngữ lập trình Rust. Thay đổi này được kỳ vọng sẽ mở ra cách viết các thành phần mới an toàn và hiện đại hơn, dù chưa có ý định viết lại toàn bộ dự án.

Bối cảnh và thay đổi được hợp nhất

Phiên bản systemd 262 vừa được phát hành cách đây khoảng một tháng, đồng nghĩa hệ thống đang bước vào giai đoạn xây dựng phiên bản 263. Trong quá trình này, nhà phát triển Christian Brauner đã thông báo trên Mastodon rằng tính năng hỗ trợ Rust do ông phụ trách đã được hợp nhất vào mã nguồn chính.

Trước đó, thay đổi này từng được đề xuất dưới dạng pull request số #44144. Do quy mô và độ phức tạp, nó được tách thành năm phần riêng biệt:

  • Phần 1: bao gồm các tiện ích keyring-util và voa-util, được mô tả là công cụ hỗ trợ đăng ký chứng chỉ vào keyring của nhân hệ điều hành.
  • Phần 2: bổ sung các chương trình hỗ trợ viết bằng Rust — đây là nội dung được chú ý nhất.
  • Phần 3: chỉ liên kết các thư viện header mà mã Rust thực sự sử dụng.
  • Phần 4: bọc lại các hàm trợ giúp libsystemd-shared mà systemd-keyring-setup cần.
  • Phần 5: bổ sung thành phần systemd-keyring-setup.

Ba điều kiện quan trọng đi kèm

Thông báo nhanh chóng được trấn an bởi các điều kiện ràng buộc rõ ràng, được nêu chi tiết trong pull request thứ hai. Đây là những điểm quan trọng mà các nhà phát triển hệ thống cần nắm:

"Rust chỉ được sử dụng cho các thành phần lá (leaf component) mới. Mã nguồn C hiện có không bị chuyển đổi, và không có thành phần nào mà các bộ phận khác phụ thuộc vào được viết bằng Rust."

Điều này có nghĩa thay đổi hiện tại không phải khởi đầu cho phong trào viết lại systemd bằng Rust. Nó chỉ đơn thuần cho phép các module mới có thể được viết bằng ngôn ngữ này.

Điểm thứ hai có ý nghĩa lớn hơn với những ai đã quen với Rust:

  • Không dùng Cargo. Toàn bộ quá trình xây dựng được thực hiện bằng Meson.

Cargo là công cụ quản lý gói kiêm hệ thống build quen thuộc của cộng đồng Rust. Tuy nhiên, systemd đã có sẵn một hệ thống build hiện đại là Meson — vốn được dùng rộng rãi trong dự án GNOME và thư viện đồ họa Mesa 3D. Meson được viết bằng Python và sử dụng Ninja để quản lý quá trình biên dịch.

Điều kiện thứ ba là mọi mã Rust không được sử dụng standard library. Với những ai quen với C, yêu cầu này nghe có vẻ khắt khe, nhưng thực tế đây là cách làm phổ biến trong lập trình Rust nhúng.

Yêu cầu phiên bản công cụ

Dự án đã ghi rõ các yêu cầu kỹ thuật cho môi trường phát triển:

  • Rust phiên bản 1.85 trở lên — đây là mức khá khiêm tốn vì phiên bản này phát hành từ tháng 2/2025.
  • bindgen 0.71.1 trở lên — có từ tháng 12/2024.
  • Meson 1.4.0 trở lên — có từ tháng 3/2024, đây cũng là phiên bản đi kèm với Debian 13.

Vì sao Rust chưa thể len vào phần lõi?

Trong một bài đăng tiếp theo trên Mastodon, Christian Brauner chia sẻ một chi tiết đáng chú ý: đội ngũ phát triển mong muốn hỗ trợ Rust ngay trong phần lõi của systemd, nhưng hiện tại khả năng hỗ trợ thư viện động (dynamic library) của Rust vẫn chưa đạt yêu cầu.

Cũng cần phân biệt rõ: viết module systemd bằng Rust hoàn toàn khác với việc gọi systemd từ mã Rust. Hướng thứ hai đã có từ lâu — ví dụ, crate systemd xuất hiện từ năm 2015 và hiện có nhiều công cụ tương tự.

Ý nghĩa với cộng đồng Linux

Việc systemd hướng tới Rust phản ánh xu hướng rộng lớn hơn trong thế giới mã nguồn mở: ngôn ngữ do Mozilla khởi xướng đang dần hiện diện ở cả nhân Linux lẫn các hệ thống cấp thấp. Đây là tín hiệu tích cực cho các nhà phát triển Việt Nam muốn tham gia dịch vụ hệ thống và các dự án hạ tầng Linux, bởi Rust là ngôn ngữ có nhu cầu nhân lực ngày càng cao.

Tuy nhiên, cần duy trì cái nhìn thận trọng: đây là bước tiến dài hạn chứ không phải cuộc cách mạng tức thời. Mã C hiện hữu vẫn là xương sống của systemd và sẽ tiếp tục được duy trì như vậy trong một thời gian dài nữa.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗