رسٽ 1.75 عام مقصدي پروگرامنگ ٻولي جو رليز، جيڪو Mozilla پروجيڪٽ پاران قائم ڪيو ويو، پر ھاڻي ترقي يافته غير منافع بخش تنظيم Rust Foundation جي سرپرستي ھيٺ، شايع ڪيو ويو آھي. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي ۽ گاربيج ڪليڪٽر ۽ رن ٽائم جي استعمال کان پاسو ڪندي اعليٰ نوڪري جي برابري حاصل ڪرڻ جا وسيلا مهيا ڪري ٿي (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).
رسٽ جي ميموري هينڊلنگ جا طريقا ڊولپر کي غلطين کان بچائيندا آهن جڏهن پوائنٽرز کي هٿي وٺرائيندا آهن ۽ انهن مسئلن کان بچائيندا آهن جيڪي گهٽ-سطح جي ميموري هينڊلنگ جي ڪري پيدا ٿيندا آهن، جهڙوڪ ميموري ايريا کي آزاد ٿيڻ کان پوءِ رسائي حاصل ڪرڻ، نول پوائنٽرز کي رد ڪرڻ، بفر اووررن وغيره وغيره. لائبريرين کي ورهائڻ، تعميرات مهيا ڪرڻ ۽ انحصار کي منظم ڪرڻ، پروجيڪٽ ڪارگو پيڪيج مينيجر کي ترقي ڪري ٿو. crates.io مخزن لائبريرين جي ميزباني لاءِ سپورٽ ڪئي وئي آهي.
ميموري حفاظت فراهم ڪئي وئي آهي زنگ واري وقت تي ريفرنس چيڪنگ ذريعي، اعتراض جي ملڪيت جي ٽريڪ رکڻ، اعتراض جي زندگين جي ٽريڪ رکڻ (اسڪوپس)، ۽ ڪوڊ جي عمل جي دوران ميموري رسائي جي صحيحيت جو جائزو وٺڻ. زنگ انٽيجر اوور فلوز جي خلاف پڻ تحفظ فراهم ڪري ٿو، استعمال ڪرڻ کان اڳ متغير قدرن جي لازمي شروعات جي ضرورت آهي، معياري لائبريري ۾ غلطين کي بهتر نموني سان سنڀاليندو آهي، ڊفالٽ طور ناقابل قابل حوالن ۽ متغيرن جي تصور کي لاڳو ڪري ٿو، منطقي غلطين کي گھٽائڻ لاءِ مضبوط جامد ٽائپنگ پيش ڪري ٿو.
مکيه جدت:
- شامل ڪيو ويو استعمال ڪرڻ جي صلاحيت “async fn” ۽ “-> impl Trait” نوٽيشن پرائيويٽ خاصيتن ۾. مثال طور، "-> impl Trait" استعمال ڪندي توهان هڪ خاص طريقو لکي سگهو ٿا جيڪو هڪ آئٽرٽر کي واپس ڪري ٿو: trait Container { fn items(&self) -> impl Iterator; } Impl ڪنٽينر لاءِ MyContainer { fn شيون(&self) -> impl Iterator {self.items.iter().cloned() } }
توھان پڻ "async fn" استعمال ڪندي خاصيتون ٺاھي سگھو ٿا: خاص HttpService { async fn fetch(&self, url: Url) -> HtmlBody; // کي وڌايو ويندو: // fn fetch(&self, url: Url) -> impl Future; }
- شامل ڪيو ويو API بائيٽ آف سيٽ جي حساب ڪرڻ لاءِ پوائنٽرز جي نسبت. جڏهن بيئر پوائنٽرز سان ڪم ڪري رهيا آهن ("*const T" ۽ "* mut T")، آپريشن کي پوائنٽر ۾ آفسيٽ شامل ڪرڻ جي ضرورت پوندي. اڳي، ان لاءِ ”::add(1)“ وانگر اڏاوت استعمال ڪرڻ ممڪن هو، ”سائز_of::()“ جي سائيز سان ملندڙ بائيٽن جو تعداد شامل ڪندي. نئون API هن آپريشن کي آسان بڻائي ٿو ۽ ان کي ممڪن بڻائي ٿو بائيٽ آف سيٽس کي ترتيب ڏيڻ کان سواءِ پهرين قسم کي "*const u8" يا "*mut u8" ڏانهن ڪاسٽ ڪرڻ جي.
- پوائنٽر::byte_add
- پوائنٽر::byte_offset
- پوائنٽر::byte_offset_from
- پوائنٽر::byte_sub
- پوائنٽر::wrapping_byte_add
- پوائنٽر:: wrapping_byte_offset
- پوائنٽر::wrapping_byte_sub
- rustc compiler جي ڪارڪردگي کي وڌائڻ لاء جاري ڪم. شامل ڪيو ويو BOLT اصلاح ڪندڙ، جيڪو پوسٽ لنڪ اسٽيج ۾ هلندو آهي ۽ اڳ ۾ تيار ڪيل عملدرآمد پروفائل مان معلومات استعمال ڪري ٿو. BOLT استعمال ڪرڻ توهان کي اجازت ڏئي ٿو ڪمپلر جي عمل کي 2٪ تيز ڪرڻ سان librustc_driver.so لائبريري ڪوڊ جي ترتيب کي تبديل ڪندي پروسيسر ڪيش جي وڌيڪ موثر استعمال لاءِ.
LLVM ۾ اصلاح جي معيار کي بهتر ڪرڻ لاءِ "-Ccodegen-units=1" آپشن سان rustc ڪمپلر جي تعمير شامل آهي. تجربا ڪيا ويا "-Ccodegen-units = 1" جي صورت ۾ ڪارڪردگي ۾ اضافو ڏيکاري ٿو تقريبن 1.5٪ طرفان. شامل ڪيل اصلاحون ڊفالٽ طور فعال ڪيون ويون آھن صرف x86_64-unknown-linux-gnu پليٽ فارم لاءِ.
اڳ ذڪر ڪيل اصلاحن کي گوگل پاران پليٽ فارم جي حصن کي ٺاهڻ ۾ لڳندڙ وقت کي گهٽائڻ لاءِ آزمايو ويو. Android، رسٽ ۾ لکيل. تعمير ڪرڻ وقت "-C codegen-units=1" استعمال ڪندي Android اسان کي ٽول ڪٽ جي سائيز کي 5.5٪ گهٽائڻ ۽ ان جي پيداوار کي 1.8٪ وڌائڻ جي اجازت ڏني، جڏهن ته ٽول ڪٽ کي گڏ ڪرڻ جو وقت تقريبن ٻيڻو ٿي ويو.
لنڪ ٽائم گاربيج ڪليڪشن کي فعال ڪرڻ ("--gc-sections") ڪارڪردگي جو فائدو 1.9٪ تائين پهچايو، لنڪ-ٽائم آپٽمائزيشن (LTO) کي 7.7٪ تائين، ۽ پروفائل تي ٻڌل اصلاح (PGO) کي 19.8٪ تائين وڌايو. فائنل ۾، BOLT يوٽيلٽي کي استعمال ڪندي اصلاحون لاڳو ڪيون ويون، جن ان کي ممڪن بڻايو ته تعمير جي رفتار کي 24.7٪ تائين وڌايو، پر ٽول ڪٽ جي سائيز 10.9٪ تائين وڌي وئي.

- API جو هڪ نئون حصو مستحڪم جي درجي ۾ منتقل ڪيو ويو آهي، بشمول طريقن ۽ عملن جي خاصيتن کي مستحڪم ڪيو ويو آهي:
- ايٽمي*::from_ptr
- فائل ٽائمز
- FileTimesExt
- فائل::set_modified
- فائل::set_times
- IpAddr::to_canonical
- Ipv6Addr::to_canonical
- اختيار:: as_slice
- اختيار::as_mut_slice
- پوائنٽر::byte_add
- پوائنٽر::byte_offset
- پوائنٽر::byte_offset_from
- پوائنٽر::byte_sub
- پوائنٽر::wrapping_byte_add
- پوائنٽر:: wrapping_byte_offset
- پوائنٽر::wrapping_byte_sub
- "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، افعال ۾ استعمال ٿيندو آهي:
- Ipv6Addr::to_ipv4_mapped
- ٿي سگهي ٿوUninit::assume_init_read
- ٿي سگهي ٿو Uninit::zeroed
- mem :: تعصب ڪندڙ
- mem::zeroed
- سپورٽ جو ٽيون سطح csky-unknown-linux-gnuabiv2hf، i586-unknown-netbsd ۽ mipsel-unknown-netbsd پليٽ فارمن لاءِ لاڳو ڪيو ويو آهي. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر خودڪار ٽيسٽنگ کان سواءِ، سرڪاري تعميرات کي شايع ڪرڻ، يا چيڪ ڪرڻ ته ڇا ڪوڊ ٺاهي سگهجي ٿو.
ان کان علاوه، هرمٽ پروجيڪٽ جو هڪ نئون نسخو قابل ذڪر آهي. اهو رسٽ ۾ لکيل هڪ خاص ڪرنل (يونيڪرنل) تيار ڪري ٿو، جيڪو خود ساخته ايپليڪيشنن جي تعمير لاءِ اوزار فراهم ڪري ٿو جيڪو اضافي پرتن يا آپريٽنگ سسٽم کان سواءِ هائپر وائزر يا ننگي هارڊويئر تي هلائڻ جي قابل آهي. تعمير دوران، ايپليڪيشن کي هڪ لائبريري سان جامد طور تي ڳنڍيل آهي جيڪا آزاد طور تي سڀني ضروري ڪارڪردگي کي لاڳو ڪري ٿي، بغير او ايس ڪرنل يا سسٽم لائبريرين سان ڳنڍيل هجي. پروجيڪٽ جو ڪوڊ اپاچي 2.0 ۽ ايم آءِ ٽي لائسنس جي تحت ورهايو ويو آهي. اهو رسٽ، گو، فورٽران، سي، ۽ سي++ ۾ لکيل اسٽينڊلون ايپليڪيشنن جي تعمير جي حمايت ڪري ٿو. پروجيڪٽ پنهنجو بوٽ لوڊر پڻ ترقي ڪري رهيو آهي، جيڪو هرمٽ کي QEMU استعمال ڪندي لانچ ڪرڻ جي اجازت ڏئي ٿو ۽ ڪي ايم.
جو ذريعو: opennet.ru

