پروگرامنگ لینگویج رسٹ 2021 کی ریلیز (1.56)

سسٹم پروگرامنگ لینگویج Rust 1.56 کی ریلیز، جسے Mozilla پروجیکٹ نے قائم کیا تھا، لیکن اب یہ آزاد غیر منافع بخش تنظیم Rust Foundation کے زیر اہتمام تیار کیا گیا ہے، شائع کیا گیا ہے۔ باقاعدہ ورژن نمبر کے علاوہ، ریلیز کو Rust 2021 بھی نامزد کیا گیا ہے اور یہ پچھلے تین سالوں میں تجویز کردہ تبدیلیوں کے استحکام کی نشاندہی کرتا ہے۔ رسٹ 2021 اگلے تین سالوں میں فعالیت کو بڑھانے کی بنیاد کے طور پر بھی کام کرے گا، جیسا کہ گزشتہ تین سالوں میں رسٹ 2018 کی ریلیز زبان کی ترقی کی بنیاد بنی۔

مطابقت کو برقرار رکھنے کے لیے، ڈویلپرز اپنے پروگراموں میں "2015"، "2018" اور "2021" لیبل استعمال کر سکتے ہیں، جس سے پروگراموں کو رسٹ کے منتخب کردہ ایڈیشنز کے مطابق لینگویج سٹیٹ سلائسز سے منسلک کیا جا سکتا ہے۔ ایڈیشنز کو غیر مطابقت پذیر تبدیلیوں کو الگ کرنے کے لیے متعارف کرایا گیا تھا اور "[پیکیج]" سیکشن میں "ایڈیشن" فیلڈ کے ذریعے کارگو پیکجوں کے میٹا ڈیٹا میں ترتیب دیا گیا ہے۔ مثال کے طور پر، "2018" ایڈیشن میں 2018 کے آخر تک مستحکم ہونے والی فعالیت شامل ہے اور اس میں مزید تمام تبدیلیوں کا بھی احاطہ کیا گیا ہے جو مطابقت کو نہیں توڑتی ہیں۔ 2021 ایڈیشن میں موجودہ 1.56 ریلیز میں تجویز کردہ اور مستقبل کے نفاذ کے لیے منظور شدہ انٹرآپریبلٹی کو توڑنے والی خصوصیات بھی شامل ہیں۔ خود زبان کے علاوہ، ایڈیٹرز ٹولز اور دستاویزات کی حالت کو بھی مدنظر رکھتے ہیں۔

زنگ 2021 میں ریکارڈ کی گئی بڑی عدم مطابقتیں:

  • بندش میں علیحدہ کیپچر - بندش اب پورے شناخت کنندہ کے بجائے انفرادی فیلڈ کے ناموں کو کیپچر کر سکتی ہے۔ مثال کے طور پر، "|| ax + 1 "a" کے بجائے صرف "ax" کو پکڑے گا۔
  • صفوں کے لیے IntoIterator خاصیت: array.into_iter() آپ کو حوالہ جات کے بجائے اقدار کے لحاظ سے سرنی عناصر پر اعادہ کرنے کی اجازت دیتا ہے۔
  • macro_rules میں "|" اظہار کی پروسیسنگ کو تبدیل کر دیا گیا ہے۔ (بولین یا) پیٹرن میں - میچوں میں ":pat" وضاحت کنندہ اب "A | بی"۔
  • کارگو پیکیج مینیجر میں بطور ڈیفالٹ فیچر ریزولور کا دوسرا ورژن شامل ہوتا ہے، جس کے لیے سپورٹ Rust 1.51 میں ظاہر ہوتا ہے۔
  • TryFrom، TryInto اور FromIterator کی خصوصیات کو پیشگی معیاری لائبریری ماڈیول میں شامل کر دیا گیا ہے۔
  • گھبراہٹ!(..) اور زور دے کر!(expr, ..) میکرو اب ہمیشہ format_args!(..) کو سٹرنگز کو فارمیٹ کرنے کے لیے استعمال کرتے ہیں، جیسا کہ println!()۔
  • ident#، ident»..." اور ident'...' کے تاثرات زبان کے نحو میں محفوظ ہیں۔
  • bare_trait_objects اور ellipsis_inclusive_range_patterns وارننگز کو غلطیوں پر منتقل کر دیا گیا۔

زنگ 1.56 میں نیا:

  • Cargo.toml میں، "[پیکیج]" سیکشن میں، زنگ-ورژن فیلڈ کو شامل کیا گیا ہے، جس کے ذریعے آپ کریٹ پیکج کے لیے زنگ کے کم از کم معاون ورژن کا تعین کر سکتے ہیں۔ اگر موجودہ ورژن مخصوص پیرامیٹر سے میل نہیں کھاتا ہے، تو کارگو غلطی کے پیغام کے ساتھ کام کرنا چھوڑ دے گا۔
  • جب "بائنڈنگ @ پیٹرن" ایکسپریشنز کا استعمال کرتے ہوئے پیٹرن کی مماثلت ہوتی ہے، تو اضافی بائنڈنگز کی وضاحت کے لیے سپورٹ فراہم کی جاتی ہے (مثال کے طور پر، "let matrix @ Matrix { row_len, .. } = get_matrix();")۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BfWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::srink_to
    • String::srink_to
    • OsString::shrink_to
    • PathBuf::srink_to
    • بائنری ہیپ:: shrink_to
    • VecDeque::srink_to
    • ہیش میپ:: shrink_to
    • ہیش سیٹ:: shrink_to
  • "const" وصف، جو مستقل کی بجائے کسی بھی سیاق و سباق میں استعمال کرنے کے امکان کا تعین کرتا ہے، فنکشنز میں استعمال ہوتا ہے۔
    • std::mem::transmute
    • [T]::سب سے پہلے
    • [T]::split_first
    • [T]::آخری
    • [T]::split_last
  • کمپائلر کو LLVM ورژن 13 استعمال کرنے کے لیے تبدیل کر دیا گیا ہے۔
  • سپورٹ کی دوسری سطح aarch64-apple-ios-sim پلیٹ فارم کے لیے اور تیسری سطح powerpc-unknown-freebsd اور riscv32imc-esp-espidf پلیٹ فارمز کے لیے نافذ کی گئی ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔

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

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

ماخذ: opennet.ru

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