مورچا 1.53 جاری ہوا۔ گوگل لینکس کرنل میں رسٹ سپورٹ شامل کرنے کے لیے فنڈ دے گا۔

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

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

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

  • صفوں کے لیے، IntoIterator خاصیت کو لاگو کیا گیا ہے، جو آپ کو قدروں کے لحاظ سے سرنی عناصر کی تکرار کو منظم کرنے کی اجازت دیتا ہے: i کے لیے [1, 2, 3] {.. }

    ارے کو ان طریقوں تک منتقل کرنا بھی ممکن ہے جو تکرار کرنے والوں کو قبول کرتے ہیں، مثال کے طور پر: let set = BTreeSet::from_iter([1, 2, 3]); some_iterator.chain([1]).zip([1, 2, 3]) میں (a, b) کے لیے { .. }

    پہلے، IntoIterator کو صرف صف کے حوالہ جات کے لیے لاگو کیا گیا تھا، یعنی قدروں پر اعادہ کرنے کے لیے حوالہ جات ("&[1, 2, 3]") یا "[1, 2, 3].iter()" کے استعمال کی ضرورت ہوتی ہے۔ صفوں کے لیے IntoIterator کے نفاذ میں مطابقت کے مسائل کی وجہ سے رکاوٹ پیدا ہوئی تھی جس کی وجہ سے پہلے کمپائلر array.into_iter() سے (&array).into_iter() میں تبدیل ہوا تھا۔ ان مسائل کو ایک کام کے ساتھ حل کیا گیا تھا - مرتب کرنے والا array.into_iter() کو (&array).into_iter() میں تبدیل کرتا رہے گا گویا کہ IntoIterator خاصیت کا کوئی نفاذ نہیں ہے، لیکن صرف اس وقت جب ".into_iter( کا استعمال کرتے ہوئے طریقہ کو کال کریں گے۔ )" نحو اور کالز کو چھوئے بغیر فارم میں "[1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]) )"۔

  • تاثرات کی وضاحت کرنا ممکن ہے "|" (منطقی یا آپریشن) ٹیمپلیٹ کے کسی بھی حصے میں، مثال کے طور پر، بجائے “Some(1) | Some(2)" اب آپ "Some(1 | 2)" لکھ سکتے ہیں: میچ کا نتیجہ { Ok(Some(1 | 2)) => { .. } Err(MyError { قسم: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • شناخت کنندگان میں غیر ASCII حروف کے استعمال کی اجازت ہے، بشمول یونیکوڈ UAX 31 تفصیلات میں بیان کردہ کوئی بھی قومی حروف، لیکن ایموجی حروف کو چھوڑ کر۔ اگر آپ مختلف لیکن ملتے جلتے حروف کا استعمال کرتے ہیں، تو مرتب کرنے والا انتباہ جاری کرے گا۔ const BLÅHAJ: &str = "🦈"; ساخت 人 { 名字: String, } let α = 1؛ let'os = 2؛ انتباہ: شناخت کنندہ جوڑا 's' اور 's' کے درمیان الجھا ہوا سمجھا جاتا ہے
  • APIs کا ایک نیا حصہ مستحکم زمرہ میں منتقل کر دیا گیا ہے، بشمول درج ذیل مستحکم:
    • array::from_ref
    • array::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::retain
    • BTreeMap::retain
    • BfReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • دورانیہ::زیرو
    • دورانیہ::MAX
    • دورانیہ:: is_zero
    • دورانیہ:: saturating_add
    • دورانیہ:: saturating_sub
    • دورانیہ:: saturating_mul
    • f32::is_subnormal
    • f64::is_subnormal
    • صفوں کے لیے IntoIterator
    • {integer}::BITS
    • io::Error::غیر تعاون یافتہ
    • نان زیرو*::لیڈنگ_زیرو
    • نان زیرو*::ٹریلنگ_زیرو
    • اختیار:: داخل کریں۔
    • ترتیب دینا::is_eq
    • آرڈرنگ::is_ne
    • آرڈرنگ::is_lt
    • آرڈرنگ::is_gt
    • آرڈرنگ::is_le
    • آرڈرنگ::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • جھانکنے کے قابل:: peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • سلائس::IterMut::as_slice
    • AsRef<[T]> سلائس کے لیے::IterMut
    • impl SliceIndex for (Bound ، پابند )
    • Vec::extend_from_within
  • wasm64-unknown-unknown پلیٹ فارم کے لیے سپورٹ کی تیسری سطح کو نافذ کر دیا گیا ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔
  • کارگو پیکیج مینیجر کو بطور ڈیفالٹ گٹ ریپوزٹری (HEAD) کی مین برانچ کے لیے "مین" کا نام استعمال کرنے کے لیے منتقل کر دیا گیا ہے۔ ریپوزٹریز میں میزبانی کردہ انحصار جو ماسٹر کے بجائے مین نام کا استعمال کرتے ہیں اب برانچ = "مین" کو ترتیب دینے کی ضرورت نہیں ہے۔
  • کمپائلر میں، LLVM کے کم از کم ورژن کی ضروریات کو LLVM 10 تک بڑھا دیا گیا ہے۔

مزید برآں، ہم Rust زبان میں اجزاء تیار کرنے کے لیے ٹولز کے لینکس کرنل میں انضمام کی ترقی کے لیے فنڈنگ ​​کی فراہمی کو نوٹ کر سکتے ہیں۔ یہ کام ISRG تنظیم (انٹرنیٹ سیکیورٹی ریسرچ گروپ) کی سرپرستی میں پروسیمو پروجیکٹ کے فریم ورک کے اندر کیا جائے گا، جو لیٹس انکرپٹ پروجیکٹ کا بانی ہے اور ایچ ٹی ٹی پی ایس کو فروغ دیتا ہے اور ٹیکنالوجیز کی ترقی کو فروغ دیتا ہے انٹرنیٹ یہ فنڈز گوگل فراہم کرے گا، جو Rust-for-Linux پروجیکٹ کے مصنف Miguel Ojeda کے کام کی ادائیگی کرے گا۔ اس سے پہلے، ISRG اور Google نے پہلے ہی کرل یوٹیلیٹی کے لیے ایک متبادل HTTP بیک اینڈ کی تخلیق اور Apache HTTP سرور کے لیے ایک نئے TLS ماڈیول کی ترقی کے لیے فنڈ فراہم کیا ہے۔

مائیکروسافٹ اور گوگل کے مطابق، تقریباً 70 فیصد خطرات غیر محفوظ میموری ہینڈلنگ کی وجہ سے ہوتے ہیں۔ یہ توقع کی جاتی ہے کہ کرنل کے اجزاء جیسے ڈیوائس ڈرائیورز کو تیار کرنے کے لیے رسٹ لینگویج کا استعمال غیر محفوظ میموری ہینڈلنگ کی وجہ سے پیدا ہونے والی کمزوریوں کے خطرے کو کم کرے گا اور غلطیوں کو ختم کرے گا جیسے میموری کے علاقے کو آزاد ہونے کے بعد اس تک رسائی حاصل کرنا اور بفر باؤنڈز کو ختم کرنا۔

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

ماخذ: opennet.ru

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