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

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

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

مکيه جدت:

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

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

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

  • پروسيجرل ميڪرو استعمال ڪندي بيان ڪيل ڪسٽم خاصيتن ۾، ٽوڪن جي صوابديدي سيٽ استعمال ڪرڻ ممڪن آهي (“#[attr($tokens)]”، “#[attr[$tokens]] ۽ #[attr{$tokens}]”). اڳي، عناصر صرف هڪ وڻ/ريسرسي فارم ۾ بيان ڪري سگھجن ٿا اسٽرنگ لٽرلز استعمال ڪندي، مثال طور “#[foo(bar, baz(quux, foo = “bar”))]”، پر هاڻي اهو ممڪن آهي ته ڳڻپ استعمال ڪرڻ (' #[رينج(0. .10)]') ۽ تعميرات جھڙوڪ "#[bound(T: MyTrait)]"؛
  • TryFrom ۽ TryInto خاصيتن کي مستحڪم ڪيو ويو آهي، غلطي کي سنڀالڻ سان قسم جي تبديلين جي اجازت ڏئي ٿي. مثال طور، طريقن جهڙوڪ 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 کان اڳ هڪ هينڊلر جي عمل جي اجازت ڏئي ٿو جيڪو ٻار جي عمل جي حوالي سان عمل ڪيو ويو آهي فورڪ () ڪال کان پوء. اهڙين حالتن ۾، والدين جي عمل جا ڪجهه وسيلا، جهڙوڪ فائل بيان ڪندڙ ۽ ميپ ٿيل ياداشت وارا علائقا، نقل ٿي سگهن ٿا، جيڪي اڻڄاتل رويي ۽ لائبريرين جي غلط آپريشن جو سبب بڻجي سگهن ٿا.
    اڳي_exec جي بدران، ان کي استعمال ڪرڻ جي صلاح ڏني وئي آهي غير محفوظ فنڪشن CommandExt::pre_exec.

  • 8 کان 64 بِٽس جي سائيز ۾ مستحڪم دستخط ٿيل ۽ غير دستخط ٿيل ايٽمي انٽيجر جا قسم (مثال طور، AtomicU8)، ۽ گڏوگڏ دستخط ٿيل قسمون NonZeroI[8|16|32|54|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" بلڊ آپشن جي وضاحت ڪندي لنڪنگ اسٽيج تي اصلاحن کي چالو ڪرڻ جي صلاحيت شامل ڪئي وئي (rustc LLVM bitcode ۾ رسٽ ڪوڊ گڏ ڪري ٿو، جيڪو LTO اصلاحن کي لاڳو ڪرڻ جي اجازت ڏئي ٿو).

جو ذريعو: opennet.ru

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