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

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

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

مکيه جدت:

  • ڪارگو پيڪيج مئنيجر متبادل پيڪيج رجسٽري سان ڪم ڪرڻ لاءِ اوزار شامل ڪيا آھن جيڪي crates.io پبلڪ رجسٽري سان گڏ رھن ٿيون. مثال طور، ملڪيت جي ايپليڪيشنن جا ڊولپر ھاڻي پنھنجي ذاتي رجسٽري استعمال ڪري سگھن ٿا، جيڪي استعمال ڪري سگھجن ٿيون جڏھن انحصار کي لسٽ ڪريو Cargo.toml ۾، ۽ انھن جي پروڊڪٽس لاءِ crates.io سان ملندڙ ھڪ ورزننگ ماڊل لاڳو ڪريو، ۽ ان سان گڏ ٻئي ڪرٽس تي انحصار جو حوالو ڏيو. io ۽ توهان جي پنهنجي رجسٽري ڏانهن.

    ٻاهرين رجسٽري کي شامل ڪرڻ لاءِ .cargo/config ($HOME ۾ يا پيڪيج ڊاريڪٽري ۾ واقع)
    مهيا ڪيل سيڪشن "[رجسٽريز]"، ۽ هڪ خارجي رجسٽري استعمال ڪرڻ لاءِ، "رجسٽري" اختيار ظاهر ٿيو آهي هر انحصار جي وضاحت ۾ Cargo.toml. اضافي رجسٽري سان ڳنڍڻ لاءِ، صرف ~/.cargo/credentials فائل ۾ تصديق واري ٽوڪن کي رکو ۽ ڪمانڊ کي هلايو
    "ڪارگو لاگ ان --registry=my-registry" ۽ پيڪيج شايع ڪرڻ لاءِ -
    "ڪارگو پبلش -رجسٽري = منهنجي-رجسٽري"؛

  • "؟" آپريٽر استعمال ڪرڻ لاءِ مڪمل سپورٽ شامل ڪئي وئي. ٽيسٽن ۾ ڊاڪٽرن، توهان کي دستاويز مان مثال ڪوڊ استعمال ڪرڻ جي اجازت ڏئي ٿي ٽيسٽ طور. اڳوڻو آپريٽر
    "؟" صرف "fn main()" فنڪشن جي موجودگي ۾ يا "#[test]" فنڪشن جي موجودگي ۾ ٽيسٽ جي عمل جي دوران غلطي کي سنڀالڻ لاء استعمال ٿي سگهي ٿو.

  • ڪسٽم خاصيتن ۾ بيان ڪيل طريقيڪار ميڪرو استعمال ڪندي محفوظ ٽوڪن جي صوابديدي سيٽ استعمال ڪرڻ جي صلاحيت (“#[attr($tokens)]”، “#[attr[$tokens]] ۽ #[attr{$tokens}]”). اڳي، عناصر صرف هڪ وڻ/ريسرسي فارم ۾ بيان ڪري سگھجن ٿا اسٽرنگ لٽرلز استعمال ڪندي، مثال طور “#[foo(bar, baz(quux, foo = “bar”))]”، پر هاڻي اهو ممڪن آهي ته ڳڻپ استعمال ڪرڻ (' #[رينج(0. .10)]') ۽ تعميرات جھڙوڪ "#[bound(T: MyTrait)]"؛
  • مستحڪم قسم (خاصيت) کان ڪوشش ڪريو и ڪوشش ڪريو, غلطي سنڀالڻ سان قسم جي تبديلين جي اجازت ڏئي ٿي. مثال طور، طريقن جهڙوڪ from_be_bytes integer قسمن سان arrays کي انپٽ طور استعمال ڪيو ويندو آهي، پر ڊيٽا اڪثر ڪري Slice قسم ۾ ايندي آهي، ۽ arrays ۽ slices جي وچ ۾ تبديل ڪرڻ دستي طور تي ڪرڻ مشڪل آهي. نون خاصيتن جي مدد سان، مخصوص آپريشن فلائي تي ڪري سگھجي ٿو .try_into() تي ڪال ذريعي، مثال طور، “let num = u32::from_be_bytes(slice.try_into()؟)”. تبديلين لاءِ جيڪي هميشه ڪامياب ٿين ٿا (مثال طور، قسم u8 کان u32 تائين)، هڪ غلطي جو قسم شامل ڪيو ويو آهي غير محفوظ، شفاف استعمال جي اجازت
    TryFrom "منجانب" جي سڀني موجود عملن لاءِ؛

  • فنڪشن کي ختم ڪيو ويو آهي CommandExt ::before_exec، جنهن هڪ هينڊلر کي اجازت ڏني ته exec هلائڻ کان اڳ عمل ڪيو وڃي، جيڪو ٻار جي عمل جي سلسلي ۾ عمل ڪيو ويو هو fork() ڪال کان پوءِ. اهڙين حالتن ۾، والدين جي عمل جا ڪجهه وسيلا، جهڙوڪ فائل بيان ڪندڙ ۽ ميپ ٿيل ياداشت وارا علائقا، نقل ٿي سگهن ٿا، جيڪي اڻڄاتل رويي ۽ لائبريرين جي غلط آپريشن جو سبب بڻجي سگهن ٿا.
    اڳي_exec جي بدران غير محفوظ فنڪشن استعمال ڪرڻ جي صلاح ڏني وئي آهي CommandExt ::pre_exec.

  • 8 کان 64 بِٽس جي سائيز ۾ مستحڪم دستخط ٿيل ۽ غير دستخط ٿيل ايٽمي انٽيجر جا قسم (مثال طور، ايٽمي يو 8)، گڏوگڏ دستخط ٿيل قسم غير زيرو آءِ[8|16|32|64|128].
  • API جو هڪ نئون حصو مستحڪم درجي ۾ منتقل ڪيو ويو آهي، بشمول Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] ۽ SystemTime طريقن کي مستحڪم ڪيو ويو آهي ::checked_[add|sub]. iter::from_fn ۽ iter::successors افعال کي مستحڪم ڪيو ويو آهي؛
  • سڀني عددن جي قسمن لاء، چيڪ ٿيل_پاؤ، saturating_pow، wrapping_pow ۽ overflowing_pow طريقا لاڳو ڪيا ويا آھن؛
  • "-C linker-plugin-lto" بلڊ آپشن جي وضاحت ڪندي ڳنڍڻ واري مرحلي تي اصلاحن کي چالو ڪرڻ جي صلاحيت شامل ڪئي وئي.

جو ذريعو: opennet.ru

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