بحران در زبان برنامه نویسی Rust فشار به هسته لینوکس

بحران در زبان برنامه نویسی Rust فشار به هسته لینوکس

در جامعه هسته لینوکس بر سر ادغام زبان برنامه نویسی Rust اختلاف نظر وجود دارد. کریستوف هلویگ، نگهدارنده زیرسیستم‌های معماری DMA، KVM، Slab Allocator و PowerPC در هسته لینوکس، که قبلاً عضو کمیته راهبری فنی بنیاد لینوکس و شاکی در دعوای حقوقی مرتبط با GPL علیه VMware بود، از تأیید وصله‌های مربوط به پشتیبانی از توسعه درایور Rust خودداری کرده است.

وصله‌های پیشنهادی برای افزودن پوشش‌ها برای توابع زیرسیستم DMA نگرانی‌هایی را در مورد افزایش نگهداری کد و کاهش بالقوه کیفیت نرم‌افزار ایجاد کرده است. برخی از توسعه دهندگان ترجیح می دهند API های خود را در C نگه دارند تا از پیچیدگی بیشتر جلوگیری کنند.

دلایل ذکر شده برای امتناع، افزایش پیچیدگی نگهداری کد در حضور پیوندها در زبان‌های دیگر و تمایل به حفظ رابط‌های نرم‌افزار به DMA به شکل قابل خواندن در زبان C، بدون پخش شدن در پیوندهای نامفهوم بود. کریستف پیشنهاد کرد که به طور مستقیم به C DMA API بومی در هر درایور Rust دسترسی پیدا کند تا انتزاعات اضافی ایجاد نشود که نگهدارنده‌های هسته باید به آنها وابسته باشند.

علیرغم قصد بیان شده توسط توسعه دهندگان پروژه Rust برای لینوکس برای حفظ کاملا مستقل پایه کد نوشته شده در Rust، پذیرش وصله ها وتو شد.

کریستوف خاطرنشان کرد که اگر توسعه‌دهندگان می‌خواهند لینوکس را با مخلوط کردن زبان‌های برنامه‌نویسی مختلف در یک پایه کد غیرقابل نگهداری کنند، باید این کار را در درایور خود انجام دهند، نه اینکه این "تومور سرطانی" را روی هسته اصلی اسپری کنند.

هسته مشکل قابلیت نگهداری این است که اتصالات Rust نگهدارنده ها را به کد Rust وابسته می کند. در نگاه اول، به نظر می رسد که اتصالات فقط افزونه هایی بر روی ساختارها و توابع C هستند که به هیچ وجه بر توسعه و نگهداری کد C تأثیر نمی گذارد. اما این چنین نیست. در صورت وجود چنین پیوندهایی، توسعه دهندگان زیرسیستم هایی که به زبان C نوشته شده اند باید تأثیر تغییرات خود را بر ادامه عملکرد اتصالات در نظر بگیرند. هر گونه تغییر در ساختار داده یا توابع داخلی در C ممکن است نیاز به تغییر در کد اتصال داشته باشد، بنابراین تغییرات در کد C که بر اتصال تأثیر می‌گذارد باید ردیابی و با کد Rust همگام شوند. بسیاری از نگهدارنده ها حاضر نیستند مسئولیت اضافی رفع مشکلاتی که در کد Rust ایجاد می شوند را بر عهده بگیرند و حاضر نیستند وقت خود را صرف نظارت بر وضعیت اتصالات Rust کنند.

منبع: linux.org.ru

اضافه کردن نظر