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

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

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

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

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

  • کارگو پیکج مینیجر اور crates.io ریپوزٹری نے اسپارس پروٹوکول کے لیے سپورٹ کو مستحکم کیا ہے، جو انڈیکس کے ساتھ کام کرنے کا ایک نیا طریقہ بیان کرتا ہے جو کہ ریپوزٹری میں موجود تمام پیکجوں کے دستیاب ورژن کی عکاسی کرتا ہے۔ نیا پروٹوکول آپ کو crates.io کے ساتھ کام کرنے کی رفتار کو نمایاں طور پر بڑھانے اور ریپوزٹری میں پیکجوں کی تعداد میں مزید اضافے کے ساتھ اسکیلنگ کے مسائل کو حل کرنے کی اجازت دیتا ہے۔

    مکمل انڈیکس ڈاؤن لوڈ کرنے کی وجہ سے ہونے والی تاخیر کو کم کرنے کے لیے، اسپارس میں گٹ کا استعمال کرتے ہوئے انڈیکس تک رسائی کے بجائے HTTPS پر صرف ضروری انڈیکس ڈیٹا کو براہ راست ڈاؤن لوڈ کرنا شامل ہے، جس میں کسی خاص پروجیکٹ کے انحصار کا احاطہ کیا جاتا ہے۔ ایک نئی سروس، index.crates.io، انڈیکس ڈیٹا فراہم کرنے کے لیے استعمال کی جاتی ہے۔ پہلے سے طے شدہ طور پر، نئے پروٹوکول کو Rust 1.70 برانچ میں استعمال کرنے کی منصوبہ بندی کی گئی ہے، اور اس سے پہلے، اسے فعال کرنے کے لیے، آپ ماحولیاتی متغیر "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" کو سیٹ کر سکتے ہیں یا "[رجسٹروں میں پروٹوکول =' پیرامیٹر شامل کر سکتے ہیں۔ crates-io]" .cargo/config.toml فائل 'sparse' کا سیکشن۔

  • "پن!" میکرو کو شامل کیا گیا، جو آپ کو اس کی حالت کی مقامی پننگ کے ساتھ اظہار "T" سے ایک Pin<&mut T> ڈھانچہ بنانے کی اجازت دیتا ہے (Box::pin کے برعکس، یہ ڈھیر پر میموری مختص نہیں کرتا، بلکہ باندھتا ہے۔ اسٹیک کی سطح پر)۔
  • ایک ڈیفالٹ میموری ایلوکیشن ایرر ہینڈلر تجویز کیا گیا ہے، جو معیاری ایلوک پیکج استعمال کرتے وقت استعمال کیا جاتا ہے۔ وہ ایپلیکیشنز جو صرف ایلوک کو فعال کرتی ہیں (بغیر std کے) اب میموری مختص کرنے میں ناکام ہونے پر "گھبراہٹ!" ہینڈلر کو کال کریں گی، جسے اختیاری طور پر "#[panic_handler]" کا استعمال کرتے ہوئے روکا جا سکتا ہے۔ std لائبریری کا استعمال کرنے والے پروگرام غلطی کی معلومات کو stderr اور کریش پر پرنٹ کرنا جاری رکھیں گے۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • {core,std}::pin::pin!
    • سے impl {f32,f64} کے لیے
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut for PathBuf
  • "const" وصف، جو مستقل کی بجائے اسے کسی بھی سیاق و سباق میں استعمال کرنے کے امکان کا تعین کرتا ہے، VecDeque::new فنکشن میں استعمال ہوتا ہے۔
  • اینڈرائیڈ پلیٹ فارم پر کام کرنے کے لیے، اب کم از کم NDK r25 (API 19) کی ضرورت ہے، یعنی کم از کم تعاون یافتہ اینڈرائیڈ ورژن کو 4.4 (KitKat) تک بڑھا دیا گیا ہے۔
  • Sony PlayStation Vita پلیٹ فارم (armv7-sony-vita-newlibeabihf) کے لیے سپورٹ کی تیسری سطح کو نافذ کیا گیا ہے۔ تیسرے درجے میں بنیادی مدد شامل ہوتی ہے، لیکن خودکار جانچ کے بغیر، سرکاری عمارتوں کو شائع کرنا، یا یہ جانچنا کہ آیا کوڈ بنایا جا سکتا ہے۔

ماخذ: opennet.ru

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