پشتیبانی Rust برای هسته لینوکس با انتقاد توروالدز مواجه است

لینوس توروالدز وصله‌هایی را که توانایی ایجاد درایورها به زبان Rust را برای هسته لینوکس پیاده‌سازی می‌کردند، بررسی کرد و نظرات انتقادی ارائه کرد.

بزرگترین شکایات ناشی از احتمال بالقوه panic() در موقعیت های خطا بود، به عنوان مثال، در موقعیت حافظه کم، زمانی که عملیات تخصیص حافظه پویا، از جمله در هسته، ممکن است شکست بخورد. توروالدز اظهار داشت که چنین رویکردی در هسته اساساً غیرقابل قبول است و در صورت عدم درک این نکته، او می‌تواند هر کدی را که سعی در استفاده از چنین رویکردی داشته باشد کاملاً NAK کند. از طرفی سازنده پچ نیز با این مشکل موافق بوده و آن را قابل حل می داند.

مشکل دیگر تلاش برای استفاده از انواع ممیز شناور یا 128 بیتی بود که برای محیط هایی مانند هسته لینوکس قابل قبول نیستند. معلوم شد که این مشکل جدی تری است، زیرا در حال حاضر کتابخانه هسته Rust غیرقابل تقسیم است و یک حباب بزرگ را نشان می دهد - راهی برای درخواست فقط برخی از ویژگی ها وجود ندارد و از استفاده از یک یا آن عملکرد مشکل ساز جلوگیری می کند. حل مشکل ممکن است نیاز به تغییراتی در کامپایلر و کتابخانه‌های rust داشته باشد، اگرچه در حال حاضر تیم هنوز استراتژی برای نحوه اجرای ماژولارسازی کتابخانه‌های زبان ندارد.

علاوه بر این، توروالدز خاطرنشان کرد که مثال درایور ارائه شده بی فایده است و به ما توصیه کرد که از راننده ای که یکی از مشکلات واقعی را حل می کند به عنوان نمونه استفاده کنیم.

به روز رسانی: گوگل مشارکت خود را در ابتکار عمل برای فشار دادن پشتیبانی Rust به هسته لینوکس اعلام کرده است و دلایل فنی برای معرفی Rust برای مقابله با مشکلات ناشی از خطاهای حافظه ارائه کرده است. گوگل معتقد است که Rust آماده است به زبان C به عنوان زبان توسعه اجزای هسته لینوکس بپیوندد. این مقاله همچنین نمونه هایی از استفاده از زبان Rust برای توسعه درایورهای هسته را در زمینه استفاده از آنها در پلتفرم اندروید ارائه می دهد (Rust به عنوان یک زبان رسمی پشتیبانی شده برای توسعه اندروید شناخته می شود).

خاطرنشان می شود که گوگل یک نمونه اولیه از درایور نوشته شده در Rust برای مکانیسم ارتباطی بین فرآیند Binder آماده کرده است که امکان مقایسه دقیق عملکرد و امنیت پیاده سازی Binder در C و Rust را فراهم می کند. در شکل فعلی، کار هنوز کامل نشده است، اما تقریباً برای تمام انتزاعات اولیه عملکرد هسته لازم برای کار بایندر، لایه هایی برای استفاده از این انتزاع ها در کد Rust آماده شده است.

منبع: opennet.ru

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