Rust 1.47 پروگرامنگ لینگویج ریلیز

شائع ہوا سسٹم پروگرامنگ زبان کا 1.47 جاری کریں۔ مورچاموزیلا پروجیکٹ کے ذریعہ قائم کیا گیا ہے۔ زبان میموری کی حفاظت پر توجہ مرکوز کرتی ہے، خودکار میموری کا انتظام فراہم کرتی ہے، اور استعمال کیے بغیر اعلیٰ کام کے متوازی کو حاصل کرنے کا ذریعہ فراہم کرتی ہے۔ کوڑا اکٹھا کرنے والا и رن ٹائم (رن ٹائم معیاری لائبریری کی بنیادی ابتدا اور دیکھ بھال پر ابلتا ہے)۔

زنگ کا خودکار میموری مینجمنٹ پوائنٹرز میں ہیرا پھیری کرتے وقت غلطیوں کو ختم کرتا ہے اور نچلے درجے کی میموری کی ہیرا پھیری سے پیدا ہونے والے مسائل سے بچاتا ہے، جیسے میموری کے علاقے کو آزاد ہونے کے بعد اس تک رسائی حاصل کرنا، null pointer dereferences، buffer overruns وغیرہ۔ لائبریریوں کی تقسیم، اسمبلی کو یقینی بنانے اور پراجیکٹ کے ذریعے انحصار کا انتظام کرنے کے لیے ایک پیکیج مینیجر تیار کیا جا رہا ہے۔ چارج. ایک ذخیرہ لائبریریوں کی میزبانی کے لیے معاون ہے۔ crates.io.

اہم بدعات:

  • اقسام کے لیے سپورٹ کا نفاذ صفوں کسی بھی سائز. اس سے پہلے، تمام عددی اقدار کے لیے عمومی افعال کی وضاحت کرنے میں ناکامی کی وجہ سے، معیاری لائبریری صرف 32 عناصر کے سائز تک کی صفوں کے لیے بلٹ ان ٹریٹ سپورٹ فراہم کرتی تھی (ہر سائز کے خصائل کو جامد طور پر بیان کیا گیا تھا)۔ مستقل جنرکس ("const generics") کی فعالیت کی تخلیق کی بدولت کسی بھی صف کے سائز کے لیے عام افعال کی وضاحت کرنا ممکن ہو گیا، لیکن وہ ابھی تک مستحکم زبان کی خصوصیات میں شامل نہیں ہیں، حالانکہ وہ مرتب کرنے والے میں لاگو ہوتے ہیں اور ابھی ملوث کسی بھی سائز کی صف کی خصوصیات کے لیے معیاری لائبریری میں۔

    مثال کے طور پر، Rust 1.47 میں درج ذیل تعمیر ایک صف کے مواد کو پرنٹ کرے گی، حالانکہ پہلے اس کے نتیجے میں ایک خرابی ہوتی:

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

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

  • ہنگامی حالات میں چھوٹے نشانات (بیک ٹریس) کا آؤٹ پٹ فراہم کیا گیا۔ وہ عناصر جو زیادہ تر حالات میں دلچسپی کے حامل نہیں ہوتے، لیکن آؤٹ پٹ کو بے ترتیبی بناتے ہیں اور مسئلے کی بنیادی وجوہات سے توجہ ہٹاتے ہیں، انہیں ٹریس سے خارج کر دیا جاتا ہے۔ مکمل ٹریس واپس کرنے کے لیے، آپ ماحولیاتی متغیر "RUST_BACKTRACE=full" استعمال کر سکتے ہیں۔ مثال کے طور پر، کوڈ کے لیے

    fn main() {
    خوف و ہراس!()؛
    }

    پہلے، ٹریس 23 مراحل میں آؤٹ پٹ تھا، لیکن اب اسے کم کر دیا جائے گا
    3 اقدامات جو آپ کو فوری طور پر جوہر کو سمجھنے کی اجازت دیتے ہیں:

    تھریڈ 'مین' 'واضح گھبراہٹ' پر گھبرا گیا، src/main.rs:2:5
    اسٹیک بیک ٹریس:
    0: std::گھبرانا::begin_panic
    /rustc/d…d75a/library/std/src/panicking.rs:497 پر
    1: کھیل کا میدان::مین
    ./src/main.rs:2 پر
    2: core::ops::function::FnOnce::call_once
    /rustc/d…d75a/library/core/src/ops/function.rs:227 پر

  • rustc کمپائلر کو استعمال کرنے کے لیے اپ ڈیٹ کر دیا گیا ہے۔ LLVM 11 (زنگ استعمال کرتا ہے LLVM کے لیے بیک اینڈ کے طور پر کوڈ جنریشن)۔ ایک ہی وقت میں، ورژن 8 تک پرانے LLVMs کے ساتھ تعمیر کرنے کی صلاحیت برقرار ہے، لیکن بطور ڈیفالٹ (میں rust-lang/llvm-project) اب LLVM 11 استعمال کر رہا ہے۔ LLVM 11 آنے والے دنوں میں جاری ہونے کی امید ہے۔
  • ونڈوز پلیٹ فارم پر، rustc کمپائلر کنٹرول فلو انٹیگریٹی چیکس (کنٹرول فلو گارڈ) کو فعال کرنے کے لیے معاونت فراہم کرتا ہے، جسے "-C control-flow-guard" فلیگ کا استعمال کرتے ہوئے چالو کیا جاتا ہے۔ دوسرے پلیٹ فارمز پر اس جھنڈے کو ابھی نظر انداز کر دیا گیا ہے۔
  • APIs کا ایک نیا حصہ مستحکم زمرہ میں منتقل کر دیا گیا ہے، بشمول مستحکم
    شناخت::نیا_را،
    رینج::is_empty،
    رینج شامل::is_empty،
    نتیجہ::as_deref،
    نتیجہ::as_deref_mut،
    Vec::لیک،
    پوائنٹر::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_whitespace, is_ascii_whitespace and is charascii_con8.
  • فری بی ایس ڈی کے لیے ملوث FreeBSD 11.4 سے ٹول کٹ (FreeBSD 10 LLVM 11 کو سپورٹ نہیں کرتا)۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں