انتشار زبان برنامه نویسی سیستم Rust 1.54 که توسط پروژه موزیلا تأسیس شد، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شد. این زبان بر ایمنی حافظه تمرکز میکند، مدیریت حافظه خودکار را فراهم میکند و ابزاری را برای دستیابی به موازی کاری بالا بدون استفاده از جمعآوری زباله یا زمان اجرا فراهم میکند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش مییابد).
مدیریت خودکار حافظه Rust خطاها را هنگام دستکاری نشانگرها حذف می کند و از مشکلات ناشی از دستکاری حافظه در سطح پایین، مانند دسترسی به یک منطقه حافظه پس از آزاد شدن، عدم ارجاع اشاره گر تهی، بیش از حد بافر و غیره محافظت می کند. برای توزیع کتابخانه ها، اطمینان از مونتاژ و مدیریت وابستگی ها، این پروژه در حال توسعه مدیر بسته بار است. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.
نوآوری های اصلی:
- قابلیت استفاده از ماکروهای تابع مانند در داخل ویژگیها (ماکروهای رویهای و ماکروهای ایجاد شده با استفاده از ماکرو "macro_rules!") اضافه شده است. چنین ماکروهایی با نماد "!" از توابع متمایز می شوند. پس از نام (macro!(...)) و جایگزینی متن منبع ماکرو به جای ایجاد فراخوانی تابع. فراخوانی ماکروها در صفات می تواند برای گنجاندن محتوای فایل های دیگر در مستندسازی نظرات مفید باشد. به عنوان مثال، برای درج محتویات فایل README و نتیجه اجرای اسکریپت، می توانید تعیین کنید: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" ")، "/generated.rs" )] mod ایجاد شد.
- توابع کامپایلر داخلی (Intrinsics) برای پلتفرم wam32 تثبیت شدهاند و امکان استفاده از دستورالعملهای SIMD را در WebAssembly فراهم میکنند. اکثر توابع، مانند v128_bitselect، در حالت "ایمن" در دسترس هستند، اما برخی از توابع که با اشاره گرها کار می کنند (به عنوان مثال، v128_load) "ناامن" باقی می مانند.
- استفاده پیشفرض از کامپایل افزایشی بازگشته است، و به شما امکان میدهد فقط قسمتهای تغییر یافته کد را بازسازی کنید، که میتواند زمان ساخت پروژه را در هنگام کامپایل مجدد پس از ایجاد تغییرات جزئی به میزان قابل توجهی کاهش دهد. کامپایل افزایشی در نسخه 1.52.1 به دلیل اشکالات پنهانی که پس از افزودن یک بررسی اضافی برای بارگیری داده ها از حافظه پنهان دیسک ظاهر شدند، غیرفعال شد.
- بخش جدیدی از APIها به دسته پایدار منتقل شده اند که شامل موارد زیر است:
- BTreeMap::into_keys
- BTreeMap::into_values
- HashMap::into_keys
- HashMap::into_values
- arch::wasm32
- VecDeque::binary_search
- VecDeque::binary_search_by
- VecDeque::binary_search_by_key
- VecDeque::partition_point
- گزینه هایی به cargo-tree اضافه شده است: «—prune » برای حذف یک بسته از نمودار وابستگی، «—depth» برای نمایش فقط عناصر یک سطح تودرتوی معین در درخت وابستگی، «—Edges No-Proc- ماکرو» برای پنهان کردن وابستگیهای ماکروهای رویهای.
منبع: opennet.ru