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

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

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

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

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

    د مثال په توګه، په 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 ( زنګ کاروي LLVM لپاره د شالید په توګه کوډ تولید). په ورته وخت کې، د زړو LLVMs سره د جوړولو وړتیا، تر 8 نسخه پورې، ساتل کیږي، مګر په ډیفالټ (په rust-lang/llvm-project) اوس LLVM 11 کاروي. LLVM 11 تمه کیږي چې په راتلونکو ورځو کې خپور شي.
  • په وینډوز پلیټ فارم کې ، د rustc کمپیلر د کنټرول جریان بشپړتیا چیکونو (کنټرول فلو ګارډ) فعالولو لپاره ملاتړ چمتو کوي ، د "-C کنټرول فلو-ګارډ" بیرغ په کارولو سره فعال شوی. په نورو پلیټ فارمونو کې دا بیرغ د اوس لپاره له پامه غورځول شوی.
  • د APIs نوې برخه باثباته کټګورۍ ته لیږدول شوې، په شمول ثبات
    پیژندنه::نوی_را،
    سلسله::is_empty,
    رینج ټول شموله::is_empty,
    پایله:: as_deref,
    پایله:: as_deref_mut,
    Vec:: لیک،
    اشاره کوونکی::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.
  • د وړیاBSD لپاره ښکیل د FreeBSD 11.4 څخه اوزار کټ (FreeBSD 10 د LLVM 11 ملاتړ نه کوي).

سرچینه: opennet.ru

Add a comment