زنگ 1.96.0

ریلیز شائع ہو چکی ہے۔ زنگ 1.96.0 - Rust پروگرامنگ زبان کا تازہ ترین مستحکم ورژن۔ اپ ڈیٹ جاری کر دیا گیا ہے۔ 28 مئی 2026 سال; اسے معیاری رسٹ اپ اپ ڈیٹ سٹیبل کمانڈ کا استعمال کرتے ہوئے انسٹال کیا جا سکتا ہے۔ بنیادی تبدیلیوں میں بنیادی::رینج میں نئی ​​رینج کی اقسام، پیٹرن سے مماثل میکروز کا استحکام، WebAssembly کی تعمیر کے رویے کو سخت کرنا، اور کارگو میں دو کمزوریوں کے لیے اصلاحات شامل ہیں۔

بڑی تبدیلیاں

  • نئی رینج کی اقسام core::range::range*۔
    معیاری لائبریری میں رینج کی نئی اقسام کو مستحکم کر دیا گیا ہے: core::range::Range, RangeFrom, RangeInclusive، اور ان سے وابستہ تکرار کرنے والے۔ core::ops سے پرانی اقسام کے برعکس، نئی رینجز Iterator کو براہ راست لاگو نہیں کرتی ہیں، لیکن IntoIterator کے ذریعے ایک iterator میں تبدیل ہوجاتی ہیں۔ یہ ان رینجز کو کاپی ایبل ہونے کی اجازت دیتا ہے، جو کہ آسان ہے، مثال کے طور پر، جب کسی رینج کو سٹرکچر فیلڈ کے طور پر اسٹور کیا جائے۔ 0..1 جیسا نحو فی الحال پرانی رینج کی اقسام کو تخلیق کرتا ہے، لیکن اسے زبان کے مستقبل کے ورژن میں نئی ​​اقسام میں منتقل کرنے کا منصوبہ ہے۔

  • assert_maches شامل کر دیے گئے! اور debug_asssert_maches!.
    نئے میکرو آپ کو یہ چیک کرنے کی اجازت دیتے ہیں کہ کوئی قدر دیئے گئے پیٹرن سے میل کھاتی ہے۔ یہ دعویٰ کرنے کے تصور میں ایسا ہی ہے!(میچ!(…))، لیکن غلطی کی صورت میں، تشخیص کو آسان بناتے ہوئے، قدر کی ڈیبگ نمائندگی پرنٹ کی جاتی ہے۔ ان میکرو کو پریلیوڈ میں شامل نہیں کیا گیا تھا تاکہ مقبول تھرڈ پارٹی کریٹس کے ساتھ تنازعات سے بچا جا سکے، اس لیے انہیں بنیادی یا std سے واضح طور پر درآمد کیا جانا چاہیے۔

  • WebAssembly اہداف کے رویے کو تبدیل کر دیا.
    زنگ اب نہیں گزرتا ہے --allow-undefined WebAssembly کے لیے لنکر سے۔ غیر متعینہ علامتوں کو اب لنک کرنے کے دوران غلطیوں کے طور پر سمجھا جاتا ہے، بجائے اس کے کہ خود بخود "env" ماڈیول سے درآمدات میں تبدیل ہوجائے۔ اس میں تعمیراتی غلطیاں اور غلط علامت کے نام پہلے پکڑے جائیں۔ اگر ضرورت ہو تو، RUSTFLAGS=-Clink-arg=--allow-undefined کا استعمال کرتے ہوئے یا #[link(wasm_import_module = "env")] کا استعمال کرتے ہوئے درآمد شدہ wasm ماڈیول کو واضح طور پر بتا کر، پرانے رویے کو واپس کیا جا سکتا ہے۔

  • کارگو کو سیکیورٹی اصلاحات موصول ہوئی ہیں۔
    Rust 1.96.0 تھرڈ پارٹی رجسٹریوں کے صارفین کو متاثر کرنے والی دو کمزوریوں کو ٹھیک کرتا ہے۔ CVE-2026-5223 کریٹ ٹربالز کے اندر سملنک کو سنبھالنے سے متعلق: فریق ثالث کی رجسٹری کا ایک بدنیتی پر مبنی پیکیج اسی رجسٹری سے دوسرے پیکیج کے کیشے کو اوور رائٹ کر سکتا ہے۔ Rust 1.96.0 کے ساتھ شروع کرتے ہوئے، کارگو کریٹ آرکائیوز کو مسترد کرتا ہے جس میں سیم لنکس ہوتے ہیں۔ CVE-2026-5222 یہ مسئلہ ویرل رجسٹری میں یو آر ایل کو معمول پر لانے سے متعلق ہے اور، غیر معمولی حالات میں، کارگو ٹوکن کو نقصان پہنچانے والے رجسٹری کو بھیجا جا سکتا ہے۔ رسٹ ٹیم کے مطابق، crates.io صارفین ان مسائل سے متاثر نہیں ہوتے ہیں۔

  • زبان میں تبدیلیاں۔
    ریلیز میں شامل ہیں: کئی معمولی اصلاحات اور اضافہ: میکروز کے ایکس پی آر میٹا ویری ایبلز کو cfg میں منتقل کرنے کی اجازت، ٹیوپل ایکسپریشنز میں کبھی نہیں ٹائپ کاسٹنگ کو درست کیا گیا، فنکشن آرگیومنٹس کے لیے غلط قسم کے انفرنس اشارے کے نایاب کیسز کو طے کیا گیا، ان لائن اسمبلی میں s390x ویکٹر رجسٹروں کے لیے سپورٹ شامل کیا گیا، اور مینیرو اسمبلی کے طور پر دوبارہ ٹیمپلیٹس — یہ Rust 1.94.0 میں متعارف کرائے گئے ریگریشن کو ٹھیک کرتا ہے۔

  • کمپائلر اور پلیٹ فارم میں تبدیلیاں۔
    کے لیے LinuxLoongArch کے اہداف کے لیے لنک ریلیکسیشن سپورٹ کو فعال کر دیا گیا ہے - ایک لنکنگ آپٹیمائزیشن جو کوڈ کی تعیناتی کے بعد کچھ ٹرانزیشن اور کالز کو آسان بناتی ہے۔ riscv64gc-unknown-fuchsia کے لیے، بیس کنفیگریشن کو RVA22 پروفائل میں ویکٹر ایکسٹینشنز کے لیے اپ ڈیٹ کر دیا گیا ہے۔

  • معیاری لائبریری اپ ڈیٹس۔
    نون زیرو انٹیجر رینجز پر تکرار کے لیے سپورٹ شامل کر دی گئی ہے۔ ToSocketAddr کے ذریعے SGX میں میزبان پتوں کی سست ہینڈلنگ کو بھی طے کر دیا گیا ہے، اور دستاویزات اور اندرونی معاہدوں میں "پڑھنے کے قابل/لکھنے کے قابل" میموری کی تعریف واضح کی گئی ہے: عام تعریف سے null pointer کو ہٹا دیا گیا ہے، اور مستثنیات کو اب مخصوص طریقوں کے لیے الگ سے بیان کیا گیا ہے۔

  • مستحکم APIs۔
    مستحکم انٹرفیس میں assert_maches!، debug_asssert_maches!، From کے نفاذ شامل ہیں۔ AssertUnwindSafe کے لیے , LazyCell اور LazyLock ، نیز رینج کی نئی اقسام اور core::range سے تکرار کرنے والے، بشمول Range, RangeFrom, RangeToInclusive اور ان کے تکرار کرنے والے۔

  • کارگو: انحصار اور دستاویزات میں تبدیلیاں۔
    انحصار اب گٹ ریپوزٹری اور متبادل رجسٹری دونوں کی وضاحت کر سکتا ہے: گٹ ورژن مقامی طور پر استعمال کیا جائے گا، اور رجسٹری ورژن کو اشاعت کے دوران استعمال کیا جائے گا، جیسا کہ crates.io کے ساتھ برتاؤ ہے۔ کارگو کنفیگریشن میں target.'cfg(..)'.rustdocflags کے لیے سپورٹ بھی شامل کر دی گئی ہے۔

  • Rustdoc اب دستاویزات کو زیادہ درست طریقے سے ہینڈل کرتا ہے۔
    فرسودہ API نوٹوں کو اب باقاعدہ دستاویزات کے طور پر پیش کیا جاتا ہے، بغیر وائٹ اسپیس: پری ریپ کے ذریعے سابقہ ​​خصوصی پروسیسنگ کے۔ مزید برآں، rustdoc اب impl کے اندر موجود عناصر کے لیے missing_doc_code_examples کو lints نہیں کرتا ہے، اور طریقے اور متعلقہ فنکشنز اب دستاویزات کی سائڈبار میں الگ کر دیے گئے ہیں۔

  • ممکنہ عدم مطابقت۔
    ریلیز میں کئی تبدیلیاں شامل ہیں جو غیر معیاری کوڈ میں ظاہر ہو سکتی ہیں: کچھ #[repr(Int)] enums کی ترتیب انتہائی صورتوں میں طے کی گئی ہے، اور پن میں کچھ بیکار غیر سائز کی کاسٹوں کو غیر فعال کر دیا گیا ہے۔ , WebAssembly اب غیر متعینہ علامتوں پر کریش بناتا ہے، اتفاقی طور پر اسٹیبلائزڈ #![reexport_test_harness_main] انتساب کو دوبارہ سے فیچر گیٹ کر دیا گیا ہے، -Csoft-float آپشن کو ہٹا دیا گیا ہے، اور کم از کم بیرونی LLVM ورژن کو بڑھا کر 21 کر دیا گیا ہے۔ AVR کے لیے، c_double32 کی قسم کو c_double32 میں تبدیل کر دیا گیا ہے۔ ان اہداف پر بطور ڈیفالٹ۔

ماخذ: linux.org.ru

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