پروگرامنگ ٻولي جو رليز رسٽ 2021 (1.56)

سسٽم پروگرامنگ ٻولي Rust 1.56 جو رليز، Mozilla پروجيڪٽ پاران ٺهرايو ويو، پر هاڻي آزاد غير منافع بخش تنظيم Rust Foundation جي سرپرستي هيٺ ترقي ڪئي وئي آهي، شايع ڪيو ويو آهي. باقاعده ورزن نمبر کان علاوه، رليز پڻ نامزد ڪيو ويو آهي Rust 2021 ۽ گذريل ٽن سالن ۾ تجويز ڪيل تبديلين جي استحڪام کي نشانو بڻايو ويو آهي. رسٽ 2021 پڻ ايندڙ ٽن سالن ۾ ڪارڪردگي وڌائڻ جي بنياد جي طور تي ڪم ڪندو، جيئن ته رسٽ 2018 جي ​​رليز گذريل ٽن سالن ۾ ٻوليء جي ترقي جو بنياد بڻجي ويو.

مطابقت برقرار رکڻ لاءِ، ڊولپرز استعمال ڪري سگھن ٿا "2015"، "2018" ۽ "2021" ليبل پنھنجي پروگرامن ۾، پروگرامن کي اجازت ڏئي سگھن ٿا ڳنڍڻ جي ٻولي رياست جي سلائسن سان واسطو رکي ٿو رست جي چونڊيل ايڊيشن سان. ايڊيشن متعارف ڪرايا ويا آھن الڳ الڳ تبديلين لاءِ ۽ ترتيب ڏنل آھن ڪارگو پيڪيجز جي ميٽا ڊيٽا ۾ ”ايڊيشن“ فيلڊ ذريعي ”[پيڪيج]“ سيڪشن ۾. مثال طور، ”2018“ ايڊيشن ۾ 2018 جي ​​آخر تائين مستحڪم ٿيل ڪارڪردگي شامل آهي ۽ ان سان گڏ سڀني وڌيڪ تبديلين جو احاطو ڪيو ويو آهي جيڪي مطابقت کي ٽوڙي نٿا سگهن. 2021 جي ايڊيشن ۾ اضافي طور تي شامل آھي انٽرآپريبلٽي ٽوڙڻ واريون خاصيتون جيڪي موجوده 1.56 رليز ۾ تجويز ڪيل آھن ۽ مستقبل جي عمل درآمد لاءِ منظور ٿيل آھن. ٻوليءَ کان علاوه، ايڊيٽر به اوزارن ۽ دستاويزن جي حالت کي نظر ۾ رکن ٿا.

رسٽ 2021 ۾ رڪارڊ ٿيل وڏيون عدم مطابقتون:

  • بندش ۾ الڳ قبضو - بندش هاڻي مڪمل سڃاڻپ ڪندڙ جي بدران انفرادي فيلڊ جا نالا پڪڙي سگهن ٿا. مثال طور، "|| ax + 1" صرف "a" جي بدران "ax" کي پڪڙيندو.
  • Arrays لاءِ IntoIterator خاصيت: array.into_iter() توھان کي اجازت ڏئي ٿو صفن جي عنصرن کي قدرن جي ذريعي، حوالن جي بجاءِ.
  • "|" اظهار جي پروسيسنگ کي تبديل ڪيو ويو آهي macro_rules ۾ (بولين يا) نمونن ۾ - ميچن ۾ ":pat" وضاحت ڪندڙ هاڻي احترام ڪري ٿو "A | ب".
  • ڪارگو پيڪيج مئنيجر ۾ شامل آهي ڊفالٽ طور تي فيچر حل ڪندڙ جو ٻيو نسخو، جنهن جي مدد لاءِ رست 1.51 ۾ ظاهر ٿيو.
  • TryFrom، TryInto ۽ FromIterator خاصيتون شامل ڪيون ويون آھن اڳليڊ معياري لائبريري ماڊل ۾.
  • گھٻرائجي!(..) ۽ زور ڀريو!(expr, ..) macros ھاڻي ھاڻي استعمال ڪندا آھن format_args!(..) strings کي فارميٽ ڪرڻ لاءِ، ساڳي طرح println!().
  • لفظ ident#, ident»..." ۽ ident '...' ٻوليءَ جي نحو ۾ محفوظ آهن.
  • منتقل ٿيل bare_trait_objects ۽ ellipsis_inclusive_range_patterns وارننگن کي غلطين ڏانهن.

