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

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

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

اہم بدعات:

  • rustc کمپائلر میں محفوظ کوڈ پروفائلنگ کے نتائج کی بنیاد پر اصلاح کے لیے سپورٹ (PGO، پروفائل گائیڈڈ آپٹیمائزیشن)،
    پروگرام کے عمل کے دوران جمع ہونے والے اعدادوشمار کے تجزیے کی بنیاد پر آپ کو زیادہ سے زیادہ بہترین کوڈ بنانے کی اجازت دیتا ہے۔ پروفائل بنانے کے لیے، "-C profile-generate" جھنڈا فراہم کیا جاتا ہے، اور پروفائل کو اسمبلی کے دوران استعمال کرنے کے لیے - "-C profile-use" (ابتدائی طور پر، پروگرام کو پہلے جھنڈے کے ساتھ جمع کیا جاتا ہے، اس کے ارد گرد چلتا ہے، اور بنانے کے بعد۔ پروفائل، اسے دوسرے جھنڈے کے ساتھ دوبارہ جوڑا جاتا ہے؛

  • "کارگو رن" کمانڈ پر عمل کرتے وقت، جو کہ کنسول ایپلی کیشنز کو تیزی سے جانچنے کے لیے استعمال کرنے میں آسان ہے، اگر پیکج میں کئی قابل عمل فائلیں ہیں تو چلانے کے لیے خود کار طریقے سے ایک قابل عمل فائل کو منتخب کرنے کی صلاحیت کو شامل کر دیا گیا ہے۔ پہلے سے طے شدہ فائل کا تعین پیکج پیرامیٹرز کے ساتھ [پیکیج] سیکشن میں ڈیفالٹ رن ڈائریکٹو کے ذریعے کیا جاتا ہے، جو آپ کو ہر بار جب بھی "کارگو رن" چلاتے ہیں تو "-bin" فلیگ کے ذریعے فائل کا نام واضح طور پر بتانے سے گریز کرتے ہیں۔
  • "کارگو وینڈر" کمانڈ، جو پہلے فراہم کی گئی تھی۔ علیحدہ پیکج. کمانڈ آپ کو انحصار کی مقامی کاپی کے ساتھ کام کو منظم کرنے کی اجازت دیتی ہے - "کارگو وینڈر" کو انجام دینے کے بعد، پروجیکٹ کے انحصار کے تمام سورس کوڈز crates.io سے مقامی ڈائریکٹری میں ڈاؤن لوڈ کیے جاتے ہیں، جسے پھر کریٹس تک رسائی کے بغیر کام کے لیے استعمال کیا جا سکتا ہے۔ io (کمانڈ پر عمل کرنے کے بعد، کنفیگریشن کو تبدیل کرنے کے لیے ایک اشارہ دکھایا گیا ہے تاکہ بلڈس کے لیے ڈائریکٹری استعمال کی جائے)۔ یہ خصوصیت پہلے سے ہی ریلیز کے ساتھ ایک محفوظ شدہ دستاویزات میں تمام انحصاروں کی پیکیجنگ کے ساتھ رسٹک کمپائلر کی ترسیل کو منظم کرنے کے لیے استعمال کی گئی ہے۔
  • قسم کے عرفی ناموں کا استعمال کرتے ہوئے اینوم آپشنز کے لنکس بنانا اب ممکن ہے (مثال کے طور پر، فنکشن "fn increment_or_zero(x: ByteOption) کے باڈی میں آپ "ByteOption::None => 0" کی وضاحت کر سکتے ہیں، کیلکولیشن کنسٹرکٹس (‹) ٹائپ کریں۔ MyType‹.. ››::option => N) یا سیلف ایکسسز (بلاکس c &self میں آپ "Self::Quarter => 25" بتا سکتے ہیں)؛
  • میکروز میں بے نام کنسٹنٹ بنانے کی صلاحیت شامل کی گئی۔ "const" میں عنصر کے نام کی وضاحت کرنے کے بجائے، اب آپ "_" کیریکٹر کو متحرک طور پر ایک غیر دہرائے جانے والے شناخت کنندہ کو منتخب کرنے کے لیے استعمال کر سکتے ہیں، میکرو کو دوبارہ کال کرتے وقت نام کے تنازعات سے بچتے ہوئے؛
  • سیدھ کے ساتھ ایک AlignN‹T› ساخت کی وضاحت کرنے اور پھر AlignN‹MyEnum› استعمال کرنے کے مترادف نحو کا استعمال کرتے ہوئے enums کے ساتھ "#[repr(align(N))" وصف کو استعمال کرنے کی صلاحیت شامل کی گئی۔
  • API کے ایک نئے حصے کو مستحکم زمرے میں منتقل کر دیا گیا ہے، بشمول BufReader::buffer، BufWriter::buffer، اور
    سیل::from_mut،
    سیل:: as_slice_of_cells،
    DoubleEndedIterator::nth_back،
    آپشن::xor
    {i,u}{8,16,64,128,size}::reverse_bits، ریپنگ::reverse_bits اور
    slice::copy_within.

اس کے علاوہ، آپ نوٹ کر سکتے ہیں ٹیسٹنگ کا آغاز پروجیکٹ Async-std، جو Rust معیاری لائبریری (std لائبریری کی ایک بندرگاہ، جس میں تمام انٹرفیس ایک async ورژن میں پیش کیے جاتے ہیں اور async/await syntax کے ساتھ استعمال کے لیے تیار ہیں) کا ایک متضاد قسم پیش کرتا ہے۔

ماخذ: opennet.ru

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