systemd حالا از Rust پشتیبانی میکنه
خلاصهٔ کاملتر
Christian Brauner، از توسعهدهندههای systemd، تو Mastodon اعلام کرده که پشتیبانی از Rust تو شاخهٔ اصلی merge شده و تو systemd 263 میاد. نسخهٔ ۲۶۲ حدود یه ماه پیش منتشر شده بود. پولریکوئست اولیه به پنج بخش شکسته شده: ابزارهای keyring-util و voa-util برای ثبت گواهیها تو keyring کرنل، پشتیبانی از برنامههای Rust (بخش اصلی خبر)، bind کردن فقط هدرهایی که کد Rust لازم داره، wrap کردن helperهای libsystemd-shared، و در آخر خود systemd-keyring-setup.
به گفتهٔ The Register، این خبر چندتا شرط مهم داره. اول اینکه Rust فقط برای اجزای برگ (leaf) استفاده میشه، یعنی بخشهای تازهای که هیچ جزء دیگهای بهشون وابسته نیست. کد C فعلی پورت نمیشه. پس این شروع بازنویسی systemd با Rust نیست، فقط یعنی ماژولهای جدید میتونن Rust باشن.
شرط دوم برای برنامهنویسهای Rust مهمتره: از cargo خبری نیست و همهچیز با Meson ساخته میشه. cargo مدیر پکیج و ابزار ساخت رسمی Rust هست. ولی systemd از قبل Meson رو داره، یه سیستم ساخت که با Python نوشته شده، پشتش از Ninja برای کامپایل استفاده میکنه و GNOME و Mesa هم ازش استفاده میکنن.
شرط سوم اینه که کد Rust نباید از کتابخونهٔ استاندارد (std) استفاده کنه. شاید برای برنامهنویس C عجیب باشه، ولی تو برنامهنویسی embedded با Rust این کار عادیه. پیشنیازها هم سخت نیستن: Rust نسخهٔ ۱.۸۵ به بالا (فوریه ۲۰۲۵)، bindgen نسخهٔ ۰.۷۱.۱ به بالا و Meson نسخهٔ ۱.۴.۰ که همون نسخهٔ Debian 13 هست. آخرین نسخهٔ Rust الان ۱.۹۹.۱ هست.
Brauner گفته تیم دوست داشت Rust رو تو هستهٔ systemd هم بیاره، ولی پشتیبانی Rust از کتابخونههای داینامیک هنوز به اندازهٔ کافی آماده نیست. نویسنده هم یادآوری میکنه که نوشتن ماژول systemd با Rust با صدازدن systemd از کد Rust فرق داره. برای دومی سالهاست ابزار وجود داره، مثلاً crate به اسم systemd از ۲۰۱۵.
نکات کلیدی:
- پشتیبانی از Rust تو systemd 263 میاد و فعلاً اولین استفادهش systemd-keyring-setup هست.
- Rust فقط برای اجزای تازه و برگه؛ هیچ کد C فعلی بازنویسی نمیشه.
- cargo استفاده نمیشه و همهچیز با Meson ساخته میشه.
- کد Rust باید بدون کتابخونهٔ استاندارد (no_std) نوشته بشه.
- پیشنیازها: Rust 1.85+، bindgen 0.71.1+ و Meson 1.4.0+.
- Rust به هستهٔ systemd نمیره چون پشتیبانیش از کتابخونههای داینامیک هنوز کامل نیست.




