Rust 1.36 پروگرامنگ ٻولي رليز

شايع ٿيل سسٽم پروگرامنگ ٻولي ڇڏڻ مورچا 1.36، Mozilla پروجيڪٽ پاران ٺهرايو ويو. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي، خودڪار ميموري مئنيجمينٽ مهيا ڪري ٿي، ۽ گاربيج ڪليڪٽر يا رن ٽائم استعمال ڪرڻ کان سواءِ اعليٰ ڪم جي برابري حاصل ڪرڻ جو وسيلو مهيا ڪري ٿي.

رسٽ جو خودڪار ميموري مئنيجمينٽ ڊولپر کي پوائنٽر مينيپوليشن کان آزاد ڪري ٿو ۽ گھٽ سطح جي ميموري مينيپوليشن کان پيدا ٿيندڙ مسئلن کان بچائي ٿو، جهڙوڪ مفت ميموري رسائي، نول پوائنٽر ڊيريفرنس، بفر اووررن، ۽ ان وانگر. لائبريرين کي ورهائڻ، اسيمبليءَ کي يقيني بڻائڻ ۽ پروجيڪٽ پاران انحصار کي منظم ڪرڻ لاءِ هڪ پيڪيج مئنيجر تيار ڪيو پيو وڃي. جهازن، توهان کي هڪ ڪلڪ ۾ پروگرام لاءِ گهربل لائبريريون حاصل ڪرڻ جي اجازت ڏئي ٿي. هڪ مخزن کي ميزباني لائبريرين جي مدد ڪئي وئي آهي crates.io.

