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

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

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

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

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

  • دستاویزات میں ایک علیحدہ سیکشن شامل کیا گیا ہے جس میں ABI کی سطح پر مختلف دلیل کی اقسام اور فنکشن کی واپسی کی اقسام کی مطابقت کو بیان کیا گیا ہے۔ پچھلے ورژنز کے مقابلے میں، ABI کی سطح پر "char" اور "u32" کی قسموں کی مطابقت کی ضمانت دی جاتی ہے، جن کا سائز اور سیدھ یکساں ہے۔
  • پہلے دستیاب "any::type_name::" کال کے علاوہ ()"، جو "T" پیرامیٹر میں بیان کردہ قسم کے لیے سٹرنگ کی تفصیل لوٹاتا ہے، "type_name_of_val(&T)" فنکشن شامل کیا گیا ہے، جس سے آپ کسی بھی بے نام حوالہ کی بنیاد پر قسم کی معلومات حاصل کر سکتے ہیں۔ fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter)؛ let sum: i3 = iter.sum(); println!("`{iter_name}` کا مجموعہ {sum} ہے۔"); } آؤٹ پٹ یہ ہے: 'core::array::iter::IntoIter کا مجموعہ ` 32 ہے۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • آرک:: unwrap_or_clone
    • Rc::unwrap_or_clone
    • نتیجہ::معائنہ کریں۔
    • نتیجہ:: معائنہ_کر
    • اختیار:: معائنہ کریں۔
    • type_name_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • سپورٹ کی تیسری سطح {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios اور arm64e-apple-darwin پلیٹ فارمز کے لیے نافذ کی گئی ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔

مزید برآں، ہم تجرباتی ٹاسک شیڈیولر scx_rustland کے مظاہرے کو نوٹ کر سکتے ہیں، جسے Rust زبان میں لکھا گیا ہے اور صارف کی جگہ پر عمل میں لایا گیا ہے (کرنل سے یوزر اسپیس میں ٹاسک شیڈولنگ منطق کی منتقلی BPF کا استعمال کرتے ہوئے sched-ext ٹول کٹ کا استعمال کرتے ہوئے عمل میں لائی جاتی ہے)۔ شیڈیولر کو سی پی یو-انتہائی کاموں پر انٹرایکٹو کاموں کی ترجیح کو بڑھانے کے لیے بہتر بنایا گیا ہے۔ مثال کے طور پر، کرنل بنانے کے ساتھ ساتھ گیمنگ ایپلیکیشن شروع کرنے کے ٹیسٹ میں، scx_rustland شیڈولر نے ہمیں معیاری EEVDF شیڈیولر استعمال کرنے کے مقابلے میں گیم میں زیادہ FPS حاصل کرنے کی اجازت دی۔

ماخذ: opennet.ru

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