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

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

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

اہم بدعات:

  • انتساب کا استعمال کرتے ہوئے ڈھانچے (سٹرکچر) اور شماریات (ویریئنٹ بلاک کے ساتھ enum) کو نشان زد کرنے کی صلاحیت شامل کی گئی۔#[غیر_مکمل]"، جو کی اجازت دیتا ہے اعلان کردہ ڈھانچے اور شماریات میں مستقبل میں نئے فیلڈز اور مختلف حالتوں کے اضافے کی اجازت دیتا ہے۔ مثال کے طور پر، عوامی طور پر اعلان کردہ فیلڈز کے ساتھ ڈھانچے والے ماڈیولز کے ڈویلپر "#[non_exhaustive]" کا استعمال کر کے ان ڈھانچے کو نشان زد کر سکتے ہیں جہاں مستقبل میں نئی ​​فیلڈز شامل کی جا سکتی ہیں۔ اب تک، ایسے حالات میں، ڈویلپر کو نجی طور پر اعلان کردہ فیلڈز اور فیلڈز کی ایک مقررہ فہرست کے پابند ہونے کے درمیان انتخاب کرنے پر مجبور کیا جاتا تھا۔ نیا وصف اس حد کو ہٹاتا ہے اور پہلے مرتب کردہ بیرونی کوڈ کو توڑنے کے خطرے کے بغیر مستقبل میں نئے فیلڈز کے اضافے کی اجازت دیتا ہے۔ کریٹ پیکجوں میں، "میچ" سیکشن میں مختلف حالتوں کا موازنہ کرتے وقت، مستقبل کے ممکنہ فیلڈز کا احاطہ کرنے کے لیے ایک واضح "_ => {...}" ماسک کی ضرورت ہوتی ہے۔ بصورت دیگر، نئے فیلڈز کو شامل کرتے وقت ایک غلطی ہو جائے گی۔
  • شامل کیا گیا۔ ایک قسم کے سیاق و سباق میں میک!() پروسیجرل میکرو کو کال کرنے کی صلاحیت۔ مثال کے طور پر، اب آپ "type Foo = expand_to_type!(bar);" لکھ سکتے ہیں۔ اگر "expand_to_type" ایک پروسیجرل میکرو ہے۔
  • "بیرونی { … }" بلاکس میں شامل کیا طریقہ کار اور خصوصیت والے میکروز کو استعمال کرنے کی صلاحیت، بشمول "bang!()" میکرو، مثال کے طور پر:

    macro_rules! make_item { ($name:ident) => { fn $name(); } }

    بیرونی {
    make_item!(alpha);
    make_item!(beta);
    }

    بیرونی "C" {
    #[my_identity_macro]
    fn foo();
    }

  • میکروز میں لاگو کیا "macro_rules!" پیدا کرنے کی صلاحیت عناصر "macro_rules!" کی تخلیق فنکشن جیسے میکروز ("mac!()") اور انتساب پر مبنی میکروز ("#[mac]") دونوں میں ممکن ہے۔
  • $m:meta مماثل عنصر میں شامل کیا صوابدیدی ٹوکن شماری اقدار ('[TOKEN_STREAM]', '{TOKEN_STREAM}' اور '(TOKEN_STREAM)') کے لیے تعاون، مثال کے طور پر:

    macro_rules! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path);
    accept_meta!( my::path = "lit" );
    accept_meta!( my::path (abc) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( my::path { abc } );

  • Rust 2015 موڈ میں، NLL (Non-Lexical Lifetimes) تکنیک کا استعمال کرتے ہوئے قرض لینے والے کی طرف سے پتہ چلنے والے مسائل کے لیے غلطی کی رپورٹنگ اب فعال ہے۔ پہلے، رسٹ 2018 موڈ میں چلتے وقت انتباہات کو غلطیوں سے بدل دیا جاتا تھا۔
    تبدیلی کو زنگ 2015 موڈ تک بڑھانے کے بعد، ڈویلپرز آخر کار اس قابل ہو گئے۔ نجات پانا پرانے ادھار چیکر سے

    ایک یاد دہانی کے طور پر، توثیقی نظام نے، قرضے لیے گئے متغیرات کی زندگی بھر کے لیے اکاؤنٹنگ کے لیے ایک نئے طریقہ کار پر مبنی، کچھ ایسے مسائل کی نشاندہی کرنا ممکن بنایا جن پر پرانے تصدیقی کوڈ کا دھیان نہیں گیا۔ چونکہ اس طرح کے چیک کے لیے خرابی کی پیداوار پہلے سے چل رہے کوڈ کے ساتھ مطابقت کو متاثر کر سکتی ہے، اس لیے ابتدائی طور پر غلطیوں کی بجائے وارننگ جاری کی گئی تھیں۔

  • "const" جھنڈا، جو مستقل کی بجائے کسی بھی سیاق و سباق میں استعمال کے امکان کا تعین کرتا ہے، is_power_of_two فنکشن (غیر دستخط شدہ عدد کے لیے) پر لاگو ہوتا ہے۔
  • API کے ایک نئے حصے کو مستحکم زمرہ میں منتقل کر دیا گیا ہے، جس میں اسٹیبلائزڈ ٹوڈو!() میکرو اور سلائس::repeat، mem::take، BTreeMap::get_key_value، اور HashMap::get_key_value طریقے شامل ہیں۔
    آپشن::as_deref، Option::as_deref_mut، Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes,{4_bytes::to_f32,f64}: {f32,f64}::from_le_bytes، اور {f32,f64}::from_ne_bytes۔
  • کارگو پیکیج مینیجر میں
    لاگو کیا کمپائلر انتباہات ڈسک پر محفوظ ہیں۔ "کارگو میٹا ڈیٹا" کمانڈ میں اب "فلٹر پلیٹ فارمانحصاری ریزولوشن گراف میں صرف مخصوص ٹارگٹ پلیٹ فارم کے پابند پیکیجز کو ظاہر کرنے کے لیے۔ اجازت یافتہ TLS ورژن کا تعین کرنے کے لیے http.ssl-version کنفیگریشن پیرامیٹر شامل کیا گیا ہے۔
    سیکشن کو شائع کرنے کی اہلیت شامل کی گئی "دیو انحصار"ورژن" کلید کی وضاحت کیے بغیر۔
  • rustc کمپائلر اب ٹارگٹ پلیٹ فارمز thumbv7neon-unknown-linux-musleabihf، aarch64-unknown-none-softfloat، mips64-unknown-linux-muslabi64، اور mips64el-unknown-linux-muslabi64 کے لیے لیول 3 سپورٹ فراہم کرتا ہے۔ لیول 3 بنیادی مدد فراہم کرتا ہے، لیکن خودکار جانچ یا آفیشل بلڈ کے بغیر۔

ماخذ: opennet.ru

DDoS تحفظ، VPS VDS سرورز والی سائٹوں کے لیے قابل اعتماد ہوسٹنگ خریدیں۔ DDoS تحفظ، VPS VDS سرورز کے ساتھ قابل اعتماد ویب سائٹ ہوسٹنگ خریدیں۔ ProHoster