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

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

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

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

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

  • عام منسلک اقسام (GAT، Generic Associated Types) کے لیے معاونت شامل کی گئی ہے، جو کسی دوسری قسم کے ساتھ منسلک قسم کے عرفی نام بنانا ممکن بناتی ہے اور آپ کو قسم کے کنسٹرکٹرز کو خصلتوں کے ساتھ منسلک کرنے کی اجازت دیتی ہے۔ خاصیت Foo { قسم بار; }
  • "Let... else" ایکسپریشن کو لاگو کر دیا گیا ہے، جس سے آپ پیٹرن کی مماثلت کی حالت کو براہ راست "لیٹ" ایکسپریشن کے اندر چیک کر سکتے ہیں اور اگر پیٹرن مماثل نہیں ہے تو صوابدیدی کوڈ پر عمل درآمد کر سکتے ہیں۔ let Ok(count) = u64::from_str(count_str) else { گھبراہٹ!("انٹیجر کو پارس نہیں کر سکتے: '{count_str}'"); };
  • بلاک کا نام (لیبل) استعمال کرتے ہوئے بلاک کو ختم کیے جانے والے بلاک کی شناخت کے لیے وقت سے پہلے نامزد کردہ بلاکس سے باہر نکلنے کے لیے بریک اسٹیٹمنٹ کے استعمال کی اجازت دیں۔ let result = 'block: { do_thing (); اگر شرط_نہ_میٹ () { توڑیں 'بلاک 1؛ } do_next_thing(); اگر شرط_نہ_میٹ () { توڑیں 'بلاک 2؛ } do_last_thing(); 3}؛
  • لینکس کے لیے، ڈیبگنگ کی معلومات (اسپلٹ ڈیبگنفو) کو الگ سے محفوظ کرنے کی صلاحیت، جو پہلے صرف macOS پلیٹ فارم کے لیے دستیاب تھی، شامل کی گئی ہے۔ "-Csplit-debuginfo=unpacked" آپشن کی وضاحت کرتے وقت، DWARF فارمیٹ میں debuginfo ڈیٹا کو ".dwo" ایکسٹینشن کے ساتھ کئی الگ آبجیکٹ فائلوں میں محفوظ کیا جائے گا۔ "-Csplit-debuginfo=packed" کی وضاحت کرنے سے ".dwp" فارمیٹ میں ایک واحد پیکیج بن جائے گا جس میں پروجیکٹ کے لیے تمام debuginfo ڈیٹا شامل ہوگا۔ ڈیبگ انفو کو براہ راست ELF آبجیکٹ کے .debug_* سیکشن میں ضم کرنے کے لیے، آپ "-Csplit-debuginfo=off" آپشن استعمال کر سکتے ہیں۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • std::backtrace::backtrace
    • پابند::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • "const" وصف، جو مستقل کی بجائے کسی بھی سیاق و سباق میں استعمال کرنے کے امکان کا تعین کرتا ہے، فنکشنز میں استعمال ہوتا ہے ::offset_from اور ::offset_from
  • LSP (Language Server Protocol) پروٹوکول کے نفاذ کو Rust-analyzer میں منتقل کرنے کے آخری مرحلے کے ایک حصے کے طور پر، Rust Language Server (RLS) کے فرسودہ نفاذ کو ایک سٹب سرور سے تبدیل کر دیا گیا جو ایک انتباہ جاری کرتا ہے۔ مورچا تجزیہ کار کا استعمال کرتے ہوئے.
  • تالیف کے دوران، MIR انٹرمیڈیٹ کوڈ کی ان لائن تعیناتی کے لیے سپورٹ کو فعال کیا جاتا ہے، جو عام کریٹ پیکجوں کی تالیف کی رفتار کو 3-10% تک بڑھاتا ہے۔
  • طے شدہ تعمیرات کو تیز کرنے کے لیے، کارگو پیکیج مینیجر قطار میں عمل درآمد کے منتظر ملازمتوں کی چھانٹی فراہم کرتا ہے۔

مزید برآں، آپ آٹوموٹیو انفارمیشن سسٹم کے اجزاء کو تیار کرنے کے لیے Volvo میں Rust زبان کے استعمال کے بارے میں انٹرویو کو نوٹ کر سکتے ہیں۔ Rust میں موجودہ اور تجربہ شدہ کوڈ کو دوبارہ لکھنے کا کوئی منصوبہ نہیں ہے، لیکن نئے کوڈ کے لیے، Rust کم قیمت پر معیار کو بہتر بنانے کے لیے ترجیحی اختیارات میں سے ایک ہے۔ آٹوموٹیو ایسوسی ایشنز AUTOSAR (AUTomotive Open System architecture) اور SAE (Society of Automotive Engineers) میں Rust زبان کے استعمال سے متعلق ورکنگ گروپس بھی بنائے گئے ہیں۔

اس کے علاوہ، ڈیوڈ کلیڈرماکر، گوگل کے انجینئرنگ کے نائب صدر، نے Android پلیٹ فارم میں استعمال ہونے والے کوڈ کے ترجمے کے بارے میں بات کی جو زنگ میں انکرپشن کیز کو منظم کرنے کے ساتھ ساتھ اسٹیک میں HTTPS پروٹوکول پر DNS کے نفاذ میں Rust کے استعمال کے بارے میں بھی بتایا۔ UWB- چپس (الٹرا وائیڈ بینڈ) کے لیے اور Tensor G2 چپ سے وابستہ ورچوئلائزیشن فریم ورک (Android ورچوئلائزیشن فریم ورک) میں۔ بلوٹوتھ اور وائی فائی کے لیے نئے اسٹیکس، جو زنگ میں دوبارہ لکھے گئے ہیں، اینڈرائیڈ کے لیے بھی تیار کیے جا رہے ہیں۔ عمومی حکمت عملی یہ ہے کہ آہستہ آہستہ سیکیورٹی کو مضبوط کیا جائے، پہلے انتہائی کمزور اور اہم سافٹ ویئر کے اجزاء کو زنگ میں تبدیل کرکے، اور پھر دیگر متعلقہ ذیلی نظاموں تک پھیلانا۔ پچھلے سال، زنگ زبان کو اینڈرائیڈ پلیٹ فارم تیار کرنے کی اجازت دی گئی زبانوں کی فہرست میں شامل کیا گیا تھا۔

ماخذ: opennet.ru

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