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

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

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

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

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

  • قالب پیام های صادر شده توسط کنترل کننده خرابی برنامه پیش فرض (هراس) دوباره طراحی شده است. متن مشخص شده در ماکرو "هراس!" اکنون در یک خط جداگانه بدون علامت نقل قول نشان داده می شود، که خواندن پیام را آسان تر می کند و در صورت وجود نقل قول های تودرتو یا تقسیم در چندین خط، سردرگمی را از بین می برد. fn main() { let file = "ferris.txt"; وحشت!("اوه نه! {file:?} یافت نشد!"); } موضوع "اصلی" وحشت زده در "اوه نه! "ferris.txt" یافت نشد!', src/main.rs:3:5 موضوع "main" در src/main.rs:3:5: اوه نه! "ferris.txt" یافت نشد!

    خروجی پیام‌هایی که هنگام راه‌اندازی ماکروهای «assert_eq» و «assert_ne» نشان داده می‌شوند نیز دوباره کار شده است. fn main() { assert_eq!("🦀", "🐟", "فریس ماهی نیست"); } موضوع "اصلی" وحشت زده شد در "اظهار ناموفق": `(چپ == راست)` چپ: `"🦀"`، راست: `"🐟"`: فریس ماهی نیست، src/main.rs: 2:5 موضوع «اصلی» در src/main.rs:2:5 وحشت زده شد: ادعای «چپ == راست» ناموفق بود: فریس یک ماهی چپ نیست: «🦀» راست: «🐟»

  • مطابق با RFC 3184، امکان دستکاری مستقیم کلیدهای ذخیره‌سازی thread-local (thread_local) LocalKey اضافه شده است. > و LocalKey > از طریق استفاده از متدهای get()، set()، take() و replace() به جای استفاده از بسته شدن "with(|inner| ...)" که نیاز به اجرای کد اولیه اضافی را برای مقادیر پیش‌فرض مشخص‌شده برای رشته‌های جدید هنگام استفاده از ماکرو «thread_local!» thread_local! { static THINGS: سلول > = سلول::new(Vec::new()); } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // تبدیل به THINGS.set(vec![3, 1, 2]); // ... // اجازه داده شد v = THINGS.with(|i| i.take()); // let v شد: Vec = THINGS.take(); }
  • بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
    • بدون علامت {integer}::div_ceil
    • بدون علامت {integer}::next_multiple_of
    • بدون علامت {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • کلید محلی:: >:: دریافت
    • کلید محلی:: >:: مجموعه
    • کلید محلی:: >:: بگیر
    • کلید محلی:: >:: جایگزین کنید
    • کلید محلی:: >::with_borrow
    • کلید محلی:: >::with_borrow_mut
    • کلید محلی:: >:: مجموعه
    • کلید محلی:: >:: بگیر
    • کلید محلی:: >:: جایگزین کنید
  • ویژگی "const" که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در توابع استفاده می شود:
    • rc::ضعیف::جدید
    • همگام سازی::ضعیف::جدید
    • NonNull::as_ref
  • کامپایلر ضبط اطلاعات نسخه را در بخش ".comment"، مشابه GCC و Clang فراهم می کند.
  • سطح سوم پشتیبانی برای پلتفرم های aarch64-unknown-teeos، csky-unknown-linux-gnuabiv2، riscv64-linux-android، riscv64gc-unknown-hermit، x86_64-unikraft-linux-musl و x86_64-unknown-linux پیاده سازی شده است. -اوهوس سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی یا بررسی اینکه آیا کد قابل ساخت است یا خیر.
  • دومین سطح پشتیبانی از پلتفرم هدف wasm32-wasi-preview1-threads پیاده سازی شده است. سطح دوم پشتیبانی شامل ضمانت مونتاژ است.

منبع: opennet.ru

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