انتشار زبان برنامه نویسی همه منظوره Rust 1.76 که توسط پروژه موزیلا تأسیس شده است، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شده است. این زبان بر ایمنی حافظه تمرکز میکند و ابزاری را برای دستیابی به موازی کاری بالا در عین اجتناب از استفاده از جمعآوری زباله و زمان اجرا فراهم میکند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش مییابد).
روشهای مدیریت حافظه Rust، توسعهدهنده را از خطا در هنگام دستکاری اشارهگرها نجات میدهد و از مشکلاتی که به دلیل مدیریت سطح پایین حافظه ایجاد میشود، محافظت میکند، مانند دسترسی به یک ناحیه حافظه پس از آزاد شدن، عدم ارجاع اشارهگرهای تهی، بیش از حد بافر و غیره. برای توزیع کتابخانه ها، ارائه ساخت و مدیریت وابستگی ها، این پروژه مدیر بسته Cargo را توسعه می دهد. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.
ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شیء، پیگیری طول عمر شی (scopes) و ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، به متغیرها نیاز دارد که قبل از استفاده مقداردهی اولیه شوند، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، و تایپ ثابت قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
نوآوری های اصلی:
- بخش جداگانه ای به مستندات اضافه شده است که سازگاری انواع آرگومان ها و انواع بازگشت تابع در سطح ABI را توضیح می دهد. در مقایسه با نسخه های قبلی، سازگاری در سطح ABI انواع "char" و "u32" که دارای اندازه و تراز یکسان هستند تضمین شده است.
- علاوه بر تماس قبلی موجود "any::type_name::". ()" که شرح رشته ای را برای نوع مشخص شده در پارامتر "T" برمی گرداند، تابع "type_name_of_val(&T)" اضافه شده است که به شما امکان می دهد اطلاعات نوع را بر اساس هر مرجع بی نامی بدست آورید. fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); اجازه دهید iter_name = std::any::type_name_of_val(&iter); اجازه دهید sum: i3 = iter.sum(); println!("مجموع "{iter_name}" {sum} است."); } خروجی عبارت است از: مجموع `core::array::iter::IntoIter ` 32 است.
- بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
- Arc::unwrap_or_clone
- Rc::unwrap_or_clone
- نتیجه::بازرسی
- نتیجه::inspect_err
- گزینه::بازرسی
- type_name_of_val
- std::hash::{DefaultHasher، RandomState}
- ptr::{from_ref، from_mut}
- ptr::addr_eq
- سطح سوم پشتیبانی برای پلتفرمهای {x86_64,i686}-win7-windows-msvc، aarch64-apple-watchos، arm64e-apple-ios و arm64e-apple-darwin اجرا شده است. سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی یا بررسی اینکه آیا کد قابل ساخت است یا خیر.
علاوه بر این، ما میتوانیم نمایش زمانبندی کار آزمایشی scx_rustland را که به زبان Rust نوشته شده و در فضای کاربر اجرا شده است، یادداشت کنیم (انتقال منطق زمانبندی کار از هسته به فضای کاربر با استفاده از جعبه ابزار sched-ext با استفاده از BPF اجرا میشود). زمانبندی بهینه سازی شده است تا اولویت وظایف تعاملی را نسبت به کارهای فشرده CPU افزایش دهد. به عنوان مثال، در آزمایش راهاندازی یک برنامه بازی همزمان با ساخت هسته، زمانبندی scx_rustland به ما اجازه داد تا FPS بالاتری را در بازی نسبت به زمانبندی استاندارد EEVDF بدست آوریم.
منبع: opennet.ru