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

سسٽم پروگرامنگ ٻولي Rust 1.51 جو رليز، Mozilla پروجيڪٽ پاران ٺهرايو ويو، پر هاڻي ترقي يافته غير منافع بخش تنظيم Rust Foundation جي سرپرستي هيٺ، شايع ڪيو ويو آهي. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي، خودڪار ميموري مينيجمينٽ مهيا ڪري ٿي، ۽ گاربيج ڪليڪٽر يا رن ٽائم استعمال ڪرڻ کان سواءِ اعليٰ ڪم جي برابري حاصل ڪرڻ جا وسيلا مهيا ڪري ٿي (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).

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

مکيه جدت:

  • مسلسل جنريڪس جي استعمال سان لاڳاپيل ڪارڪردگي گهٽ ۾ گهٽ قابل عمل پراڊڪٽ (MVP) جي حيثيت حاصل ڪئي آهي، وسيع استعمال لاء سائي روشني ڏئي ٿي. Const generics اجازت ڏئي ٿو قسمن کي عام ڪيو وڃي مسلسل قدرن تي، يعني. استعمال ڪريو عام دليلن جي حد تائين محدود مسلسل قدرن جي حد تائين، نه قسم يا حياتي. هي خصوصيت توهان کي اجازت ڏئي ٿي ته انٽيجر-پيراميٽرائز ٿيل قسمون ۽ تجريد استعمال ڪريو جڏهن ڪنهن به سائيز جي صفن لاءِ خصوصيتون ٺاهيون، بغير صحيح قدرن جي هر حد لاءِ هڪ الڳ قسم ٺاهڻ جي انهي کي يقيني بڻائڻ لاءِ ته حد کان ٻاهر واقعا نه آهن.

    موجوده رليز سان شروع ڪندي، قسم سان arrays لاء "[T؛ N]" (قسم T ۽ سائيز N) ڪنهن به انٽيجر، بوليان ۽ ڪردار جي قسمن سان قدر استعمال ڪندي قسم ۽ سائيز کي خلاصي ڪرڻ جي صلاحيت مهيا ڪري ٿو (struct ۽ enum قسم اڃا تائين سپورٽ نه آهن). Constant generics لائبريري جي ترقي کي تمام گهڻو آسان بڻائي ٿو، مثال طور، هڪ صف استعمال ڪرڻ لاءِ جيڪو ڪنهن مخصوص قسم ۽ سائيز سان ڳنڍيل ناهي، توهان وضاحت ڪري سگهو ٿا: struct Array } // ^^^^^^^^^^^^^^^^^^^ مسلسل عام فهرست جي تعريف: [T; LENGTH] // ^^^^^^ ان جو استعمال }

    جڏهن اصل ۾ هن تعريف سان استعمال ڪيو ويو آهي "Array » مرتب ڪندڙ Array جو هڪ monomorphic ورجن ٺاهيندو: struct Array {فهرست: [u8; 32] }

  • std::array::IntoIter API، مستقل جنريڪس جي بنياد تي، مستحڪم ڪيو ويو آهي، جنهن سان توهان ڪنهن به صف لاءِ قدر جي حساب سان آئٽرٽر ٺاهي سگهو ٿا: fn main() { let array = [1, 2, 3, 4, 5] ؛ // اڳي، هڪ قدر تي ٻيهر ورجائڻ لاءِ، توهان کي سڏ ڪرڻو پوندو .iter() طريقو array.iter().copied() { println!("{}", item); } // ھاڻي توھان بيان ڪري سگھو ٿا شيون لاءِ std::array::IntoIter::new(array) { println!("{}", item); } }
  • ڪارگو پيڪيج مئنيجر هاڻي Cargo.toml ۾ نئين حل ڪندڙ فيلڊ کي سپورٽ ڪري ٿو، جيڪو استعمال ڪري سگهجي ٿو فيچر ريزلور جي ٻئي ورزن کي فعال ڪرڻ لاءِ. وضاحت ڪندڙ جو نئون نسخو "[خصوصيتون]" سيڪشن ۾ درج ٿيل انحصار خاصيتن کي گڏ ڪرڻ کان پاسو ڪري ٿو، جتي اهو نامناسب آهي، مثال طور، جڏهن هڪ انحصار شامل آهي جيڪو تعمير اسڪرپٽ ۽ ميڪروز ۾ ڪجهه معياري خصوصيت جي درخواست ڪري ٿو، پر جڏهن غير معياري خصوصيت استعمال ڪندي نتيجي ۾ قابل عمل فائل ۾.

    هينئر تائين، انحصار گراف ۾ ڪيترائي ڀيرا ذڪر ڪيل پيڪيج جون صلاحيتون گڏ ڪيون ويون آهن. مثال طور، جيڪڏهن هڪ پروجيڪٽ ۾ هڪ انحصار foo شامل آهي جيڪا صلاحيت A ۽ B جي وضاحت ڪري ٿي، ۽ هي پيڪيج ٻين پيڪيجز بار ۽ باز ۾ استعمال ڪيو ويندو آهي، جيتوڻيڪ بار فيچر A سان foo تي منحصر هوندو آهي، ۽ baz خصوصيت B سان foo تي منحصر هوندو آهي، پوءِ نتيجو اهو ٿيندو ته ڪارگو انهن خاصيتن کي گڏ ڪندو ۽ foo کي A ۽ B شامل ڪندو، اهو طريقو هڪ خاصيت جي نتيجي ۾ ٿي سگهي ٿو جيڪو ڪجهه انحصار جي ٽارگيٽ سسٽم سان مطابقت نه هجڻ جي ڪري، جنهن جي نتيجي ۾ ٺاهي وئي آهي. مثال طور، جڏھن توھان استعمال ڪرڻ چاھيو ٿا foo جو نسخو "#![no_std]" سان ٺاھڻ واري عمل ۾ "#![no_std]" سان، ۽ ساڳئي وقت استعمال ڪريو foo سان "std" سان ٺاھڻ دوران. رپيا Cargo.toml ۾ حل ڪندڙ="2" جي وضاحت ڪرڻ وقت، پيڪيج مئنيجر ھاڻي ھن تڪرار کي صحيح طريقي سان سنڀالڻ جي ڪوشش ڪندو، dev، ميزبان ۽ ھدف جي انحصار کي الڳ ڪري.

  • В cargo реализована опция split-debuginfo, задаваемая в секции «[profile]» и соответствующий флаг «-Csplit-debuginfo=unpacked» в rustc, предлагающие реализацию нового метода сохранения отладочной информации, который позволяет избавиться от необходимости вызова утилиты dsymutil и существенно ускорить процесс сборки с отладочной информацией в macOS.
  • مستحڪم ميڪوس "ptr::addr_of!" ۽ "ptr::addr_of_mut!"، جيڪو توهان کي غير ترتيب ڏنل فيلڊ لاء خام پوائنٽر ٺاهڻ جي اجازت ڏئي ٿو. استعمال ڪريو std::ptr؛ #[repr(packed)] struct Packed { f1: u8, f2: u16, } let packed = Packed { f1: 1, f2: 2 }; // &packed.f2 هڪ غير ترتيب ڏنل پوائنٽر ٺاهيندو جيڪو اڻ ٺهڪندڙ رويي ڏانهن وٺي ويندو raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(unsafe { raw_f2.read_unaligned() }, 2);
  • API جو هڪ نئون حصو مستحڪم درجي ۾ منتقل ڪيو ويو آهي، جنهن ۾ هيٺيان طريقا شامل ڪيا ويا آهن:
    • قوس::decrement_strong_count
    • قوس:: increment_strong_count
    • هڪ ڀيرو::call_once_force
    • ڏسڻ جي قابل::next_if_eq
    • ڏسڻ لائق ::next_if
    • ڳولھيو::stream_position
    • array::IntoIter
    • panic::panic_any
    • ptr::addr_of!
    • ptr::addr_of_mut!
    • سلائس ::fill_with
    • سلائس::split_inclusive_mut
    • سلائس::split_inclusive
    • سلائس ::strip_prefix
    • سلائس ::strip_sufix
    • str::split_inclusive
    • sync::OnceState
    • ڪم::جاڳيو
  • i386-unknown-linux-gnu، i486-unknown-linux-gnu، aarch64_be-unknown-linux-gnu، aarch64-unknown-linux-gnu_ilp32 ۽ aarch64_be-unknown-linux-gnu_ilp32 پليٽ فارمن لاءِ سپورٽ جي ٽئين سطح تي عمل ڪيو ويو آھي. . ٽئين سطح ۾ بنيادي مدد شامل آهي، پر خودڪار ٽيسٽنگ کان سواءِ، سرڪاري تعميرات کي شايع ڪرڻ، يا چيڪ ڪرڻ ته ڇا ڪوڊ ٺاهي سگهجي ٿو.

جو ذريعو: opennet.ru

DDoS تحفظ سان سائيٽن لاءِ قابل اعتماد هوسٽنگ خريد ڪريو، VPS VDS سرور 🔥 DDoS تحفظ سان قابل اعتماد ويب سائيٽ هوسٽنگ خريد ڪريو، VPS VDS سرورز | ProHoster