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

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

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

مکيه جدت:

  • خاصيت کي استعمال ڪندي ساختن (struct) ۽ انگن اکرن کي نشان لڳائڻ جي صلاحيت شامل ڪئي وئي (اينم ويرينٽ بلاڪ سان) "#[غير_مڪمل]"، ڪھڙي اها ڳالهه جي اجازت ڏئي مستقبل ۾، نوان شعبا ۽ اختيار شامل ڪريو اعلان ڪيل جوڙجڪ ۽ ڳڻپ ۾. مثال طور، ماڊلز جا ڊولپر جيڪي عوامي طور تي اعلان ڪيل شعبن سان ٺهيل آهن اهي "#[non_exhaustive]" استعمال ڪري سگهن ٿا انهن ساختن کي نشانو بڻائڻ لاءِ جن ۾ مستقبل ۾ نوان شعبا شامل ڪيا ويندا. هينئر تائين، هن صورتحال ۾، ڊولپر کي مجبور ڪيو ويو ته اعلان ڪيل شعبن جي وچ ۾ پرائيويٽ طور تي اعلان ڪرڻ ۽ فيلڊ جي هڪ ناقابل قابل فهرست لسٽ کي پابند ڪرڻ. نئون وصف هن حد کي هٽائي ٿو ۽ توهان کي اجازت ڏئي ٿو ته اڳ ۾ مرتب ٿيل خارجي ڪوڊ کي ٽوڙڻ جي خطري کان سواءِ مستقبل ۾ نوان شعبا شامل ڪريو. ڪرٽ پيڪيجز ۾، جڏهن ”ميچ“ سيڪشن ۾ اختيارن کي ملائيندي، ماسڪ جي هڪ واضح تعريف جي ضرورت آهي “_ => {...}”، ممڪن مستقبل جي شعبن کي ڍڪيندي، ٻي صورت ۾ نئين فيلڊ شامل ڪرڻ وقت هڪ غلطي ظاهر ٿيندي.
  • شامل ڪيو ويو هڪ قسم جي حوالي سان پروسيسر ميڪرو mac!() کي سڏڻ جي صلاحيت. مثال طور، توھان ھاڻي لکي سگھو ٿا "Type Foo = expand_to_type!(bar);" جيڪڏھن "expand_to_type" ھڪ پروسيجرل ميڪرو آھي.
  • "extern { ... }" بلاڪ ۾ شامل ڪيو ويو طريقيڪار ۽ خاصيت ميڪرو استعمال ڪرڻ جي صلاحيت، بشمول "bang!()" macros، مثال طور:

    macro_rules! make_item { ($name:ident) => { fn $name(); } }

    ٻاهرين {
    make_item!(alpha);
    make_item!(beta);
    }

    ٻاهرئين "سي" {
    #[my_identity_macro] fn foo();
    }

  • ميڪرو ۾ لاڳو ڪيو ويو "macro_rules!" پيدا ڪرڻ جي صلاحيت. ٺاهي رهيو آهي "macro_rules!" ممڪن آهي ٻنهي ۾ فنڪشن-جهڙوڪ ميڪرو (“mac!()”) ۽ macros ۾ خاصيتن جي صورت ۾ (“#[mac]”).
  • $m ۾: ميٽا ميپنگ عنصر شامل ڪيو ويو صوابديدي ٽوڪن جي ڳڻپ جي قدرن جي حمايت (“[TOKEN_STREAM]”، “{TOKEN_STREAM}” ۽ “(TOKEN_STREAM)”)، مثال طور:

    macro_rules! accept_meta { ($m:meta) => {} }
    قبول_ميٽا! (منهنجو:: رستو)؛
    accept_meta!( my::path = "light" );
    accept_meta!( my::path (abc) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( my::path { abc } );

  • Rust 2015 موڊ ۾، غلطي جي پيداوار کي فعال ڪيو ويو آهي انهن مسئلن جي نشاندهي ڪن جڏهن اين ايل ايل (نان ليڪسيڪل لائيف ٽائيم) ٽيڪنڪ استعمال ڪندي متغيرن جي قرضن جي جانچ ڪندي (قرض چيڪ ڪندڙ). اڳي، ڊيڄاريندڙن کي غلطي سان تبديل ڪيو ويو آهي جڏهن Rust 2018 موڊ ۾ هلندي.
    تبديلي کان پوء وڌايو ويو Rust 2015 موڊ، ڊولپر آخرڪار قابل ٿي ويا جان ڇڏايو پراڻي قرض چيڪ ڪندڙ کان.

    اچو ته ياد رکون ته هڪ نئين ميکانيزم تي مبني تصديق واري نظام قرضن جي متغيرن جي زندگيءَ کي مدنظر رکندي ڪجهه مسئلن کي سڃاڻڻ ممڪن بڻائي ڇڏيو آهي جيڪي پراڻي تصديق واري ڪوڊ کان اڻڄاڻ هئا. جيئن ته اهڙين چيڪن لاءِ غلطي جي پيداوار اڳئين ڪم ڪندڙ ڪوڊ سان مطابقت کي متاثر ڪري سگهي ٿي، ڊيڄاريندڙ شروعاتي طور تي غلطين جي بدران جاري ڪيا ويا.

  • "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، is_power_of_two فنڪشن لاء استعمال ڪيو ويندو آهي (غير دستخط ٿيل عددن لاء).
  • API جو هڪ نئون حصو مستحڪم ڪيٽيگري ۾ منتقل ڪيو ويو آهي، جنهن ۾ todo!() macro ۽ سلائس::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value، طريقن کي مستحڪم ڪيو ويو آهي.
    آپشن::as_deref، آپشن::as_deref_mut، آپشن::flatten، UdpSocket::peer_addr، {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_f32, f64}::from_be_bytes، {f32,f64}::from_le_bytes، ۽ {f32,f64}::from_ne_bytes.

  • پئڪيج مئنيجر سامان ۾
    لاڳو ڪيو ويو ڊسڪ تي ڪيشنگ ڪمپلر ڊيڄاريندڙ. "ڪارگو ميٽاداٽا" اختيار کي شامل ڪيو ويو "ڪارگو ميٽا ڊيٽا" ڪمانڊ ۾فلٽر پليٽ فارم"صرف مخصوص ٽارگيٽ پليٽ فارم تي پابند پيڪيجز ڏيکارڻ لاء انحصار حل ڪالمن ۾. شامل ڪيو ويو http.ssl-version configuration option to definite TLS ورجن.
    سيڪشن کي شايع ڪرڻ جي صلاحيت شامل ڪئي وئي "dev-انحصاربغير وضاحت ڪرڻ جي "نسخ" ڪيچ.

  • rustc مرتب ڪندڙ ٽارگيٽ پليٽ فارمن لاءِ ٽئين سطح جي مدد فراهم ڪري ٿو thumbv7neon-unknown-linux-musleabihf، aarch64-unknown-none-softfloat، mips64-unknown-linux-muslabi64 ۽ mips64el-unknown-linux-muslabi64. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر سرڪاري عمارتن جي خودڪار جاچ ۽ اشاعت کان سواء.

جو ذريعو: opennet.ru

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