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

سے لیا opennet.ru

ماخذ: linux.org.ru

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