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

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

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

مکيه جدت:

  • مستحڪم "async" فنڪشن، async move {... } block، ۽ ".await" آپريٽر جي بنياد تي هڪ نئون اسيئنڪرونس پروگرامنگ نحو، جيڪو هينڊلر لکڻ آسان بڻائي ٿو جيڪي مين ڪمانڊ فلو کي بلاڪ نٿا ڪن. اڳ ۾ پيش ڪيل API جي مقابلي ۾ asyncronous I/O لاءِ، async/.await تعميرات سمجھڻ لاءِ سادو، تمام پڙھڻ لائق، ۽ توھان کي لوپ، مشروط بيانن، ۽ استثناءَ جي بنياد تي واقف فلو ڪنٽرول ٽيڪنڪ استعمال ڪندي پيچيده اسيئنڪرونس رابطي کي لاڳو ڪرڻ جي اجازت ڏين ٿا.

    Async-await نحو توهان کي فنڪشن ٺاهڻ جي اجازت ڏئي ٿو جيڪي انهن جي عملدرآمد کي روڪي سگهن ٿا، ڪنٽرول کي مکيه سلسلي ڏانهن واپس آڻين، ۽ پوء ٻيهر عمل شروع ڪري سگھن ٿا جتان اهي ڇڏي ويا آهن. مثال طور، I/O کي پروسيس ڪرڻ وقت اهڙي روڪ جي ضرورت هوندي آهي، جنهن ۾ ڊيٽا جي ايندڙ حصي جي اچڻ جي انتظار ۾ ٻيو ڪم ڪري سگهجي ٿو. "async fn" ۽ "async move" سان بيان ڪيل ڪم ۽ بلاڪ هڪ خاصيت واپس ڪن ٿا مستقبل، جيڪو هڪ ملتوي غير مطابقت واري حساب جي نمائندگي کي بيان ڪري ٿو. توھان سڌي طرح شروع ڪري سگھو ٿا ملتوي ڪيل حساب ۽ نتيجو حاصل ڪري ”.await“ آپريٽر استعمال ڪندي. ڪا به ڪارروائي نه ڪئي وئي آهي يا اڳ ۾ رٿابندي ڪئي وئي آهي جيستائين .await سڏيو وڃي ٿو، اضافي اوور هيڊ کان سواءِ پيچيده nested تعميرات کي ٺاهڻ جي اجازت ڏئي ٿو.

    async fn first_function() -> u32 {.. }
    ...
    مستقبل ڏيو = پهريون_ فنڪشن ()؛
    ...
    نتيجو ڏيو: u32 = مستقبل، انتظار؛

  • مستحڪم "#!"حرڪت" ٽيمپليٽس ۾ ۽ انهن متغيرن جا حوالا استعمال ڪريو اظهار جي "جيڪڏهن" سيڪشن ۾ميچ". مثال طور، هيٺيون تعميرات هاڻي اجازت ڏني وئي آهي:

    fn main() {
    let array: Box<[u8; 4]> = دٻو::نئون([1, 2, 3, 4]);

    ملندڙ صف {
    تعداد
    جيڪڏهن nums.iter().sum::() == 10

    => {
    ڦوٽو (نمبر)؛
    }
    _ => ناقابل رسائ!(),
    }
    }

  • اشارو اجازت ڏني خاصيتون جڏهن فنڪشن پيٽرولر، بندش، ۽ فنڪشن پوائنٽر جي وضاحت ڪريو. مشروط تاليف جون خاصيتون (cfg, cfg_attr) جيڪي تشخيص کي ڪنٽرول ڪن ٿيون lint (اجازت ڏيڻ، ڊيڄارڻ، انڪار ڪرڻ ۽ منع ڪرڻ) ۽ معاون ميڪرو ڪالنگ خاصيتون معاون آهن.

    fn لين (
    #[cfg(ونڊوز)] سلائس: &[u16]، // ونڊوز تي پيٽرول استعمال ڪريو
    #[cfg(not(windows))] سلائس: &[u8]، // ٻين او ايس ۾ استعمال ڪريو
    ) -> استعمال ڪريو {
    slice.len()
    }

  • NLL (Non-Lexical Lifetimes) ٽيڪنڪ استعمال ڪندي متغيرن جي قرضن جي جانچ ڪرڻ دوران مسئلن جي نشاندهي ڪرڻ بابت خبرداريون (قرض چيڪ ڪندڙ)، ترجمو موتمار غلطين جي درجي ۾. اچو ته ياد رکون ته تصديق واري نظام جي بنياد تي هڪ نئين ميکانيزم جي بنياد تي قرضن جي متغيرن جي زندگيءَ کي مدنظر رکندي ڪجهه مسئلن جي نشاندهي ڪرڻ ممڪن بڻائي ٿي، جيڪي پراڻي تصديق واري ڪوڊ کان اڻڄاڻ هئا. جيئن ته اهڙين چيڪن لاءِ غلطي جي پيداوار اڳئين ڪم ڪندڙ ڪوڊ سان مطابقت کي متاثر ڪري سگهي ٿي، ڊيڄاريندڙ شروعاتي طور تي غلطين جي بدران جاري ڪيا ويا. ڊيڄاريندڙن کي هاڻي غلطي سان تبديل ڪيو ويو آهي جڏهن Rust 2018 موڊ ۾ هلندي. ايندڙ رليز ۾، غلطي جي پيداوار پڻ لاڳو ڪئي ويندي Rust 2015 موڊ ۾، جيڪو آخرڪار پراڻي قرض جي چڪاس کان نجات حاصل ڪندو.
  • "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، ڪم لاء استعمال ڪيو ويندو آهي Vec::new، String::new، LinkedList::new، str::len، [T]::len str::as_bytes،
    abs, wrapping_abs ۽ overflowing_abs؛

  • APIs جو ھڪڙو نئون حصو مستحڪم درجي ڏانھن منتقل ڪيو ويو آھي، جن ۾ طريقا شامل آھن جيڪي مستحڪم ڪيا ويا آھن
    Pin::into_inner، Instant::checked_duration_since ۽ Instant::saturating_duration_since؛

  • ڪارگو پيڪيج مئنيجر کي هاڻي استعمال ڪرڻ جي صلاحيت آهي “.toml” ايڪسٽينشن کي ترتيب ڏيڻ واري فائلن لاءِ. شامل ڪيل ابتدائي سپورٽ معياري لائبريري جي تعمير لاءِ سڌو ڪارگو کان. شامل ڪيو ويو "--workspace" جھنڊو، تڪراري "--all" پرچم کي تبديل ڪندي. ميٽاڊيٽا ۾ هڪ نئون ميدان شامل ڪيو ويو آهي "شايع ڪريو"، جيڪو توهان کي گٽ ٽيگ ۽ ورزن نمبر جي وضاحت ڪندي انحصار شايع ڪرڻ جي اجازت ڏئي ٿو. شامل ڪيل ٽيسٽ آپشن "-Ztimings" مختلف تاليف جي مرحلن جي عمل جي وقت جي HTML رپورٽ تيار ڪرڻ لاءِ.
  • rustc compiler ۾، تشخيصي پيغامن ۾ ڪوڊ جي دم کي تراشڻ شامل آهي جيڪو ٽرمينل ۾ نه ٿو اچي. ھدف جي پليٽ فارمن لاء مدد جي ٽئين سطح مهيا ڪئي
    i686-unknown-uefi ۽ sparc64-اڻڄاتل-اوپن بي ايس ڊي. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر سرڪاري عمارتن جي خودڪار جاچ ۽ اشاعت کان سواء.

جو ذريعو: opennet.ru

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