Rust 1.66 د پروګرام کولو ژبې خپرول

د Rust 1.66 عمومي هدف پروګرام کولو ژبې خپرول، چې د موزیلا پروژې لخوا تاسیس شوی، مګر اوس د خپلواک غیر انتفاعي موسسې Rust Foundation تر څارنې لاندې رامینځته شوی، خپور شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي او د لوړې دندې موازي کولو لپاره وسیلې چمتو کوي پداسې حال کې چې د کثافاتو راټولونکي او رن ټایم کارولو څخه مخنیوی کوي (د چلولو وخت د معیاري کتابتون لومړني پیل او ساتنې ته کم شوی).

د زنګ د حافظې اداره کولو میتودونه پرمخ وړونکي د خطا څخه ژغوري کله چې د پوائنټرونو مینځل کیږي او د هغو ستونزو په وړاندې ساتنه کوي چې د ټیټې کچې حافظې اداره کولو له امله رامینځته کیږي ، لکه د حافظې ساحې ته لاسرسی وروسته له دې چې خلاص شو ، د نول پوائنټرونو ته اشاره کول ، د بفر اوورونونه او نور. د کتابتونونو توزیع کولو، جوړونه چمتو کول او د انحصارونو اداره کول، پروژه د کارګو پیکج مدیر ته وده ورکوي. د crates.io ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي.

د حافظې خوندیتوب د تالیف په وخت کې په زنګ کې د حوالې چیک کولو له لارې چمتو کیږي ، د شیانو ملکیت تعقیب ساتل ، د څیز ژوند وخت (سکوپس) ساتل ، او د کوډ اجرا کولو پرمهال د حافظې لاسرسي سموالي ارزول. زنګ د انټیجر د زیاتیدو پروړاندې محافظت هم چمتو کوي ، د کارونې دمخه د متغیر ارزښتونو لازمي ابتکار ته اړتیا لري ، په معیاري کتابتون کې خطاګانې په ښه توګه اداره کوي ، د ډیفالټ لخوا د بدلیدونکي حوالې او متغیر مفهوم پلي کوي ، د منطقي غلطیو کمولو لپاره قوي جامد ټایپ وړاندیز کوي.

اصلي نوښتونه:

  • په شمیرنو کې د عددي نمایندګیو سره (د "#[repr(Int)]" خاصیت)، د تبعیض څرګندې نښې (په شمیر کې متغیر شمیره) ته اجازه ورکول کیږي، حتی که شمیرنه ساحې ولري. #[repr(u8)] enum Foo {A(u8)، # تبعیض کوونکی 0 B(i8)، # تبعیض کوونکی 1 C(bool) = 42، # تبعیض کوونکی 42 }
  • د فنکشن کور:: hint::black_box اضافه شوی کوم چې په ساده ډول ترلاسه شوي ارزښت بیرته راګرځوي. څرنګه چې تالیف کونکی فکر کوي چې دا فنکشن یو څه کوي، د بلیک_بکس فنکشن د لوپونو لپاره د کمپیلر اصلاح غیر فعالولو لپاره کارول کیدی شي کله چې د کوډ فعالیت ازموینې ترسره کوي یا د تولید شوي ماشین کوډ معاینه کوي (د دې لپاره چې تالیف کونکی کوډ غیر کارول شوی وګڼي او لرې یې کړي). د مثال په توګه، په لاندې مثال کې، black_box(v.as_ptr()) کمپیلر د دې فکر کولو مخه نیسي چې ویکتور v نه کارول کیږي. std::hint::black_box وکاروئ؛ fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • د "کارګو" کڅوړې مدیر د "لیرې کولو" کمانډ وړاندیز کوي ، کوم چې تاسو ته اجازه درکوي د کمانډ لاین څخه د Cargo.toml منشور څخه انحصار لرې کړئ.
  • د API یوه نوې برخه د ثبات کټګورۍ ته لیږدول شوې، په شمول د ځانګړتیاوو میتودونه او پلي کول ثبات شوي دي:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{لومړی، وروستی، پاپ_لومړی، پاپ_لاسټ}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • د WASI کارولو پر مهال د stdio لاک ډولونو لپاره د AsFd تطبیقات اضافه کړئ.
    • impl هڅه وکړئ > د بکس لپاره<[T; ن]>
    • core::hint::black_box
    • موده:: try_from_secs_{f32,f64}
    • اختیار:: unzip
    • std::os::fd
  • سلسلې "..X" او "..=X" په ټیمپلیټونو کې اجازه لري.
  • کله چې د rustc کمپیلر مخکینۍ پای او د LLVM بیکینډ جوړول، LTO (د لینک وخت اصلاح کول) او BOLT (د بائنری اصلاح او ترتیب وسیله) د اصلاح کولو طریقې د پایلې کوډ فعالیت زیاتولو او د حافظې مصرف کمولو لپاره کارول کیږي.
  • د armv5te-none-eabi او thumbv5te-none-eabi پلیټ فارمونو لپاره د XNUMX کچې ملاتړ پلي شوی. دریمه کچه بنسټیز ملاتړ معنی لري، مګر د اتوماتیک ازموینې پرته، د رسمي ودانیو خپرول او د کوډ جوړولو وړتیا چک کول.
  • د macOS جنریک کتابتونونو سره د لینک کولو لپاره ملاتړ اضافه شوی.

سربیره پردې ، موږ کولی شو د زنګ ژبې (gccrs) د مخکني پای تالیف کونکي GCC کوډبیس کې شاملول یادونه وکړو. فرنټ اینډ د GCC 13 څانګې کې شامل دی، کوم چې به د می په 2023 کې خپور شي. د GCC 13 سره پیل کول، د GCC معیاري وسیلې کټ به د دې وړتیا ولري چې د LLVM پرمختګونو په کارولو سره جوړ شوي د Rustc کمپیلر نصبولو اړتیا پرته د زنګ برنامو تالیف کولو لپاره وکارول شي. په GCC 13 کې د زنګ پلي کول به د بیټا حالت کې وي ، د ډیفالټ لخوا نه فعال شوي.

سرچینه: opennet.ru

Add a comment