میگوئل اوجدا، نویسنده پروژه Rust-for-Linux، نسخه چهارم اجزای سازنده را برای توسعه درایورهای دستگاه به زبان Rust برای بررسی توسط توسعه دهندگان هسته لینوکس پیشنهاد کرد. پشتیبانی Rust آزمایشی در نظر گرفته میشود، اما قبلاً برای گنجاندن در شاخه linux-next توافق شده است و به اندازه کافی برای شروع کار بر روی ایجاد لایههای انتزاعی بر روی زیرسیستمهای هسته و همچنین نوشتن درایورها و ماژولها بالغ است. بودجه این توسعه توسط Google و ISRG (گروه تحقیقاتی امنیت اینترنت) که بنیانگذار پروژه Let's Encrypt است و HTTPS و توسعه فناوریهایی را برای بهبود امنیت اینترنت ترویج میکند، تامین میشود.
به یاد بیاورید که تغییرات پیشنهادی استفاده از Rust را به عنوان زبان دوم برای توسعه درایورها و ماژولهای هسته ممکن میسازد. پشتیبانی Rust بهعنوان گزینهای ارائه میشود که بهطور پیشفرض فعال نیست و باعث نمیشود که Rust بهعنوان یک وابستگی ساخت مورد نیاز برای هسته گنجانده شود. استفاده از Rust برای توسعه درایور به شما این امکان را میدهد که با کمترین تلاش، درایورهای ایمنتر و بهتری ایجاد کنید، بدون مشکلاتی مانند دسترسی به حافظه پس از آزادسازی، عدم ارجاع اشارهگر تهی، و بیش از حد بافر.
ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شی و طول عمر شی (محدوده)، و همچنین از طریق ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، نیاز به مقداردهی اولیه اجباری مقادیر متغیر قبل از استفاده دارد، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، تایپ استاتیک قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
نسخه جدید وصله ها همچنان به حذف نظرات مطرح شده در بحث ویرایش های اول، دوم و سوم پچ ها ادامه می دهد. در نسخه جدید:
- انتقال به استفاده از نسخه پایدار Rust 1.58.0 به عنوان کامپایلر مرجع انجام شده است. از میان تغییرات لازم برای پروژه، که هنوز در جعبه ابزار اصلی Rust گنجانده نشده است، پرچم "-Zsymbol-mangling-version=v0" (مورد انتظار در Rust 1.59.0) و حالت "maybe_uninit_extra" (مورد انتظار در Rust 1.60.0 است. .XNUMX) ذکر شده است.
- اضافه شدن بررسی های خودکار برای در دسترس بودن ابزار Rust مناسب و افزایش قابلیت تست پشتیبانی Rust در سیستم.
- انتزاعات جدیدی برای دسترسی به جداول شناسه دستگاه ("IdArray" و "IdTable") از کد Rust پیشنهاد شده است.
- لایه هایی برای دسترسی به عملکردهای مرتبط با تایمر (چارچوب ساعت) اضافه شده است.
- درایورهای پلتفرم اکنون از طریق پیاده سازی صفت تعریف می شوند.
- یک ماکرو جدید برای سادهسازی ثبت درایورهای پلتفرم اضافه شده است و یک الگوی درایور عمومی جدید پیشنهاد شده است.
- ماکروهای اضافه شده برای ساختارهای "dev_*".
- روشهای "{read,write}*_relaxed" برای نوع IoMem اضافه شد .
- برای ساده کردن عملیات فایل، ویژگی FileOpener را حذف کرد.
- پارامتر ThisModule به آرگومان های ارسال شده هنگام ثبت درایور اضافه شده است.
- یک قالب استاندارد برای ایجاد ماژول های هسته در زبان Rust پیشنهاد شده است.
منبع: opennet.ru