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

شايع ٿيل سسٽم پروگرامنگ ٻولي جو 1.47 جاري ڪيو زنگ، Mozilla پروجيڪٽ پاران ٺهرايو ويو. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي، خودڪار ميموري مينيجمينٽ مهيا ڪري ٿي، ۽ استعمال ڪرڻ کان سواء اعلي ڪم جي متوازي حاصل ڪرڻ لاء هڪ وسيلو مهيا ڪري ٿي. ڪچرو گڏ ڪندڙ и رن ٽائيم (رن ٽائم کي بنيادي شروعاتي ۽ معياري لائبريري جي سار سنڀال جي حوالي ڪري ٿو).

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

مکيه جدت:

  • قسمن لاء لاڳو حمايت صفون ڪنهن به سائيز. اڳي، سڀني عددي قدرن لاءِ عام ڪمن جي وضاحت ڪرڻ جي ناڪاميءَ جي ڪري، معياري لائبريري صرف 32 عناصر تائين سائيز جي صفن لاءِ بلٽ ان ٽريٽ سپورٽ مهيا ڪري ٿي (هر سائيز جي خاصيتن کي جامد طور تي بيان ڪيو ويو آهي). مستقل generics ("const generics") جي ڪارڪردگي جي تخليق جي مهرباني، اهو ممڪن ٿي ويو ته ڪنهن به صف جي سائيز لاء عام افعال کي بيان ڪرڻ، پر اهي اڃا تائين مستحڪم ٻوليء جي خاصيتن ۾ شامل نه آهن، جيتوڻيڪ اهي مرتب ڪندڙ ۾ لاڳو ڪيا ويا آهن ۽ آهن. هاڻي ملوث ڪنهن به سائيز جي صف جي خاصيتن لاء معياري لائبريري ۾.

    مثال طور، Rust 1.47 ۾ هيٺيون اڏاوت هڪ صف جي مواد کي پرنٽ ڪندي، جيتوڻيڪ اڳ ۾ اهو هڪ غلطي جي نتيجي ۾ هوندو:

    fn main() {
    let xs = [0; 34]؛

    println!("{:?}", xs);
    }

  • مهيا ڪيل ننڍڙن نشانن جي پيداوار (backtrace)، هنگامي حالتن ۾ پيداوار. اهي عنصر جيڪي اڪثر حالتن ۾ دلچسپي نه هوندا آهن، پر پيداوار کي ڇڪيندا آهن ۽ مسئلي جي بنيادي سببن کان ڌيان هٽائي ڇڏيندا آهن، انهن کي نشان کان خارج ڪيو ويو آهي. مڪمل سراغ واپس ڪرڻ لاءِ، توھان استعمال ڪري سگھوٿا ماحوليات جي متغير "RUST_BACKTRACE=full". مثال طور، ڪوڊ لاء

    fn main() {
    هراس!()؛
    }

    اڳي، ٽريس 23 مرحلن ۾ پيداوار هئي، پر هاڻي اهو گهٽجي ويندو
    3 مرحلا جيڪي توھان کي فوري طور تي سمجھڻ جي اجازت ڏين ٿا:

    ٿريڊ 'مئن' گھٻرايل 'واضح خوف' تي، src/main.rs:2:5
    اسٽيڪ backtrace:
    0: std::panicking::begin_panic
    at /rustc/d…d75a/library/std/src/panicking.rs:497
    1: راند جو ميدان:: مکيه
    تي ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    at /rustc/d…d75a/library/core/src/ops/function.rs:227

  • rustc compiler استعمال ڪندي تعمير ڪرڻ لاء اپڊيٽ ڪيو ويو آهي ايل ايل ايم ايم ايڪسڪس (زنگ استعمال ڪري ٿو LLVM هڪ پس منظر جي طور تي ڪوڊ نسل). ساڳئي وقت، پراڻن LLVMs سان تعمير ڪرڻ جي صلاحيت، نسخو 8 تائين، برقرار رکيل آهي، پر ڊفالٽ طور (ان ۾ rust-lang/llvm-project) هاڻي LLVM 11 استعمال ڪري رهيو آهي. LLVM 11 ايندڙ ڏينهن ۾ جاري ٿيڻ جي اميد آهي.
  • ونڊوز پليٽ فارم تي، rustc مرتب ڪندڙ ڪنٽرول فلو انٽيٽيٽيٽي چيڪن (ڪنٽرول فلو گارڊ) کي فعال ڪرڻ لاءِ مدد فراهم ڪري ٿو، "-C control-flow-guard" پرچم استعمال ڪندي چالو ڪيو ويو. ٻين پليٽ فارمن تي هن پرچم کي هاڻي نظر انداز ڪيو ويو آهي.
  • APIs جو هڪ نئون حصو مستحڪم درجي ۾ منتقل ڪيو ويو آهي، بشمول مستحڪم
    سڃاڻپ::new_raw,
    رينج::is_empty,
    RangeInclusive::is_empty,
    نتيجو:: as_deref,
    نتيجو::as_deref_mut,
    ويڪ::ليڪ،
    اشارو::offset_from،
    f32::TAU ۽
    f64::TAU.

  • "const" وصف، جيڪو مستقل جي بدران ڪنهن به حوالي سان استعمال ڪرڻ جي امڪان کي طئي ڪري ٿو، طريقن ۾ استعمال ڪيو ويندو آهي:
    • صفر کان سواءِ سڀني عددن لاءِ نئون؛
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ۽ saturating_mul سڀني عددن لاءِ؛
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitescii_c, is_ascii_whitescii_types and is for charascii_cont8 and is
  • مفت بي ايس ڊي لاءِ ملوث FreeBSD 11.4 کان ٽول ڪٽ (FreeBSD 10 LLVM 11 کي سپورٽ نٿو ڪري).

جو ذريعو: opennet.ru

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