
پروژه systemd در مخزن Git خود تغییر مهمی را پذیرفت: از این پس برنامههای وابسته به systemd میتوانند بهجای زبان سی (C) با زبان راست (Rust) نوشته شوند. این پشتیبانی فعلاً شامل کتابخانه اصلی systemd نمیشود و فقط اجزای جانبی (Leaf Components) را در بر میگیرد.
پشتیبانی از Rust بدون Cargo
این قابلیت به معنای استفاده از Rust بدون ابزار کارگو (Cargo) است. برای پشتیبانی از Rust در کدهای اصلی systemd هنوز موانعی (Blockers) وجود دارد که ابتدا باید برطرف شوند. بنابراین در این مرحله، تمرکز بر برنامهها و اجزای جانبی systemd است.
نخستین ابزار: systemd-keyring-setup
پشتیبانی از Rust با یک مؤلفه جدید به نام systemd-keyring-setup آغاز شد که با زبان راست نوشته شده است. این ابزار برای تأمین و آمادهسازی کیرینگها (Keyrings) و ثبت گواهیهای X.509 در کیرینگهای dm-verity / fs-verity / BPF هسته (Kernel) در طول فرایند بوت (Boot Process) و مدیریت آنها پس از بوت استفاده میشود.
کد systemd-keyring-setup هنوز ادغام نشده است، اما با فراهم شدن زیرساخت Rust انتظار میرود بهزودی ادغام شود. در ابتدا همه این تغییرات در یک کامیت (Commit) بزرگ قرار داشت و سپس برای فعالسازی Rust، مؤلفه systemd-keyring-setup و آمادهسازیهای دیگر تفکیک شد.
رویکرد توسعهدهندگان و محدودیتها
- توسعهدهندگان systemd برنامهای برای انتقال کدهای موجود C به Rust ندارند.
- تمام کدهای Rust با مزون (Meson) ساخته میشوند و از Cargo استفاده نمیشود.
- فقط پیوند C (C Linkage) الزامی است.
- اجزای Rust کمی بزرگتر از C هستند؛ یک برنامه آزمایشی ۳۲ کیلوبایت در مقابل ۲۰ کیلوبایت همتای C است.
- پشتیبانی Rust فعلاً اختیاری است و با گزینه -Drust= در Meson فعال میشود؛ این گزینه بهصورت پیشفرض روی حالت خودکار (Auto) قرار دارد.
انتشار در systemd 263
جزئیات بیشتر درباره پشتیبانی از برنامههای Rust در systemd از طریق درخواست ادغام (Pull Request) مربوط قابل مشاهده است؛ تغییری که در نهایت به systemd 263 راه پیدا میکند.