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

شائع ہوا سسٹم پروگرامنگ زبان کا 1.45 جاری کریں۔ مورچاموزیلا پروجیکٹ کے ذریعہ قائم کیا گیا ہے۔ زبان میموری کی حفاظت پر توجہ مرکوز کرتی ہے، خودکار میموری کا انتظام فراہم کرتی ہے، اور کوڑا اٹھانے والے کا استعمال کیے بغیر اعلیٰ کام کے متوازی کو حاصل کرنے کے لیے ٹولز فراہم کرتی ہے۔ رن ٹائم.

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

اہم بدعات:

  • طویل عرصے سے ختم کر دیا خامی انٹیجرز اور فلوٹنگ پوائنٹ نمبرز کے درمیان تبادلوں کو انجام دیتے وقت۔ چونکہ رسٹ کمپائلر LLVM کو بیک اینڈ کے طور پر استعمال کرتا ہے، اس لیے قسم کی تبدیلی کی کارروائیاں LLVM انٹرمیڈیٹ کوڈ ہدایات کے ذریعے انجام دی گئیں جیسے fptoui، جس میں ایک اہم خصوصیت ہے - غیر متعینہ رویہ اگر نتیجے میں آنے والی قدر ہدف کی قسم میں فٹ نہیں ہوتی ہے۔ مثال کے طور پر، جب قسم f300 کے ساتھ فلوٹ ویلیو 32 کو انٹیجر ٹائپ u8 میں تبدیل کرتے ہیں، تو نتیجہ غیر متوقع ہوتا ہے اور مختلف سسٹمز پر مختلف ہو سکتا ہے۔ مسئلہ یہ ہے کہ یہ خصوصیت اس کوڈ میں ظاہر ہوتی ہے جس پر "غیر محفوظ" کا نشان نہیں ہے۔

    Rust 1.45 کے مطابق، قسم کے سائز کے اوور فلو کے رویے کو سختی سے کنٹرول کیا جاتا ہے، اور "as" تبادلوں کا آپریشن اوور فلو کو چیک کرتا ہے اور ٹارگٹ ٹائپ کی زیادہ سے زیادہ یا کم سے کم قدر میں تبدیل ہونے پر مجبور کرتا ہے (مثال کے طور پر اوپر، ایک قدر 300 کو 255 میں تبدیل کیا جائے گا)۔ اس طرح کے چیک کو غیر فعال کرنے کے لیے، اضافی API کالز "{f64, f32}::to_int_unchecked" فراہم کی جاتی ہیں، جو غیر محفوظ موڈ میں کام کرتی ہیں۔

    fn cast(x: f32) -> u8 {
    x بطور u8
    }

    fn main() {
    let too_big = 300.0;
    let too_small = -100.0؛
    let nan = f32::NAN؛

    let x: f32 = 1.0؛
    let y: u8 = غیر محفوظ { x.to_int_unchecked() };

    println!("too_big_casted = {}", cast(too_big)); // آؤٹ پٹ 255
    println!(«too_small_casted = {}», cast(too_small)); // на выходе 0
    println!("not_a_number_casted = {}", cast(nan)); // آؤٹ پٹ 0
    }

  • مستحکم استعمال کریں۔ طریقہ کار میکروفنکشن جیسے تاثرات، ٹیمپلیٹس اور بیانات۔ پہلے، اس طرح کے میکرو کو ہر جگہ نہیں بلایا جا سکتا تھا، لیکن صرف کوڈ کے کچھ حصوں میں (ایک علیحدہ کال کے طور پر، دوسرے کوڈ کے ساتھ جڑے ہوئے نہیں)۔ جس طرح سے میکرو کو بلایا جا سکتا ہے اس کو بڑھانا، فنکشنز کی طرح، ویب فریم ورک کو کام کرنے کی ضروریات میں سے ایک تھا۔ راکٹ زنگ کی مستحکم ریلیز میں۔ اس سے پہلے، راکٹ میں ہینڈلرز کی وضاحت میں اضافی لچک حاصل کرنے کے لیے "proc_macro_hygiene" نامی تجرباتی خصوصیت کو فعال کرنے کی ضرورت ہوتی ہے، جو Rust کے مستحکم ورژن میں دستیاب نہیں ہے۔ یہ فعالیت اب زبان کی مستحکم ریلیز میں بنائی گئی ہے۔
  • رینج کی اقدار پر اعادہ کرنے کے لیے "char" قسم کے ساتھ رینجز استعمال کرنے کی اجازت ہے (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    'a' میں ch کے لیے..='z' {
    پرنٹ!("{}", ch);
    }
    println!(); // پرنٹ کریں گے "abcdefghijklmnopqrstuvwxyz"

  • APIs کا ایک نیا حصہ مستحکم زمرہ میں منتقل کر دیا گیا ہے، بشمول مستحکم
    قوس:: as_ptr،
    BTreeMap::remove_entry،
    Rc::as_ptr،
    rc::کمزور::as_ptr،
    rc::کمزور::from_raw،
    rc::Weak::into_raw،
    str::strip_prefix،
    str::strip_sufix،
    مطابقت پذیری:: کمزور:: as_ptr،
    مطابقت پذیری::کمزور::from_raw،
    مطابقت پذیری::کمزور::میں_را،
    char::UNICODE_VERSION،
    span::solved_at،
    اسپین::located_at،
    span::mixed_site،
    unix::process::CommandExt::arg0.

  • rustc کمپائلر نے "target-feature" پرچم کا استعمال کرتے ہوئے مختلف ٹارگٹ پلیٹ فارم فیچرز کو اوور رائیڈ کرنے کے لیے سپورٹ شامل کیا ہے، مثال کے طور پر، "-C target-feature=+avx2,+fma"۔ نئے جھنڈے بھی شامل کیے گئے ہیں:
    کریش ہینڈلنگ کی حکمت عملی سے قطع نظر ان وائنڈ کال ٹیبلز بنانے کے لیے "فورس ان وائنڈ ٹیبلز"۔ "embed-bitcode" یہ کنٹرول کرنے کے لیے کہ آیا LLVM بٹ کوڈ جنریٹڈ rlibs میں شامل ہے۔ تعمیراتی وقت اور ڈسک کی جگہ کی کھپت کو بہتر بنانے کے لیے کارگو میں "ایمبیڈ بٹ کوڈ" جھنڈا بطور ڈیفالٹ فعال ہوتا ہے۔

  • mipsel-sony-psp اور thumbv7a-uwp-windows-msvc پلیٹ فارمز کے لیے تیسرے درجے کی مدد فراہم کی گئی ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ اور سرکاری عمارتوں کی اشاعت کے بغیر۔

اس کے علاوہ، آپ نوٹ کر سکتے ہیں کہانی سب سے آسان بنانے کے بارے میں ایپس زنگ کی زبان میں، سسٹم بوٹ لوڈر کا استعمال شروع کرنا اور آپریٹنگ سسٹم کے بجائے خود ساختہ لوڈنگ کے لیے تیار۔
مضمون اس سلسلے کا پہلا مضمون ہے جو کم درجے کی پروگرامنگ اور او ایس ڈیولپمنٹ میں ان تکنیکوں کا مظاہرہ کرنے کے لیے وقف ہے۔

ماخذ: opennet.ru

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