Systemd پشتیبانی از Rust را اضافه می کند
چه چیزی حتی بهتر از Rust در هسته لینوکس؟ زنگ زدگی در systemd!
سیستم مورد علاقه یونیکس init همه، اضافه کردن پشتیبانی برای زبان برنامه نویسی جدید مورد علاقه جهان یونیکس است. بدترین چیزی که ممکن است اتفاق بیفتد چیست؟
نگران نباشید، این هنوز اینجا نیست. Agent P و تیم قابل اعتمادش نسخه systemd 262 را حدود یک ماه پیش منتشر کردند. این بدان معناست که systemd 263 اکنون در دست ساخت است و توسعه دهنده Christian Brauner در Mastodon اعلام کرد که ویژگی جدید او ادغام شده است.
تلاش قبلی، که درخواست pull #44144 بود، اکنون به پنج بخش جداگانه تقسیم شده است. قسمت 1 شامل keyring-util و voa-util است که به عنوان "کمک کننده برای ثبت گواهینامه ها در کلیدهای هسته" توصیف می شود. قسمت 2، برنامه های پشتیبانی نوشته شده در Rust، آیتم بنر است. سپس چند مورد دیگر را بیاورید: فقط سرصفحههایی را که Rust استفاده میکند پیوند دهید، کمکهای اشتراکگذاری شده libsystemd systemd-keyring-setup need را بپیچید، و در نهایت، systemd-keyring-setup را اضافه کنید.
چندین سوارکار مهم در این اعلامیه وجود دارد، و این موارد در روابط عمومی دوم توضیح داده شده است:
"Rust فقط برای اجزای برگ جدید استفاده می شود. کد C موجود منتقل نمی شود و چیزی که سایر اجزا به آن وابسته هستند در Rust نوشته نشده است."
به عبارت دیگر، قبل از اینکه کسی بیش از حد هیجان زده شود، این نشان دهنده شروع تلاش برای بازنویسی systemd در Rust نیست. تمام معنی آن این است که ماژول های systemd جدید را می توان در Rust نوشت.
نکته دوم برای توسعه دهندگان Rust مهم تر خواهد بود: "بدون محموله. همه چیز با مزون ساخته شده است."
Cargo مدیر بسته و سیستم ساخت زبان Rust است. این روش معمولی برای ساخت برنامه های Rust و همچنین توزیع ماژول های کد Rust برای سایر توسعه دهندگان Rust است. با این حال، systemd در حال حاضر یک سیستم ساخت مدرن دارد. این Meson نامیده می شود و منحصر به سیستم نیست - همچنین به طور گسترده توسط پروژه GNOME و کتابخانه گرافیکی Mesa 3D استفاده می شود. خود مزون در پایتون نوشته شده است و از Ninja برای مدیریت فرآیند کامپایل استفاده می کند. Ninja برای ساخت سریعتر کروم طراحی شده است و برای Android نیز استفاده میشود.
شرط سوم این است که هر کد Rust نباید از کتابخانه استاندارد استفاده کند. برای کسانی که بیشتر با C آشنا هستند، این ممکن است شدید به نظر برسد، اما برای برنامه نویسی Rust تعبیه شده طبیعی است.
پروژه الزامات سیستم را مستند می کند. به Rust نسخه 1.85 یا بالاتر نیاز دارد. این ساده است: آن نسخه در فوریه 2025 منتشر شد و نسخه 1.99.1 اوایل این ماه ظاهر شد. همچنین نسخه bindingen 0.71.1 (از دسامبر 2024) یا جدیدتر و Meson 1.4.0 (از مارس 2024) را فرا می خواند. اینها نسخه های نسبتا قدیمی هستند – به عنوان مثال، نسخه مزون موجود در Debian 13 است.
Brauner کد کوچک جالبی را در پست دوم Masto اضافه کرد: گفت که تیم دوست داشت از Rust در هسته systemd پشتیبانی کند، اما در حال حاضر، پشتیبانی Rust از کتابخانههای پویا هنوز کاملا وجود ندارد.
شاید شایان ذکر باشد که نوشتن ماژول های systemd در Rust به هیچ وجه با فراخوانی systemd از کد Rust یکسان نیست. ابزارهای مختلفی برای انجام این کار وجود دارد، و آنها برای سال ها وجود دارند: برای مثال، جعبه سیستمد برای اولین بار در سال 2015 ظاهر شد.
متن اصلی (انگلیسی)
Systemd adds support for Rust
What's even better than Rust in the Linux kernel? Rust in systemd!