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

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

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

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

  • قابلیت های توابع تعریف شده با استفاده از عبارت "const fn" گسترش یافته است که می توان آنها را نه تنها به عنوان توابع منظم نامید، بلکه در هر زمینه ای به جای ثابت استفاده می شود. این توابع در زمان کامپایل محاسبه می‌شوند، نه در زمان اجرا، بنابراین در معرض محدودیت‌های خاصی هستند، مانند توانایی خواندن فقط از روی ثابت‌ها.

    نسخه جدید ممنوعیت استفاده از عملگرهای بولی ("&&" و "||") در چنین توابعی را حذف می کند و اجازه استفاده از ساختارهای "if"، "if let"، "match" را می دهد.
    "while"، "while let" و "loop" و همچنین امکان تبدیل به برش (slice، آرایه های پویا) را با استفاده از عبارت "&[T] فراهم می کند. استفاده از این ویژگی ها در توابع "const fn" به شما این امکان را می دهد که برخی از عملیات های پرمصرف منابع را به مرحله کامپایل منتقل کنید. به عنوان مثال، پیاده سازی "const-sha1" محاسبه هش های SHA-1 را در زمان کامپایل ممکن می کند، که منجر به افزایش سرعت اتصال WinRT برای Rust تقریباً 40 برابر می شود.

  • برای اطلاع‌رسانی بیشتر پیام‌های خطا، پشتیبانی از ویژگی "#[track_caller]" تثبیت شده است، که برای عملکردهایی مانند unwrap مفید است، که در صورت استفاده نادرست از انواع ممکن است باعث وحشت شود. ویژگی مشخص شده توسط کنترل کننده وحشت برای چاپ مکان تماس گیرنده در یک پیام خطا استفاده می شود.
  • ویژگی “const” که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در متد std::mem::forget استفاده می شود.
  • بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله تثبیت شده Option::zip و vec::Drain::as_slice.
  • در مدیریت بسته بار اضافه پشتیبانی از متغیرهای محیطی جدید تنظیم شده هنگام کامپایل یک بسته: CARGO_BIN_NAME (نام فایل اجرایی حاصل)، CARGO_CRATE_NAME (نام بسته)، CARGO_PKG_LICENSE (مجوز مشخص شده در مانیفست)، CARGO_PKG_LICENSE_FILE (مسیر به فایل مجوز).

منبع: opennet.ru

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