مکيه جدت:

  • خاصيت کي مستحڪم ڪيو ويو مستقبل، جيڪو هڪ قدر جي نمائندگي ڪري ٿو جنهن جي تشخيص اڃا تائين مڪمل نه ٿي سگھي ٿي جڏهن async / .await بلاڪ استعمال ڪندي. مستقبل جي استعمال سان بيان ڪيل غير مطابقت واري قدر ان سلسلي ۾ ڪارائتو ڪم جاري رکڻ کي ممڪن بڻائي ٿو، جڏهن ته هڪ ئي وقت ۾ هڪ خاص قدر جي حسابن جي مڪمل ٿيڻ جي انتظار ۾؛
  • لائبريري مستحڪم ٿي وئي مختص، جيڪو ياداشت جي مختص ڪيل قدرن کي منظم ڪرڻ لاءِ سمارٽ پوائنٽر ۽ مجموعا فراهم ڪري ٿو. std ۾ ميموري مختص هاڻي قسم استعمال ڪري ٿي ويڪ، جيڪي alloc مان ٻيهر برآمد ڪيا ويا آهن. alloc جو الڳ استعمال انهن ايپليڪيشنن ۾ معنيٰ رکي ٿو جيڪي std سان نه جڙيل آهن (“#![no_std]”)، انهي سان گڏ لائبريرين ۾ جيڪي std کان سواءِ ساڳي پروگرامن ۾ استعمال لاءِ ٺهيل آهن؛
  • قدرن جي صحيح شروعات لاءِ چيڪن کي نظرانداز ڪرڻ لاءِ تجويز ڪيل وچولي قسم ٿي سگهي ٿو يونٽ, جنهن کي استعمال ڪري سگهجي ٿو بدران mem::uninialized function کي محفوظ متبادل طور. mem::uninitialized فعل آسان آھي جلدي ترتيب ڏيڻ لاءِ، پر اھو ڪمپائلر کي گمراھ ڪري ٿو ڇاڪاڻ ته اھو لڳي ٿو ته ان جي شروعات ڪئي وئي آھي، پر حقيقت ۾ قدر غير شروع ٿيل رھي ٿي. MaybeUninit توهان کي واضح طور تي ڪمپلر ڏانهن اشارو ڪرڻ جي اجازت ڏئي ٿو ته قيمت غير شروع ٿيل آهي، انهي سان لاڳاپيل ممڪن غير بيان ڪيل رويي کي حساب ۾ رکڻ لاء، ۽ "شايد_t:" ذريعي پروگرامن ۾ چيڪن کي منظم ڪرڻ ۽ قدم قدم جي شروعات، ان جي مڪمل ٿيڻ جي نشاندهي ڪندي. استعمال ڪندي “.assume_init()” ڪال. MaybeUninit جي آمد سان، mem::uninitialized فنڪشن کي ختم ڪيو ويو آهي ۽ استعمال لاء سفارش نه ڪئي وئي آهي؛
  • NLL (Non-Lexical Lifetimes) ٽيڪنڪ، جنهن سسٽم کي وڌايو ويو قرضن جي زندگي گذارڻ جي رڪارڊنگ لاءِ، Rust 2015 ٻوليءَ لاءِ مستحڪم ڪيو ويو آهي (شروع ۾، NLL صرف Rust 2018 پاران سپورٽ ڪئي وئي هئي). ليڪسيڪل سطح تي زندگي گذارڻ جي بدران، اين ايل ايل ايگزيڪيوشن فلو گراف ۾ پوائنٽرز جي سيٽ جي سطح تي ائين ڪري ٿو. اهو طريقو توهان کي متغيرن جي قرضن جي چڪاس جي معيار کي وڌائڻ جي اجازت ڏئي ٿو (قرض چيڪ ڪندڙ) ۽ ڪجهه قسمن جي صحيح ڪوڊ جي عمل جي اجازت ڏئي ٿو، جنهن جو استعمال اڳ ۾ ئي غلطي جو سبب بڻيو. نئون رويو پڻ ڊيبگنگ کي تمام آسان بڻائي ٿو.
  • ايسوسيئيٽو صفن جو نئون نفاذ شامل آهي هش ميپ، ساخت جي ايپليڪيشن جي بنياد تي سوئس ٽيبل (خودڪار طور تي لوڊ ٿيل hashbrown::HashMap، جيستائين واضح طور تي ٻي صورت ۾ بيان نه ڪيو وڃي، جهڙوڪ std::HashMap، جيڪو SipHash 1-3 تي ٻڌل آهي). سافٽ ويئر انٽرفيس ساڳيو ئي رهي ٿو، ۽ ڊولپر کي نمايان فرق ڪارڪردگي وڌائڻ ۽ ياداشت جي گھٽتائي کي گھٽائي ٿو؛
  • پئڪيج مئنيجر سامان ۾ شامل ڪيو ويو "--آف لائن" اختيار، جيڪو نيٽ ورڪ تائين رسائي جي بغير آپريشن کي چالو ڪري ٿو، جنهن ۾ صرف مقامي سسٽم ۾ ڪيش ٿيل پيڪيجز استعمال ڪيا ويندا آهن جڏهن انحصار کي نصب ڪيو وڃي. جيڪڏهن انحصار مقامي ڪيش ۾ نه آهي، هڪ غلطي اڇلائي ويندي. آف لائن وڃڻ کان اڳ مقامي ڪيش ۾ انحصار کي اڳ لوڊ ڪرڻ لاءِ، توھان استعمال ڪري سگھو ٿا ”ڪارگو آڻڻ“ ڪمانڊ؛
  • ميڪرو کي "dbg!" سڏڻ جي صلاحيت کي لاڳو ڪيو. ڪيترن ئي دليلن جو اشارو؛
  • "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، طريقن لاء استعمال ڪيو ويندو آهي
    لي آئوٽ::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::Dangling and
    NonNull ::cast؛

  • APIs جو ھڪڙو نئون حصو مستحڪم درجي ڏانھن منتقل ڪيو ويو آھي، جن ۾ طريقا شامل آھن جيڪي مستحڪم ڪيا ويا آھن
    ٽاسڪ:: ويڪر، ڪم:: پول،
    VecDeque::rotate_left، VecDeque::rotate_right،
    پڙهو::read_vectored، لکو::write_vectored،
    نقل ڪندڙ:: نقل،
    BorrowMut (strings لاءِ) ۽ str::as_mut_ptr.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو