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

Release 1.47 of the Rust system programming language، جو بنياد Mozilla پروجيڪٽ پاران، شايع ڪيو ويو آھي. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي، خودڪار ميموري مئنيجمينٽ مهيا ڪري ٿي، ۽ گاربيج ڪليڪٽر يا رن ٽائم استعمال ڪرڻ کان سواءِ اعليٰ ڪم جي برابري حاصل ڪرڻ جا وسيلا مهيا ڪري ٿي (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).

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

مکيه جدت:

  • ثالثي سائيز جي صفن لاءِ خصوصيتن لاءِ لاڳو ڪيل سپورٽ. اڳي، سڀني عددي قدرن لاءِ عام ڪمن جي وضاحت ڪرڻ جي ناڪاميءَ جي ڪري، معياري لائبريري صرف 32 عناصر تائين سائيز جي صفن لاءِ بلٽ ان ٽريٽ سپورٽ مهيا ڪري ٿي (هر سائيز جي خاصيتن کي مستحڪم طور تي بيان ڪيو ويو آهي). Const generics functionality جي ٺهڻ جي مهرباني، ڪنهن به صف جي سائيز لاءِ عام افعال جي وضاحت ڪرڻ ممڪن ٿي ويو، پر اهي اڃا تائين ٻوليءَ جي مستحڪم خصوصيتن ۾ شامل نه ڪيا ويا آهن، جيتوڻيڪ اهي ڪمپيلر ۾ لاڳو ڪيا ويا آهن ۽ هاڻي معياري لائبريري ۾ استعمال ڪيا ويا آهن. ڪنهن به سائيز جي صف جي قسمن لاء.
    مثال طور، 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

  • LLVM 11 استعمال ڪندي تعمير ڪرڻ لاءِ rustc ڪمپلر کي اپڊيٽ ڪيو ويو آھي (Rust LLVM استعمال ڪري ٿو ڪوڊ جي پيدائش لاءِ پسمنظر). ساڳئي وقت، پراڻي LLVM سان ٺاھڻ جي صلاحيت، ورزن 8 تائين، برقرار رکي وئي آھي، پر ڊفالٽ طور (رسٽ-lang/llvm-project ۾) LLVM 11 ھاڻي استعمال ڪيو ويو آھي. LLVM 11 جي اچڻ جي توقع آھي. ڏينهن.
  • Windows پليٽ فارم تي، rustc compiler ڪنٽرول فلو سالميت چيڪن (ڪنٽرول فلو گارڊ) کي چالو ڪرڻ لاءِ مدد فراهم ڪري ٿو، "-C control-flow-guard" پرچم استعمال ڪندي چالو ڪيو ويو. ٻين پليٽ فارمن تي هن پرچم کي هاڻي نظر انداز ڪيو ويو آهي.
  • API جو هڪ نئون حصو مستحڪم درجي ۾ منتقل ڪيو ويو آهي، جنهن ۾ مستحڪم سڃاڻپ::new_raw، Range::is_empty، RangeInclusive::is_empty، نتيجو::as_deref، نتيجو::as_deref_mut، Vec::leak، pointer::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 لاءِ، FreeBSD 11.4 مان ٽول ڪٽ استعمال ٿئي ٿي (FreeBSD 10 LLVM 11 کي سپورٽ نٿو ڪري).

کان ورتو ويو opennet.ru

جو ذريعو: linux.org.ru

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