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

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

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

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

  • د اوږدې مودې له منځه وړل نیمګړتیا کله چې د انټیجرونو او فلوټینګ پوائنټ شمیرو ترمینځ تبادلې ترسره کوئ. څرنګه چې د زنګ کمپیلر LLVM د بیک انډ په توګه کاروي، د ډول تبادلې عملیات د LLVM منځګړی کوډ لارښوونو له لارې ترسره شوي لکه fptoui، کوم چې یو د پام وړ ځانګړتیا لري - نا تعریف شوی چلند که چیرې پایله شوې ارزښت د هدف ډول سره مناسب نه وي. د مثال په توګه، کله چې د فلوټ ارزښت 300 د f32 ډول سره د انټیجر ډول u8 ته بدل کړئ، پایله غیر متوقعه ده او ممکن په مختلفو سیسټمونو کې توپیر ولري. ستونزه دا ده چې دا فیچر په کوډ کې ښکاري چې د "ناامنه" په توګه نه نښه کیږي.

    د Rust 1.45 پورې، د اندازې د اندازې د اندازې چلند په کلکه تنظیم شوی، او د "لکه" د تبادلې عملیات د اوور فلو لپاره معاینه کوي او مجبوروي چې ارزښت د هدف ډول اعظمي یا لږ تر لږه ارزښت ته بدل کړي (د مثال په توګه، د پورتنۍ بیلګې په توګه، ارزښت 300 به په 255 بدل شي). د دې ډول چکونو غیر فعالولو لپاره، اضافي API کالونه "{f64, f32}::to_int_unchecked" چمتو شوي، په ناامنه حالت کې کار کوي.

    fn cast(x: f32) -> u8 {
    x د u8 په توګه
    }

    fn main() {
    let too_big = 300.0 ;
    let too_small = -100.0 ;
    اجازه راکړئ nan = f32::NAN؛

    اجازه راکړئ x: f32 = 1.0;
    اجازه راکړئ y: u8 = ناامنه { x.to_int_unchecked() };

    println!("too_big_casted = {}", cast(too_big)); // محصول 255
    println!("too_small_casted = {}", cast(too_small)); // محصول 0
    println!("not_a_number_casted = {}", cast(nan)); // محصول 0
    }

  • د ثبات کارول پروسیجر میکرود فعالیت په څیر څرګندونې، ټیمپلیټونه، او بیانونه. پخوا، دا ډول میکرو په هر ځای کې نه ویل کیدی، مګر یوازې د کوډ په ځینو برخو کې (د جلا کال په توګه، د نورو کوډونو سره نه تړل شوي). د هغه لارې پراخول چې میکرو بلل کیدی شي، د دندو په څیر، د ویب چوکاټ کار کولو لپاره یو له اړتیاو څخه و. راکټ د زنګ په مستحکم خپرونو کې. مخکې، په راکټ کې د هینډلرونو په ټاکلو کې د اضافي انعطاف ترلاسه کولو لپاره د "proc_macro_hygiene" په نوم د تجربوي ځانګړتیا فعالولو ته اړتیا وه، کوم چې د زنګ په مستحکم نسخو کې شتون نلري. دا فعالیت اوس د ژبې مستحکم ریلیزونو کې جوړ شوی.
  • د رینج ارزښتونو تکرارولو لپاره د "چار" ډول سره د رینج کارولو اجازه ورکړل شوې (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    د ch لپاره په 'a'..='z' {
    چاپ!("{}", ch);
    }
    println!(); // به "abcdefghijklmnopqrstuvwxyz" چاپ کړي

  • د APIs نوې برخه باثباته کټګورۍ ته لیږدول شوې، په شمول ثبات
    Arc::as_ptr,
    BTreeMap::remove_entry,
    Rc::as_ptr,
    rc:: کمزوری:: as_ptr،
    rc:: کمزوری::from_raw،
    rc:: کمزوری:: په_را،
    str::strip_prefix,
    str::strip_sufix,
    همغږي:: کمزوری::as_ptr,
    همغږي:: کمزوری:: څخه_را،
    همغږي:: کمزوری:: په_را،
    چار:: UNICODE_VERSION
    Span::solved_at,
    سپان:: ځای پر ځای،
    Span::mixed_site,
    unix::process::CommandExt::arg0.

  • د rustc تالیف کونکي د "target-feature" بیرغ په کارولو سره د مختلف هدف پلیټ فارم ب featuresو د پورته کولو لپاره ملاتړ اضافه کړی ، د مثال په توګه ، "-C target-feature=+avx2, + fma". نوي بیرغونه هم اضافه شوي:
    د حادثې د اداره کولو ستراتیژۍ ته په پام سره، د غیر آرامۍ کال میزونو رامینځته کولو لپاره "force-unwind-tables"؛ "embed-bitcode" د کنټرول لپاره چې ایا LLVM بټکوډ په تولید شوي rlibs کې شامل دی. د "embed-bitcode" بیرغ په کارګو کې د ډیفالټ لخوا فعال شوی ترڅو د جوړیدو وخت او ډیسک ځای مصرف غوره کړي.

  • د mipsel-sony-psp او thumbv7a-uwp-windows-msvc پلیټ فارمونو لپاره د دریمې کچې ملاتړ چمتو شوی. په دریمه کچه کې بنسټیز ملاتړ شامل دی، مګر د اتوماتیک ازموینې او د رسمي ودانیو خپرولو پرته.

سربیره پردې، دا په پام کې نیول کیدی شي کیسه د ساده جوړولو په اړه غوښتنلیکونه د زنګ په ژبه کې، د سیسټم بوټلوډر کارول پیل کړئ او د عملیاتي سیسټم پر ځای په ځان کې بار بار کولو ته چمتو شئ.
مقاله په هغه لړۍ کې لومړۍ ده چې د تخنیکونو ښودلو ته وقف شوې چې د ټیټ کچې برنامې او OS پراختیا کې غوښتنې کې دي.

سرچینه: opennet.ru

Add a comment