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

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

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

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

  • ماکروها توانایی استفاده از قطعات عناصر را برای تبدیل آنها به کد برای صفات (ویژگی)، پیاده سازی (impl) یا بلوک های خارجی فراهم می کنند. مثلا:

    قوانین_کلان! mac_trait {
    ($i:item) => {
    صفت T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    منجر به نسل خواهد شد:

    صفت T {
    fn foo() {}
    }

  • تشخیص نوع بهبود یافته اولیه، مراجع و عملیات باینری.
    به عنوان مثال، کد زیر که قبلاً باعث خطا شده بود، اکنون می تواند کامپایل شود (اکنون Rust به درستی تعیین می کند که 0.0 و &0.0 باید از نوع f32 باشند):

    بگذارید n: f32 = 0.0 + &0.0;

  • یک متغیر محیطی جدید CARGO_BIN_EXE_{name} به Cargo اضافه شده است که هنگام ساخت تست های یکپارچه سازی تنظیم می شود و به شما امکان می دهد مسیر کامل فایل اجرایی تعریف شده در بخش "[[bin]]" بسته را تعیین کنید.
  • اگر دستورات مجاز به استفاده از ویژگی هایی مانند "#[cfg()] باشند.
  • این کتابخانه امکان استفاده مستقیم از ثابت های مرتبط را برای انواع عدد صحیح و کسری بدون وارد کردن ماژول فراهم می کند. برای مثال، می‌توانید بلافاصله u32::MAX یا f32::NAN را بدون اینکه ابتدا «use std::u32» و «use std::f32» را مشخص کنید، بنویسید.
  • ماژول جدید اضافه شد بدوی، که انواع اولیه Rust را دوباره صادر می کند، به عنوان مثال زمانی که باید یک ماکرو بنویسید و مطمئن شوید که انواع پنهان نیستند.
  • بخش جدیدی از API به دسته پایدار، از جمله تثبیت شده، منتقل شده است

    هنگامی که::is_completed،
    f32::LOG10_2،
    f32::LOG2_10،
    f64::LOG10_2،
    f64::LOG2_10 و
    iter::یکبار_با.

منبع: opennet.ru

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