Một thay đổi đã được thực hiện đối với mã nguồn của trình quản lý hệ thống systemd, bổ sung khả năng tạo các thành phần bằng Rust. Rust chỉ được sử dụng để phát triển các thành phần mới và không có kế hoạch viết lại mã C hiện có bằng Rust. Trình quản lý gói cargo không còn được sử dụng trong quá trình xây dựng và chỉ còn lại hệ thống xây dựng Meson. Mã Rust được sử dụng ở chế độ "no_std" (không có thư viện chuẩn), và chỉ cho phép các thư viện core, alloc và libc.
Các thành phần Rust của systemd được liên kết động với thư viện C libsystemd-shared. Các liên kết Rust cho libsystemd-shared được tự động tạo ra trong quá trình biên dịch từ các tệp tiêu đề bằng tiện ích bindgen và được cung cấp cho các chương trình Rust dưới dạng gói systemd_shared. Điều này yêu cầu ít nhất rustc 1.85 và bindgen 0.71.1, tương ứng với các phiên bản trong Debian 13.
Tệp thực thi Rust thử nghiệm, khi được biên dịch với tối ưu hóa LTO, chiếm 32 KB, trong khi phiên bản C tương đương chiếm 20 KB. Theo mặc định, hỗ trợ Rust chỉ được bật nếu bộ công cụ Rust tương ứng có mặt trên hệ thống (-Drust=auto). Thành phần đầu tiên được viết bằng Rust đang được phát triển, systemd-keyring-setup, nhưng chưa được đưa vào mã nguồn chính của systemd. Systemd-keyring-setup được thiết kế để cấu hình và quản lý chứng chỉ X.509 cho các cơ chế hạt nhân. Linux dm-verity, fs-verity và bpf.
Nguồn: opennet.ru
