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

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

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

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

  • د خپل سري اندازې د صفاتو لپاره د ځانګړتیاوو لپاره ملاتړ پلي شوی. پخوا، د ټولو عددي ارزښتونو لپاره د عمومي دندو تعریف کولو کې د ناتوانۍ له امله، معیاري کتابتون یوازې د 32 عناصرو په اندازې کې د صفونو لپاره جوړ شوی ځانګړتیا مالتړ چمتو کړی (د هرې اندازې ځانګړتیاوې په ثابت ډول تعریف شوي). د کانسټ جنریکس فعالیت رامینځته کولو څخه مننه ، دا ممکنه شوه چې د هرې اندازې اندازې لپاره عمومي افعال تعریف کړئ ، مګر دا لاهم د ژبې مستحکم ځانګړتیاو کې ندي شامل شوي ، که څه هم دوی په کمپیلر کې پلي شوي او اوس په معیاري کتابتون کې کارول کیږي. د هر ډول اندازې صف ډولونو لپاره.
    د مثال په توګه، په Rust 1.47 کې لاندې جوړونه به د صف محتويات چاپ کړي، که څه هم مخکې به دا د تېروتنې پایله وه:

fn main() {
اجازه راکړئ xs = [0; ۳۴] ;
println!("{:?}", xs);
}

  • په بیړني حالتونو کې د لنډو نښو (بیکټریس) محصول چمتو کول. هغه عناصر چې په ډیری حاالتو کې د علاقې وړ ندي ، مګر محصول ګډوډ کوي او د ستونزې له لومړني لاملونو څخه پاملرنه راجلبوي ، له ټریس څخه ایستل شوي. د بشپړ ټریس بیرته راستنیدو لپاره، تاسو کولی شئ د چاپیریال متغیر "RUST_BACKTRACE=full" وکاروئ. د مثال په توګه، د کوډ لپاره

fn main() {
ورخطايي!()؛
}

پخوا، ټریس په 23 مرحلو کې تولید شوی و، مګر اوس به دا 3 مرحلو ته راټیټ شي، تاسو ته اجازه درکوي چې سمدستي جوهر وپیژنئ:

تار 'مین' په 'ښکاره ویره' کې ډار شوی، src/main.rs:2:5
stack backtrace:
0: std:: ډارېدل::begin_panic
په /rustc/d…d75a/library/std/src/panicking.rs:497
1: د لوبې ډګر:: اصلي
په ./src/main.rs:2
2: core::ops::function::FnOnce::call_once
په /rustc/d…d75a/library/core/src/ops/function.rs:227

  • د rustc کمپیلر د LLVM 11 په کارولو سره د جوړولو لپاره تازه شوی (Rust د کوډ تولید لپاره LLVM د بیک انډ په توګه کاروي). په ورته وخت کې، د زوړ LLVM سره د جوړولو وړتیا، تر 8 نسخه پورې، ساتل کیږي، مګر د ډیفالټ له مخې (په rust-lang/llvm-project کې) LLVM 11 اوس کارول کیږي. په راتلونکي کې د LLVM 11 خوشې کیدو تمه کیږي. ورځې
  • په وینډوز پلیټ فارم کې ، د rustc کمپیلر د کنټرول جریان بشپړتیا چیکونو (کنټرول فلو ګارډ) فعالولو لپاره ملاتړ چمتو کوي ، د "-C کنټرول فلو-ګارډ" بیرغ په کارولو سره فعال شوی. په نورو پلیټ فارمونو کې دا بیرغ د اوس لپاره له پامه غورځول شوی.
  • د API یوه نوې برخه باثباته کټګورۍ ته لیږدول شوې ، پشمول د مستحکم شناخت::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU او f64::TAU.
  • د "const" خاصیت، کوم چې د ثابتو پر ځای په هر شرایطو کې د کارولو امکان ټاکي، په میتودونو کې کارول کیږي:
    • له صفر پرته د ټولو عددونو لپاره نوی؛
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub او saturating_mul د ټولو عددونو لپاره؛
    • is_ascii_alphabetic، is_ascii_uppercase، is_ascii_lowercase، is_ascii_alphanumeric، is_ascii_digit، is_ascii_hexdigit، is_ascii_punctuation، is_ascii_graphic، is_ascii_whitescii_contypes and is for charascii_cont8.
  • د FreeBSD لپاره، د FreeBSD 11.4 څخه اوزار کټ کارول کیږي (FreeBSD 10 د LLVM 11 ملاتړ نه کوي).

څخه اخیستل شوی opennet.ru

سرچینه: linux.org.ru

Add a comment