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

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

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

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

  • الزام آور به ترتیب اجرای دستورات «بررسی محموله» و «کلیپی محموله» حذف شد. پیش از این، فراخوانی "cargo clippy" پس از "Cargo check" به دلیل عدم جداسازی حافظه پنهان برای این حالت‌های چک، ابزار clippy (linter) را راه‌اندازی نمی‌کرد. اکنون این مشکل حل شده است و ترتیب فراخوانی "کلیپی محموله" و "چک محموله" دیگر اهمیتی ندارد.
  • بخش جدیدی از API به دسته پایدار منتقل شده است که شامل روش های زیر است:
    • آرگومان ها::as_str
    • کاراکتر::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • ویژگی "const" که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در روش های زیر استفاده می شود:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_کوچک
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_کوچک
    • u8::eq_ignore_ascii_case
  • اضافه شد unsafe_op_in_unsafe_fn برای تعیین اینکه آیا کد ناامن استفاده شده در توابع ناامن توسط بلوک های ناامن قاب شده است یا خیر.
  • این مجاز است که نشانگرهای قابل تغییر را به آرایه ها به شکل نشانگرهایی به نوع عنصر آرایه تبدیل کنند. let mut x: [usize; 2] = [0، 0]; اجازه دهید p = &mut x به عنوان *mut usize; اجازه دهید p = &mut x به عنوان *const usize;
  • 9 چک جدید به clippy (لینتر) اضافه شد.
  • مدیر بسته محموله اکنون از فیلد manifest_path در JSON برای بسته ها پشتیبانی می کند. پشتیبانی برای مشخص کردن اطلاعات مجوز در قالب SPDX 3.11 به مخزن crates.io اضافه شد.
  • تعیین چندین فیلتر در هنگام اجرای تست مجاز است، برای مثال اجرای "تست محموله - فو بار" تمام تست های مطابق با ماسک های "foo" و "bar" را اجرا می کند.
  • جعبه ابزار پیش فرض LLVM به LLVM 12 به روز شده است.
  • سومین سطح پشتیبانی برای پلتفرم های s390x-unknown-linux-musl، riscv32gc-unknown-linux-musl، riscv64gc-unknown-linux-musl و powerpc-unknown-openbsd اجرا شده است. سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی یا بررسی اینکه آیا کد قابل ساخت است یا خیر.

منبع: opennet.ru

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