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

صورت گرفت انتشار زبان برنامه نویسی سیستم زنگ 1.35، توسعه یافته توسط پروژه موزیلا. این زبان بر ایمنی حافظه تمرکز می‌کند، مدیریت خودکار حافظه را فراهم می‌کند و ابزاری برای دستیابی به موازی کاری بالا بدون استفاده از جمع‌آوری زباله یا زمان اجرا فراهم می‌کند.

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

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

  • صفات FnOnce, FnMut и Fn برای تخصیص هیپ اجرا شده است انواع جعبه ای Box‹dyn FnOnce›، Box‹dyn FnMut› و Box‹dyn Fn›;
  • اضافه فرصت ریختن بسته شدن به نشانگرهای عملکرد ناامن (ناامن fn)؛
  • قابلیت فراخوانی ماکرو "dbg!" بدون آرگومان برای نمایش نام فایل و شماره خط در stderr بدون بازرسی متغیر، که برای اشکال زدایی عملکرد عبارات شرطی راحت است.
  • روش " به انواع ممیز شناور f32 و f64 اضافه شدکپی علامت» برای کپی کردن یک کاراکتر از یک عدد به عدد دیگر.
  • روش اضافه شده "شامل"، که به شما امکان می دهد بررسی کنید که آیا مقدار مشخص شده در محدوده است.
  • روش اضافه شده Ref:Cell:map_split، به شما امکان می دهد مقدار RefCell قرض گرفته شده را برای اجزای مختلف داده های قرض گرفته شده منعکس و جدا کنید.
  • روش اضافه شده RefCell::replace_with برای جایگزینی مقدار RefCell فعلی و برگرداندن مقدار قدیمی به عنوان نتیجه؛
  • روش اضافه شده ptr::hash درهم کردن یک اشاره گر یا مرجع با یک آدرس به جای مقدار آدرس‌دهی شده.
  • روش اضافه شده گزینه::کپی شده برای کپی کردن محتویات گزینه‌های Option‹&T› یا Option‹&mut T›;
  • بخش جدیدی از APIها به دسته پایدار منتقل شده اند، از جمله روش هایی که تثبیت شده اند
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split،
    ptr::هش،
    محدوده::شامل،
    RangeFrom::شامل،
    RangeTo::شامل،
    RangeInclusive::شامل،
    RangeToInclusive::شامل و
    گزینه::copied;

  • بررسی drop_bounds به clippy (linter) اضافه شد، که هنگام افزودن یک اتصال "T: Drop" به تابع فعال می شود.
  • کامپایلر پشتیبانی از یک پلتفرم هدف جدید را اضافه کرده است
    wasm32-unknown-wasi (رابط آیا من بودم برای استفاده از WebAssembly خارج از مرورگر)؛

  • جعبه ابزار Rust برای توزیع های مبتنی بر کتابخانه استاندارد C Musl سازگار شده است.

منبع: opennet.ru

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