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

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

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

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

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

  • ڈیفالٹ پروگرام کریش ہینڈلر (گھبراہٹ) کے ذریعہ جاری کردہ پیغامات کی شکل کو دوبارہ ڈیزائن کیا گیا ہے۔ "گھبراہٹ!" میکرو میں بیان کردہ متن اب اقتباس کے نشانات کے بغیر ایک الگ لائن پر دکھایا گیا ہے، پیغام کو پڑھنے میں آسان بناتا ہے اور جب نیسٹڈ اقتباسات موجود ہوتے ہیں یا متعدد لائنوں میں تقسیم ہوتے ہیں تو الجھن کو ختم کرتے ہیں۔ fn main() { let file = "ferris.txt"؛ گھبراہٹ!("اوہ نہیں! {file:?} نہیں ملی!"); } وہاں تھریڈ 'مین' گھبرا کر 'اوہ نہیں! "ferris.txt" نہیں ملا!', src/main.rs:3:5 تھریڈ 'main' src/main.rs:3:5 پر گھبرا گیا: اوہ نہیں! "ferris.txt" نہیں ملا!

    "assert_eq" اور "assert_ne" میکروز کے متحرک ہونے پر دکھائے جانے والے پیغامات کے آؤٹ پٹ پر بھی دوبارہ کام کیا گیا ہے۔ fn main() { assert_eq!("🦀", "🐟", "ferris is not a fish"); } دھاگہ تھا 'مین' گھبرا کر 'دعویٰ ناکام ہوا: `(بائیں == دائیں)` بائیں: `"🦀"`، دائیں: `"🐟"`: فیرس مچھلی نہیں ہے'، src/main.rs: 2 :5 تھریڈ 'main' src/main.rs:2:5 پر گھبرا گیا: دعویٰ `left == right` ناکام ہوا: ferris is not a fish left: "🦀" right: "🐟"

  • RFC 3184 کے مطابق، thread-local (thread_local) LocalKey سٹوریج کیز کو براہ راست ہیرا پھیری کرنے کی صلاحیت شامل کر دی گئی ہے۔ > اور LocalKey > get(), set(), take() اور replace() طریقوں کے استعمال کے ذریعے، "with(|inner| ...)" بندش کے بجائے، جو پہلے سے طے شدہ کے لیے اضافی ابتدائی کوڈ انجام دینے سے گریز کرتا ہے۔ میکرو "thread_local!" کا استعمال کرتے وقت نئے تھریڈز کے لیے مخصوص کردہ اقدار thread_local! { جامد چیزیں: سیل > = سیل::نیا(Vec::new())؛ } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // بن گیا THINGS.set(vec![3, 1, 2]); // ... // let v = THINGS.with(|i| i.take()); // بن گیا let v:Vec = THINGS.take(); }
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • غیر دستخط شدہ {integer}::div_ceil
    • غیر دستخط شدہ {integer}::next_multiple_of
    • غیر دستخط شدہ {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey :: >::حاصل کریں۔
    • LocalKey :: >::سیٹ
    • LocalKey :: >::لے لو
    • LocalKey :: >::بدلیں۔
    • LocalKey :: >::with_borrow
    • LocalKey :: >::with_borrow_mut
    • LocalKey :: >::سیٹ
    • LocalKey :: >::لے لو
    • LocalKey :: >::بدلیں۔
  • "const" وصف، جو مستقل کی بجائے اسے کسی بھی سیاق و سباق میں استعمال کرنے کے امکان کا تعین کرتا ہے، افعال میں استعمال ہوتا ہے:
    • rc::کمزور::نیا
    • مطابقت پذیری::کمزور::نیا
    • NonNull::as_ref
  • کمپائلر GCC اور Clang کی طرح ".comment" سیکشن میں ورژن کی معلومات کی ریکارڈنگ فراہم کرتا ہے۔
  • پلیٹ فارمز aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl اور x86_64-unknown-linux پلیٹ فارمز کے لیے تیسرے درجے کی حمایت کا نفاذ کیا گیا ہے۔ -اوہو تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔
  • ہدف کے پلیٹ فارم کے لیے سپورٹ کی دوسری سطح wasm32-wasi-preview1-threads کو لاگو کر دیا گیا ہے۔ سپورٹ کے دوسرے درجے میں اسمبلی کی گارنٹی شامل ہے۔

ماخذ: opennet.ru

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