انتشار زبان برنامه نویسی Rust 1.68

انتشار زبان برنامه نویسی همه منظوره Rust 1.68 که توسط پروژه موزیلا تأسیس شده است، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شده است. این زبان بر ایمنی حافظه تمرکز می‌کند و ابزاری را برای دستیابی به موازی کاری بالا در عین اجتناب از استفاده از جمع‌آوری زباله و زمان اجرا فراهم می‌کند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش می‌یابد).

روش‌های مدیریت حافظه Rust، توسعه‌دهنده را از خطا در هنگام دستکاری اشاره‌گرها نجات می‌دهد و از مشکلاتی که به دلیل مدیریت سطح پایین حافظه ایجاد می‌شود، محافظت می‌کند، مانند دسترسی به یک ناحیه حافظه پس از آزاد شدن، عدم ارجاع اشاره‌گرهای تهی، بیش از حد بافر و غیره. برای توزیع کتابخانه ها، ارائه ساخت و مدیریت وابستگی ها، این پروژه مدیر بسته Cargo را توسعه می دهد. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.

ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شیء، پیگیری طول عمر شی (scopes) و ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، به متغیرها نیاز دارد که قبل از استفاده مقداردهی اولیه شوند، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، و تایپ ثابت قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.

نوآوری های اصلی:

  • پشتیبانی از پروتکل Sparse در مدیریت بسته های Cargo و مخزن crates.io تثبیت شده است، که روش جدیدی را برای کار با شاخصی تعریف می کند که نسخه های موجود تمام بسته های موجود در مخزن را منعکس می کند. پروتکل جدید به شما امکان می دهد تا سرعت کار با crates.io را به میزان قابل توجهی افزایش دهید و با افزایش بیشتر تعداد بسته های موجود در مخزن، مشکلات مربوط به مقیاس بندی را حل کنید.

    برای کاهش تأخیرهای ناشی از دانلود یک فهرست کامل، Sparse به جای دسترسی به فهرست با استفاده از Git، مستقیماً از طریق HTTPS فقط داده‌های فهرست لازم را دانلود می‌کند و وابستگی‌های یک پروژه خاص را پوشش می‌دهد. سرویس جدید index.crates.io برای برگرداندن داده های فهرست استفاده می شود. به‌طور پیش‌فرض، پروتکل جدید برای استفاده در شاخه Rust 1.70 برنامه‌ریزی شده است و قبل از آن، برای فعال کردن آن، می‌توانید متغیر محیطی «CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse» را تنظیم کنید یا پارامتر «protocol =» را به «[registries.crates» اضافه کنید. -io]" بخش .cargo/config.toml فایل "sparse"'.

  • اضافه شده ماکرو "pin!"، که امکان ایجاد ساختار Pin<&mut T> را از عبارت "T" با پین کردن موضعی حالت آن فراهم می کند (برخلاف Box::pin حافظه را روی پشته تخصیص نمی دهد، اما در سطح پشته متصل می شود) .
  • یک کنترل کننده خطای تخصیص حافظه پیش فرض پیشنهاد شده است که هنگام استفاده از بسته تخصیص استاندارد استفاده می شود. برنامه‌هایی که فقط تخصیص را فعال می‌کنند (بدون std) اکنون کنترل‌کننده «panic!» را در موارد خرابی تخصیص حافظه فراخوانی می‌کنند، که می‌تواند به صورت اختیاری با «#[panic_handler] رهگیری شود». برنامه هایی که از کتابخانه std استفاده می کنند همچنان اطلاعات خطا را در stderr چاپ می کنند و خراب می شوند.
  • بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
    • {core,std}::pin::pin!
    • immpl From برای {f32,f64}
    • std:: مسیر::MAIN_SEPARATOR_STR
    • impl DerefMut برای PathBuf
  • ویژگی "const" که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در تابع VecDeque::new استفاده می شود.
  • پلتفرم اندروید اکنون به حداقل NDK r25 (API 19) نیاز دارد. حداقل نسخه اندروید پشتیبانی شده به 4.4 (KitKat) افزایش یافته است.
  • سومین سطح پشتیبانی از پلتفرم سونی پلی استیشن ویتا (armv7-sony-vita-newlibeabihf) پیاده سازی شد. سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی و بررسی توانایی ساخت کد.

منبع: opennet.ru

اضافه کردن نظر