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

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

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

مکيه جدت:

  • شامل ڪيو ويو هڪ پائيپ لائين ڪمپليشن موڊ (پائپ لائين)، جنهن ۾ هڪ منحصر ڪريٽ پيڪيج جي تعمير شروع ٿيندي آهي جيئن ئي انحصار ميٽاداٽا دستياب ٿي ويندي آهي، ان جي تاليف مڪمل ٿيڻ جو انتظار ڪرڻ کان سواء. جڏهن هڪ پيڪيج کي گڏ ڪرڻ، انحصار کي مڪمل طور تي گڏ ڪرڻ جي ضرورت ناهي، صرف ميٽاداٽ جي وضاحت ڪرڻ، جنهن ۾ قسمن جي فهرستن، انحصار، ۽ برآمد ٿيل عناصر شامل آهن. ميٽاداٽا تاليف جي عمل جي شروعات ۾ دستياب ڪئي وئي آهي، تنهنڪري ڳنڍيل پيڪيجز هاڻي تمام گهڻو اڳ مرتب ڪري سگھجن ٿيون. جڏهن سنگل پيڪيجز ٺاهي رهيا آهن، تجويز ڪيل موڊ ڪارڪردگي تي اثر انداز نه ڪندو آهي، پر جيڪڏهن تعمير پيڪيجز کي برانچ ٿيل انحصار سان ڍڪيندو آهي، مجموعي طور تي تعمير جو وقت 10-20٪ گھٽائي سگهجي ٿو.
  • افعال جي غلط استعمال جي سڃاڻپ کي يقيني بڻائي ٿي std::mem::unitialized и std::mem::zeroed. مثال طور، std::mem::uninitialized آسان آهي آساني سان ترتيب ڏيڻ لاءِ، پر اهو ڪمپائلر کي گمراهه ڪري ٿو، ڇاڪاڻ ته اهو ظاهر ٿئي ٿو ته شروعات ٿيل آهي، پر حقيقت ۾ قيمت اڻڄاتل رهي ٿي. mem::uninitialized فنڪشن اڳ ۾ ئي ختم ٿيل طور نشان لڳايو ويو آهي ۽ ان جي بدران هڪ وچولي قسم استعمال ڪرڻ جي سفارش ڪئي وئي آهي ٿي سگهي ٿو يونٽ. جيئن ته mem::zeroed لاءِ، هي فنڪشن انهن قسمن سان مسئلا پيدا ڪري سگهي ٿو جيڪي صفر قدر قبول نٿا ڪري سگهن.

    اڻڄاتل رويي کي سڃاڻڻ ۾ مدد ڏيڻ لاء، نئين رليز هڪ لنٽ چيڪ شامل ڪري ٿو مرتب ڪندڙ جيڪو mem::uninitialized يا mem::zeroed سان ڪجهه مسئلا ڳولي ٿو. مثال طور، توهان کي هاڻي هڪ غلطي ملي ٿي جڏهن mem::uninitialized يا mem::zeroed with type &T ۽ Box‹T› استعمال ڪرڻ جي ڪوشش ڪئي وڃي، جيڪي پوائنٽر اعتراضن جي نمائندگي ڪن ٿيون جيڪي null قدر قبول نٿا ڪري سگهن.

  • "#[منسوخ ٿيل]" وصف وڌايو ويو آھي اجازت ڏيڻ جي اجازت ڏيڻ لاءِ ڪرٽ پيڪيجز کي ختم ٿيل نشان لڳايو وڃي ۽ مستقبل ۾ حذف ڪرڻ لاءِ شيڊول ڪيو وڃي. Rust 1.38 جي طور تي، هي خاصيت پڻ استعمال ڪري سگهجي ٿو ميڪرو لاء؛
  • استعمال ڪرڻ جي صلاحيت شامل ڪئي وئي “#[global_allocator]” وصف ذيلي ماڊلز ۾؛
  • شامل ڪيل فنڪشن std::any::type_name، جيڪو توهان کي اجازت ڏئي ٿو معلوم ڪرڻ جي قسم جو نالو، جيڪو ڊيبگنگ جي مقصدن لاءِ ڪارآمد ٿي سگهي ٿو. مثال طور، پروگرام جي عمل جي دوران توهان ڳولي سگهو ٿا ته ڪهڙي قسم جي فنڪشن کي سڏيو ويو آهي:

    fn gen_value‹T: Default>() -> T {
    println!("Initializing an instance of {}", std::any::type_name::‹T›());
    Default::default()
    }

    fn main() {
    let _: i32 = gen_value()؛ # "i32" ڇاپيو ويندو
    let _: String = gen_value()؛ # پرنٽ ڪندو "alloc::string::String"
    }

  • معياري لائبريري جا توسيع افعال:
    • slice::{concat, connect, join} ھاڻي وٺي سگھي ٿو قدر &[T] کان علاوه &T;
    • "*const T" ۽ "* mut T" ھاڻي مارڪر لاڳو ڪريو:: Unpin؛
    • "Arc‹[T]›" ۽ "Rc‹[T]›" ھاڻي لاڳو ڪريو FromIterator‹T›؛
    • iter::{StepBy, Peekable, Take} ھاڻي DoubleEndedIterator لاڳو ڪريو.
    • ascii::EscapeDefault ڪلون ۽ ڊسپلي کي لاڳو ڪري ٿو.
  • APIs جو ھڪڙو نئون حصو مستحڪم درجي ڏانھن منتقل ڪيو ويو آھي، جن ۾ طريقا شامل آھن جيڪي مستحڪم ڪيا ويا آھن
    • ‹*const T›::cast، ‹*mut T›::cast،
    • مدت::as_secs_f{32|64},
    • مدت::div_duration_f{32|64},
    • مدت::div_f{32|64},
    • مدت::from_secs_f{32|64},
    • مدت::mul_f{32|64},
    • باقي عملن سان تقسيم
      div_euclid ۽ rem_euclid سڀني انٽيجر پرائمري لاءِ؛

  • ڪارگو پيڪيج مئنيجر ۾ مختلف فيچرز کي فعال ڪرڻ لاءِ ”--features“ اختيار کي ڪيترائي ڀيرا بيان ڪرڻ لاءِ سپورٽ شامل ڪئي وئي؛
  • گڏ ڪرڻ وارو ٽيون مهيا ڪري ٿو سطح ھدف جي پليٽ فارمن لاءِ سپورٽ -gnueabi، armv64-اڻڄاتل-لينڪس-مسليبي، هيڪساگون-اڻڄاتل-لينڪس-مسل ۽ riscv686i-اڻڄاتل-نه-ايلف. ٽئين سطح ۾ بنيادي مدد شامل آهي، پر سرڪاري عمارتن جي خودڪار جاچ ۽ اشاعت کان سواء.

جو ذريعو: opennet.ru

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