Miguel Ojeda، نویسنده پروژه Rust-for-Linux، انتشار کامپوننت های v5 را برای توسعه درایورهای دستگاه به زبان Rust برای بررسی توسط توسعه دهندگان هسته لینوکس پیشنهاد کرد. این ششمین ویرایش وصله ها با در نظر گرفتن نسخه اول است که بدون شماره نسخه منتشر شده است. پشتیبانی Rust آزمایشی در نظر گرفته میشود، اما در حال حاضر در شاخه linux-next گنجانده شده است و به اندازه کافی برای شروع کار بر روی ایجاد لایههای انتزاعی بر روی زیرسیستمهای هسته، و همچنین نوشتن درایورها و ماژولها توسعه یافته است. بودجه این توسعه توسط Google و ISRG (گروه تحقیقاتی امنیت اینترنت) که بنیانگذار پروژه Let's Encrypt است و HTTPS و توسعه فناوریهایی را برای بهبود امنیت اینترنت ترویج میکند، تامین میشود.
به یاد بیاورید که تغییرات پیشنهادی استفاده از Rust را به عنوان زبان دوم برای توسعه درایورها و ماژولهای هسته ممکن میسازد. پشتیبانی Rust بهعنوان گزینهای ارائه میشود که بهطور پیشفرض فعال نیست و باعث نمیشود که Rust بهعنوان یک وابستگی ساخت مورد نیاز برای هسته گنجانده شود. استفاده از Rust برای توسعه درایور به شما این امکان را میدهد که با کمترین تلاش، درایورهای ایمنتر و بهتری ایجاد کنید، بدون مشکلاتی مانند دسترسی به حافظه پس از آزادسازی، عدم ارجاع اشارهگر تهی، و بیش از حد بافر.
ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شی و طول عمر شی (محدوده)، و همچنین از طریق ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، نیاز به مقداردهی اولیه اجباری مقادیر متغیر قبل از استفاده دارد، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، تایپ استاتیک قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
نسخه جدید وصله ها همچنان به حذف نظرات مطرح شده در بحث ویرایش های اول، دوم، سوم، چهارم و پنجم پچ ها ادامه می دهد. در نسخه جدید:
- جعبه ابزار برای انتشار Rust 1.59.0 به روز شده است. گونهای از کتابخانه alloc نیز با نسخه جدید Rust همگامسازی شده است، و در صورت بروز خطاها، مانند کمبود حافظه، امکان ایجاد حالت «هراس» را حذف میکند. توانایی استفاده از درج های اسمبلر ("ویژگی(global_asm)") تثبیت شده است.
- اضافه شدن پشتیبانی برای ایجاد برنامه های میزبان در Rust که در طول کامپایل هسته استفاده می شوند.
- به جای ارائه فایل های مشخصات پلت فرم هدف از پیش تولید شده، آنها به صورت پویا بر اساس پیکربندی هسته تولید می شوند.
- پارامتر هسته HAVE_RUST برای فعال کردن معماری هایی که Rust را پشتیبانی می کنند اضافه شد.
- انتزاعات برای استفاده در کد Rust برای یک مولد اعداد شبه تصادفی سخت افزاری پیشنهاد شده اند.
- استفاده از کدهای خطا بدون پیشوند "Error::" (به عنوان مثال، "return Err(EINVAL)") برای تقریبی رسیدگی به کدهای خطا در C مجاز است.
- نوع "CString" برای رشته های C سفارشی اضافه شد. انواع Formatter و Buffer با هم ترکیب شده اند.
- اضافه شدن انواع Bool و LockInfo.
- اجرای قفل چرخشی ساده شده است.
منبع: opennet.ru