رسٽ 1.78 عام مقصدي پروگرامنگ ٻولي جو رليز، جيڪو Mozilla پروجيڪٽ پاران قائم ڪيو ويو، پر ھاڻي ترقي يافته غير منافع بخش تنظيم Rust Foundation جي سرپرستي ھيٺ، شايع ڪيو ويو آھي. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي ۽ گاربيج ڪليڪٽر ۽ رن ٽائم جي استعمال کان پاسو ڪندي اعليٰ نوڪري جي برابري حاصل ڪرڻ جا وسيلا مهيا ڪري ٿي (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).
رسٽ جي ميموري هينڊلنگ جا طريقا ڊولپر کي غلطين کان بچائيندا آهن جڏهن پوائنٽرز کي هٿي وٺرائيندا آهن ۽ انهن مسئلن کان بچائيندا آهن جيڪي گهٽ-سطح جي ميموري هينڊلنگ جي ڪري پيدا ٿيندا آهن، جهڙوڪ ميموري ايريا کي آزاد ٿيڻ کان پوءِ رسائي حاصل ڪرڻ، نول پوائنٽرز کي رد ڪرڻ، بفر اووررن وغيره وغيره. لائبريرين کي ورهائڻ، تعميرات مهيا ڪرڻ ۽ انحصار کي منظم ڪرڻ، پروجيڪٽ ڪارگو پيڪيج مينيجر کي ترقي ڪري ٿو. crates.io مخزن لائبريرين جي ميزباني لاءِ سپورٽ ڪئي وئي آهي.
ميموري حفاظت فراهم ڪئي وئي آهي زنگ واري وقت تي ريفرنس چيڪنگ ذريعي، اعتراض جي ملڪيت جي ٽريڪ رکڻ، اعتراض جي زندگين جي ٽريڪ رکڻ (اسڪوپس)، ۽ ڪوڊ جي عمل جي دوران ميموري رسائي جي صحيحيت جو جائزو وٺڻ. زنگ انٽيجر اوور فلوز جي خلاف پڻ تحفظ فراهم ڪري ٿو، استعمال ڪرڻ کان اڳ متغير قدرن جي لازمي شروعات جي ضرورت آهي، معياري لائبريري ۾ غلطين کي بهتر نموني سان سنڀاليندو آهي، ڊفالٽ طور ناقابل قابل حوالن ۽ متغيرن جي تصور کي لاڳو ڪري ٿو، منطقي غلطين کي گھٽائڻ لاءِ مضبوط جامد ٽائپنگ پيش ڪري ٿو.
مکيه جدت:
- ھڪڙو نئون وصف نالو اسپيس "#[diagnostic]" تجويز ڪيو ويو آھي، ھڪڙو وسيلو مهيا ڪري ٿو جيڪو ڪمپيلر پاران پيدا ڪيل غلطي پيغامن کي متاثر ڪري ٿو. نئين اسپيس ۾ پهريون آهي "#[diagnostic::on_unimplemented]" وصف، جيڪو استعمال ڪري سگهجي ٿو غلط پيغامن کي ترتيب ڏيڻ لاءِ جيڪو اهڙي صورتحال ۾ اڇلايو ويو آهي جتي توهان کي هڪ خاصيت استعمال ڪرڻ جي ضرورت آهي جيڪا قسم لاءِ لاڳو نه ڪئي وئي آهي. #[diagnostic::on_unimplemented( message = "My Message for `ImportantTrait<{A}>` `{Self}` لاءِ لاڳو ناهي ڪيو ويو، ليبل = "منهنجو ليبل"، نوٽ = "نوٽ 1"، نوٽ = "نوٽ 2" )] خصوصيت ImportantTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn main() { use_my_trait(String::new()); } error[E32]: منھنجو پيغام `Important Trait' لاءِ `String` -> src/main.rs:0277:32 | لاءِ لاڳو نه ڪيو ويو آهي 12 | use_my_trait(String::new()); | ———— ^^^^^^^^^^^^ منهنجو ليبل | | | هن ڪال پاران متعارف ٿيل هڪ پابند طرفان گهربل آهي | = مدد: خصلت `اھم خصوصيت `` اسٽرنگ` لاءِ لاڳو نه ڪيو ويو آھي = نوٽ: نوٽ 18 = نوٽ: نوٽ 12
- غير محفوظ ڪمن تي لاڳو ڪيل اڳ-اثاثن جا چيڪ ھاڻي موخر ڪري سگھجن ٿا ڪوڊ جنريشن تائين، انھن چيڪن کي انجام ڏيڻ جي اجازت ڏئي ٿي بغير معياري لائبريري کي "#[cfg(debug_asssertions)]" موڊ ۾. چيڪن کي ٽاريڻ لاءِ، اھو ھاڻي ڪافي آھي ڊيبگ اصرار کي فعال ڪرڻ لاءِ ٽيسٽ يا ڊيبگ بلڊز لاءِ توھان جي ڪوڊ.
- معياري لائبريري ۾ افعال جو رويو جيڪو اثر انداز ٿئي ٿو پوائنٽرز ۽ سلائسن جي ترتيب کي هاڻي رن ٽائم تي اڳڪٿي ڪري سگهجي ٿو ۽ ان پٽ ڊيٽا تي منحصر آهي. فنڪشن پوائنٽر::align_offset، جيڪو پوائنٽر کي ترتيب ڏيڻ لاءِ آفسيٽ کي ڳڻائي ٿو، ھاڻي واپسي usize::MAX صرف جيڪڏھن آپريشن ناڪام ٿئي. فنڪشن سلائس::align_to ۽ slice::align_to_mut ٻئي، جيڪي سلائسن کي نمائندگي ۾ تبديل ڪن ٿا ھڪڙي ترتيب ڏنل وچ واري سلائس ۽ اصل شروعات ۽ آخر واري سلائسن سان، ھاڻي ھاڻي ھاڻي سڀ کان وڏو وچين حصو واپس ڪريو.
- هيٺين کي مستحڪم درجي ۾ منتقل ڪيو ويو:
- impl پڙهڻ لاءِ &Stdin
- ڪجھ std::error::Error سان لاڳاپيل عملن لاءِ غير جامد (غير جامد) زندگي گذارڻ جي اجازت ڏيو.
- امپيل تي عملدرآمد ?سائيز قدر جي اجازت آهي.
- impl کان io لاء:: غلطي
- Barrier::new() فنڪشن کي مستحڪم ڪيو ويو آهي "const" وصف سان استعمال ڪرڻ لاءِ مستقل جي بدران ڪنهن به حوالي سان.
- ٽارگيٽ پليٽ فارمز لاءِ ھاڻي گھٽ ۾ گھٽ ونڊوز 86 ورزن جي ضرورت آھي.
- سپورٽ جي ٽئين سطح تي لاڳو ڪيو ويو آهي wasm32-wasip2، arm64ec-pc-windows-msvc، armv8r-none-eabihf ۽ loongarch64-unknown-linux-musl پليٽ فارمن لاءِ. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر خودڪار ٽيسٽنگ کان سواءِ، سرڪاري تعميرات کي شايع ڪرڻ، يا چيڪ ڪرڻ ته ڇا ڪوڊ ٺاهي سگهجي ٿو.
- ھدف واري پليٽ فارم لاءِ سپورٽ جي ٻئي سطح Add wasm32-wasip1 تي عمل ڪيو ويو آھي. سپورٽ جي ٻئي سطح ۾ اسيمبلي جي ضمانت شامل آهي.
- پليٽ فارم wasm32-wasi-preview1-threads جو نالو تبديل ڪيو ويو آهي wasm32-wasip1-threads.
- LLVM 18 استعمال ڪرڻ لاءِ ڪمپلر کي تبديل ڪيو ويو آھي. جڏھن x18-86 ۽ x32-86 آرڪيٽيڪچرز لاءِ LLVM 64 استعمال ڪيو وڃي ٿو، u128 ۽ i128 قسمن سان لاڳاپيل ABI تبديل ڪيو ويو آھي.
- ڪارگو پيڪٽ مئنيجر ۾، لاک فائلن جو نسخو 4 (lockfile v4) مستحڪم ڪيو ويو آهي.
- ڪارگو وٽ هڪ مستحڪم عالمي ڪيش آهي جنهن ۾ جديد ڊيٽا جي استعمال بابت معلومات آهي. ڪيش SQLite استعمال ڪندي $CARGO_HOME/.global-cache ۾ ميزباني ڪئي وئي آهي ۽ انڊيڪس، ڪرٽ فائل، ڪوڊ ڊاريڪٽري، گٽ ڪلون، ۽ گيٽ چيڪ آئوٽ ۾ جديد تبديلين کي ظاهر ڪرڻ لاءِ خودڪار طور تي اپڊيٽ ڪئي وئي آهي.
اضافي طور تي، بورگو پروگرامنگ ٻولي گو ٻولي کان وڌيڪ اظهار ڪندڙ ٿيڻ جي ڪوشش ڪري ٿي، پر زنگ واري ٻولي کان گهٽ پيچيده. بورگو گو ۽ رسٽ جي بهترين خوبين کي گڏ ڪري ٿو، هر ٻوليءَ جي خامين کي پورو ڪري ٿو. مثال طور، Go سادو ۽ سڌو آهي، پر جديد قسم جي حفاظتي خاصيتون مهيا نٿو ڪري. مورچا ٻولي محفوظ پروگرامنگ لاءِ اوزار مهيا ڪري ٿي، پر وڌيڪ پيچيده آهي. پروجيڪٽ مارڪو سامپيلگريني طرفان ترقي ڪئي پئي وڃي، ليکڪ جي سادي هاسڪل هينڊ بڪ ۽ ڊولپر جو Quad CI مسلسل انٽيگريشن سسٽم.

بورگو جامد ٽائپنگ، Go-like type، ۽ Rust-like syntax استعمال ڪري ٿو. بورگو ڪوڊ ۾ لائينن جي آخر ۾ سيميڪولن اختياري آھن. بورگو ڪوڊ مرتب ڪيو ويو آهي گو نمائندگي ۾ جيڪو مڪمل طور تي مطابقت رکي ٿو موجوده گو پيڪيجز سان. گڏ ڪرڻ وارو ڪوڊ مورچا ۾ لکيل آهي ۽ ISC لائسنس تحت ورهايو ويو آهي. استعمال ڪريو fmt enum NetworkState { لوڊ ڪرڻ، ناڪام (int)، ڪاميابي (T)، } ساخت جواب { عنوان: اسٽرنگ، مدت: int، } fn main() { let res = Response { عنوان: "هيلو دنيا"، مدت: 0، } رياست ڏيو = NetworkState.Success(res) ڏيو msg = ميچ اسٽيٽ { NetworkState.Loading => “اڃا لوڊ ٿي رهيو آهي”, NetworkState.Failed(code) => fmt.Sprintf(“Got error code: %d”, code), NetworkState.Success (res) => res.title, } fmt.Println(msg) }
جو ذريعو: opennet.ru
