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}؛
  • کے لیے Linux ڈیبگ کی معلومات کو الگ سے محفوظ کرنے کی صلاحیت شامل کی گئی (اسپلٹ ڈیبگ انفو)، جو پہلے صرف پلیٹ فارم کے لیے دستیاب تھی۔ 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 کے نفاذ میں، UWB چپس (الٹرا وائیڈ بینڈ) کے اسٹیک میں اور ورچوئلائزیشن فریم ورک میں (Android ورچوئلائزیشن فریم ورک) Tensor G2 چپ سے وابستہ ہے۔ کے لیے Android نئے بلوٹوتھ اور وائی فائی اسٹیکس، جو زنگ میں دوبارہ لکھے گئے ہیں، بھی تیار کیے جا رہے ہیں۔ مجموعی حکمت عملی یہ ہے کہ سیکورٹی کو بتدریج مضبوط کیا جائے، پہلے سب سے زیادہ کمزور اور اہم سافٹ ویئر کے اجزاء کو Rust میں منتقل کرکے، اور پھر دیگر متعلقہ ذیلی نظاموں میں توسیع کر کے۔ پچھلے سال، زنگ کو پلیٹ فارم کی ترقی کے لیے قبول کی جانے والی زبانوں میں شامل کیا گیا تھا۔ Android.

ماخذ: opennet.ru

DDoS تحفظ، VPS VDS سرورز والی سائٹوں کے لیے قابل اعتماد ہوسٹنگ خریدیں۔ DDoS تحفظ، VPS VDS سرورز کے ساتھ قابل اعتماد ویب سائٹ ہوسٹنگ خریدیں۔ ProHoster