Rust 1.56 ۾ نئون:

  • Cargo.toml ۾، "[پيڪيج]" سيڪشن ۾، زنگ وارو نسخو شامل ڪيو ويو آھي، جنھن ذريعي توھان مقرر ڪري سگھو ٿا گھٽ ۾ گھٽ سپورٽ ٿيل ورزن جي زنگ لاءِ. جيڪڏهن موجوده نسخو مخصوص پيٽرولر سان نه ٿو ملي، ڪارگو هڪ غلطي پيغام سان ڪم ڪرڻ بند ڪري ڇڏيندو.
  • جڏهن نمونن جي ميلاپ کي استعمال ڪندي "بائنڊنگ @ پيٽرن" ايڪسپريسشن، سپورٽ مهيا ڪئي وئي آهي اضافي بائنڊنگ جي وضاحت ڪرڻ لاء (مثال طور، "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • API جو هڪ نئون حصو مستحڪم جي درجي ۾ منتقل ڪيو ويو آهي، بشمول طريقن ۽ عملن جي خاصيتن کي مستحڪم ڪيو ويو آهي:
    • std::os::unix::fs::chroot
    • UnsafeCell ::raw_get
    • BfWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::srink_to
    • اسٽرنگ::srink_to
    • OsString::shrink_to
    • PathBuf :: shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، افعال ۾ استعمال ٿيندو آهي
    • std::mem::transmute
    • [ٽي] :: پهريون
    • [ٽي]::سپليٽ_فرسٽ
    • [ٽي] ::آخري
    • [ٽي] :: تقسيم_آخري
  • LLVM ورزن 13 استعمال ڪرڻ لاءِ ڪمپلر کي تبديل ڪيو ويو آھي.
  • aarch64-apple-ios-sim پليٽ فارم لاءِ هڪ ٻي سطح جي حمايت لاڳو ڪئي وئي آهي ۽ ٽئين سطح powerpc-unknown-freebsd ۽ riscv32imc-esp-espidf پليٽ فارمن لاءِ. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر خودڪار ٽيسٽنگ کان سواءِ، سرڪاري تعميرات کي شايع ڪرڻ، يا چيڪ ڪرڻ ته ڇا ڪوڊ ٺاهي سگهجي ٿو.

ياد رهي ته زنگ ميموري جي حفاظت تي مرکوز آهي، خودڪار ميموري مئنيجمينٽ مهيا ڪري ٿو، ۽ گاربيج ڪليڪٽر يا رن ٽائم استعمال ڪرڻ کان سواءِ نوڪري جي عمل ۾ اعلي متوازي حاصل ڪرڻ جو هڪ وسيلو مهيا ڪري ٿو (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).

رسٽ جو خودڪار ميموري مئنيجمينٽ غلطين کي ختم ڪري ٿو جڏهن پوائنٽن کي هٿي وٺندي ۽ گهٽ-سطح جي ميموري جي ورهاڱي کان پيدا ٿيندڙ مسئلن کان بچائيندو آهي، جهڙوڪ ميموري علائقي کي آزاد ٿيڻ کان پوء رسائي، null pointer dereferences، buffer overruns وغيره. لائبريرين کي ورهائڻ، اسيمبليءَ کي يقيني بڻائڻ ۽ انحصار کي منظم ڪرڻ، پروجيڪٽ ڪارگو پيڪيج مينيجر کي ترقي ڪري رهيو آهي. crates.io مخزن لائبريرين جي ميزباني لاءِ سپورٽ ڪئي وئي آهي.

جو ذريعو: opennet.ru

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