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

Rust 1.66 عام مقصد کی پروگرامنگ لینگویج کی ریلیز، جسے Mozilla پروجیکٹ نے قائم کیا تھا، لیکن اب اسے آزاد غیر منافع بخش تنظیم Rust Foundation کے زیر اہتمام تیار کیا گیا ہے، شائع کیا گیا ہے۔ زبان میموری کی حفاظت پر توجہ مرکوز کرتی ہے اور کوڑا اٹھانے والے اور رن ٹائم کے استعمال سے گریز کرتے ہوئے اعلی ملازمت کے متوازی کو حاصل کرنے کے ذرائع فراہم کرتی ہے (رن ٹائم کو معیاری لائبریری کی بنیادی شروعات اور دیکھ بھال تک کم کیا جاتا ہے)۔

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

Reference چیکنگ، آبجیکٹ کی ملکیت پر نظر رکھنے، آبجیکٹ کے لائف ٹائم (اسکوپس) کا ٹریک رکھنے اور کوڈ پر عمل درآمد کے دوران میموری تک رسائی کی درستگی کا اندازہ لگانے کے ذریعے رسٹ میں میموری کی حفاظت فراہم کی جاتی ہے۔ زنگ انٹیجر اوور فلو کے خلاف بھی تحفظ فراہم کرتا ہے، استعمال سے پہلے متغیر اقدار کی لازمی ابتداء کی ضرورت ہوتی ہے، معیاری لائبریری میں غلطیوں کو بہتر طریقے سے ہینڈل کرتا ہے، غیر متغیر حوالہ جات اور متغیرات کے تصور کو بطور ڈیفالٹ لاگو کرتا ہے، منطقی غلطیوں کو کم کرنے کے لیے مضبوط جامد ٹائپنگ پیش کرتا ہے۔

اہم اختراعات:

  • عددی نمائندگی کے ساتھ شماروں میں ("#[repr(Int)]" وصف)، امتیاز کرنے والے کے واضح اشارے (شمار ​​میں اختیار کی تعداد) کی اجازت ہے، چاہے گنتی میں فیلڈز ہوں۔ #[repr(u8)] enum Foo { A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • core::hint::black_box فنکشن شامل کیا گیا، جو صرف موصول ہونے والی قدر کو لوٹاتا ہے۔ چونکہ کمپائلر کا خیال ہے کہ ایک دیا ہوا فنکشن ایک خاص کام کرتا ہے، بلیک_باکس فنکشن کا استعمال کمپائلر کے لوپس کی اصلاح کو غیر فعال کرنے کے لیے کیا جا سکتا ہے کوڈ کی کارکردگی کی جانچ کرتے وقت یا تیار کردہ مشین کوڈ کی جانچ کرتے وقت (تاکہ کمپائلر کوڈ کو ناقابل استعمال نہ سمجھے اور اسے ہٹا دے یہ). مثال کے طور پر، ذیل کی مثال میں، black_box(v.as_ptr()) کی وضاحت کرنا کمپائلر کو یہ ماننے سے روکتا ہے کہ ویکٹر v استعمال میں نہیں ہے۔ std::hint::black_box استعمال کریں؛ fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i)؛ black_box(v.as_ptr())؛ } }
  • پیکیج مینیجر "کارگو" "ہٹائیں" کمانڈ پیش کرتا ہے، جو آپ کو کمانڈ لائن سے Cargo.toml مینی فیسٹ سے انحصار ہٹانے کی اجازت دیتا ہے۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{first, last, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASI استعمال کرتے وقت stdio لاک کی اقسام کے لیے AsFd نفاذ شامل کریں۔
    • impl TryFrom > باکس کے لیے<[T; ن]>
    • core::hint::black_box
    • دورانیہ::try_from_secs_{f32,f64}
    • آپشن::انزپ کریں۔
    • std::os::fd
  • تمثیلوں میں رینجز "..X" اور "..=X" کے استعمال کی اجازت ہے۔
  • rustc کمپائلر کے فرنٹ اینڈ اور LLVM کے بیک اینڈ کو جمع کرتے وقت، آپٹیمائزیشن موڈز LTO (Link Time Optimization) اور BOLT (Binary Optimization and Layout Tool) استعمال کیے جاتے ہیں، جو نتیجے میں آنے والے کوڈ کی کارکردگی کو بڑھانے اور میموری کی کھپت کو کم کرنے کی اجازت دیتے ہیں۔
  • حمایت کی تیسری سطح armv5te-none-eabi اور thumbv5te-none-eabi پلیٹ فارمز کے لیے نافذ کی گئی ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔
  • macOS یونیورسل لائبریریوں کے ساتھ لنک کرنے کے لیے مدد شامل کی گئی۔

مزید برآں، ہم GCC کوڈ بیس میں Rust Language Compiler (gccrs) کے سامنے والے سرے کی شمولیت کو نوٹ کر سکتے ہیں۔ فرنٹ اینڈ GCC 13 برانچ میں شامل ہے، جو مئی 2023 میں جاری کیا جائے گا۔ جی سی سی 13 کے ساتھ شروع کرتے ہوئے، مقامی جی سی سی ٹولز کو رسٹک کمپائلر انسٹال کرنے کی ضرورت کے بغیر رسٹ لینگویج میں پروگراموں کو مرتب کرنے کے لیے استعمال کیا جا سکتا ہے، جو LLVM ڈیولپمنٹس کا استعمال کرتے ہوئے بنایا گیا ہے۔ Rust کا GCC 13 کا نفاذ ایک بیٹا ورژن ہو گا، جو بطور ڈیفالٹ فعال نہیں ہوتا ہے۔

ماخذ: opennet.ru

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