انتشار زبان برنامه نویسی همه منظوره Rust 1.62 که توسط پروژه موزیلا تأسیس شده است، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شده است. این زبان بر ایمنی حافظه تمرکز میکند و ابزاری را برای دستیابی به موازی کاری بالا در عین اجتناب از استفاده از جمعآوری زباله و زمان اجرا فراهم میکند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش مییابد).
روشهای مدیریت حافظه Rust، توسعهدهنده را از خطا در هنگام دستکاری اشارهگرها نجات میدهد و از مشکلاتی که به دلیل مدیریت سطح پایین حافظه ایجاد میشود، محافظت میکند، مانند دسترسی به یک ناحیه حافظه پس از آزاد شدن، عدم ارجاع اشارهگرهای تهی، بیش از حد بافر و غیره. برای توزیع کتابخانه ها، ارائه ساخت و مدیریت وابستگی ها، این پروژه مدیر بسته Cargo را توسعه می دهد. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.
ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شیء، پیگیری طول عمر شی (scopes) و ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، به متغیرها نیاز دارد که قبل از استفاده مقداردهی اولیه شوند، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، و تایپ ثابت قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
نوآوری های اصلی:
- مدیر بسته "cargo" دستور "add" را ارائه می دهد که به شما امکان می دهد وابستگی های جدیدی را به مانیفست Cargo.toml اضافه کنید یا وابستگی های موجود را از خط فرمان تغییر دهید. این دستور همچنین به شما امکان میدهد ویژگیها و نسخههای فردی را مشخص کنید، به عنوان مثال: cargo add serde —features derive cargo add nom@5
- قابلیت استفاده از "#[derive(Default)]" با enum هایی اضافه شد که در آن گزینه پیش فرض با استفاده از ویژگی "#[default]" تعریف شده است. #[اشتقاق (پیشفرض)] enum شاید { #[پیشفرض] هیچ چیز، چیزی (T)، }
- در پلتفرم لینوکس، از پیادهسازی فشردهتر و سریعتر مکانیزم همگامسازی Mutex، بر اساس استفاده از فیوکسهای ارائهشده توسط هسته لینوکس استفاده میشود. برخلاف پیاده سازی قبلی که بر اساس کتابخانه pthreads استفاده می شد، نسخه جدید به جای 5 بایت فقط از 40 بایت برای ذخیره حالت Mutex استفاده می کند.به طور مشابه مکانیسم های قفل Condvar و RwLock به futex منتقل شده اند.
- سطح دوم پشتیبانی برای پلت فرم هدف x86_64-unknown-none پیاده سازی شده است که برای تولید فایل های اجرایی طراحی شده است که می توانند بدون سیستم عامل کار کنند. به عنوان مثال، پلت فرم هدف مشخص شده را می توان هنگام نوشتن اجزای هسته استفاده کرد. سطح دوم پشتیبانی شامل ضمانت مونتاژ است.
- سومین سطح پشتیبانی برای پلتفرم های aarch64-pc-windows-gnullvm و x86_64-pc-windows-gnullvm پیاده سازی شده است. سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی یا بررسی اینکه آیا کد قابل ساخت است یا خیر.
- بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
- bool::then_some
- f32::total_cmp
- f64::total_cmp
- Stdin::خطوط
- ویندوز::CommandExt::raw_arg
- تلقین مقدار پیش فرض برای AssertUnwindSafe
- از جانب > برای Rc
- از جانب > برای Arc<[u8]>
- FusedIterator برای EncodeWide
منبع: opennet.ru