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

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

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

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

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

  • rustc کمپائلر کے پاس کوریج ڈیٹا تیار کرنے کے لیے ایک مستحکم LLVM پر مبنی نظام ہے جو ٹیسٹنگ کے دوران کوڈ کوریج کا جائزہ لینے کے لیے استعمال ہوتا ہے۔ اسمبلی کے دوران کوریج ڈیٹا کو فعال کرنے کے لیے، آپ کو "-Cinstrument-coverage" جھنڈا استعمال کرنا چاہیے، مثال کے طور پر، "RUSTFLAGS="-C instrument-courage" cargo build" کمانڈ کے ساتھ اسمبلی کا آغاز کرنا۔ اس طریقے سے مرتب کی گئی ایگزیکیوٹیبل فائل کو چلانے کے بعد، default.profraw فائل موجودہ ڈائریکٹری میں محفوظ ہو جائے گی، جس پر کارروائی کے لیے آپ llvm-tools-preview جز سے llvm-profdata یوٹیلیٹی استعمال کر سکتے ہیں۔ llvm-profdata کے ذریعہ پروسیس شدہ آؤٹ پٹ پھر ایک تشریح شدہ کوڈ کوریج رپورٹ تیار کرنے کے لیے llvm-cov کو منتقل کیا جا سکتا ہے۔ سورس کوڈ کے لنک کے بارے میں معلومات اس قابل عمل فائل سے لی گئی ہے جس کی جانچ کی جا رہی ہے، جس میں کوریج کاؤنٹرز اور کوڈ کے درمیان تعلق کے بارے میں ضروری ڈیٹا شامل ہے۔ 1| 1|fn main() {2| 1| println!("ہیلو، دنیا!")؛ 3| 1|}
  • کارگو پیکج مینیجر میں، "-timegs" جھنڈے کے لیے سپورٹ کو مستحکم کر دیا گیا ہے، جس میں تعمیر کی پیشرفت اور ہر قدم پر عمل درآمد کے وقت پر تفصیلی رپورٹ تیار کرنا شامل ہے۔ رپورٹ اسمبلی کے عمل کی کارکردگی کو بہتر بنانے کے لیے مفید ہو سکتی ہے۔
  • کارگو پیکیج مینیجر مشروط تالیف اور اختیاری انحصار کے انتخاب کے طریقہ کار کے لیے ایک نیا نحو پیش کرتا ہے، جسے Cargo.toml فائل میں ترتیب دیا گیا ہے [خصوصیات] سیکشن میں نامزد خصوصیات کی فہرست درج کرکے اور پیکج کی تعمیر کے دوران خصوصیات کو فعال کرکے فعال کیا جاتا ہے۔ "--خصوصیات" پرچم کا استعمال کرتے ہوئے. نیا ورژن الگ الگ نام کی جگہوں اور کمزور انحصاروں میں انحصار کے لیے تعاون کا اضافہ کرتا ہے۔

    پہلی صورت میں، یہ ممکن ہے کہ "[خصوصیات]" سیکشن کے اندر سابقہ ​​"dep:" کے ساتھ عناصر کا استعمال واضح طور پر کسی اختیاری انحصار سے منسلک کیا جائے بغیر اس انحصار کو خصوصیت کے طور پر ظاہر کیے بغیر۔ دوسری صورت میں، "؟" کے نشان کے ساتھ نشان زد کرنے کی حمایت شامل کی گئی ہے۔ ("package-name?/feature-name") اختیاری انحصار جو صرف اس صورت میں شامل کیا جانا چاہیے جب کچھ دوسری جائیداد میں دی گئی اختیاری انحصار شامل ہو۔ مثال کے طور پر، نیچے دی گئی مثال میں، serde پراپرٹی کو فعال کرنے سے "serde" انحصار کے ساتھ ساتھ "rgb" انحصار کے لیے "serde" پراپرٹی بھی فعال ہو جائے گی، لیکن صرف اس صورت میں جب "rgb" انحصار کسی اور جگہ فعال ہو: [dependencies] serde = { ورژن = " 1.0.133"، اختیاری = سچ } rgb = { ورژن = "0.8.25"، اختیاری = true } [خصوصیات] serde = ["dep:serde", "rgb?/serde"]

  • اضافی تالیف کے لیے سپورٹ، جو پچھلی ریلیز میں غیر فعال کر دی گئی تھی، واپس کر دی گئی ہے۔ کمپائلر بگ جس کی وجہ سے فیچر کو غیر فعال کیا گیا تھا حل کر دیا گیا ہے۔
  • مونوٹونک ٹائمنگ کی گارنٹی کے ساتھ فوری ٹائمرز فراہم کرنے کے ساتھ کچھ مسائل کو حل کیا، جو سسٹم کے سلیپ موڈ میں گزارے گئے وقت کو مدنظر رکھتا ہے۔ اس سے پہلے، OS API کا استعمال جب بھی ممکن ہو ٹائمر کو چلانے کے لیے کیا جاتا تھا، جو وقت کی یکجہتی کو ختم کرنے والے مسائل، جیسے ہارڈ ویئر کے مسائل، ورچوئلائزیشن کا استعمال، یا آپریٹنگ سسٹم میں خرابیوں کو مدنظر نہیں رکھتے تھے۔
  • API کے ایک نئے حصے کو مستحکم کے زمرے میں منتقل کر دیا گیا ہے، بشمول خصوصیات کے طریقوں اور نفاذ کو مستحکم کیا گیا ہے:
    • قوس::نیا_سائیکلک
    • Rc::new_cyclic
    • slice::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::escape_ascii
    • Vec::spare_capacity_mut
    • ہو سکتا ہےUninit::assume_init_drop
    • ہو سکتا ہےUninit::assume_init_read
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • isize::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • استعمال کریں::abs_diff
    • io::ErrorKind کے لیے ڈسپلے کریں۔
    • ایگزٹ کوڈ کے لیے سے
    • کے لئے نہیں ! ("کبھی نہیں" ٹائپ کریں)
    • _Op_Asign<$t>
    • arch::is_aarch64_feature_detected!
  • سپورٹ کی تیسری سطح mips64-openwrt-linux-musl* اور armv7-unknown-linux-uclibceabi (softfloat) پلیٹ فارمز کے لیے نافذ کی گئی ہے۔ تیسرے درجے میں بنیادی مدد شامل ہے، لیکن خودکار جانچ کے بغیر، آفیشل بلڈ کو شائع کرنا، یا یہ چیک کرنا کہ آیا کوڈ بنایا جا سکتا ہے۔
  • کمپائلر کو LLVM 14 استعمال کرنے کے لیے تبدیل کر دیا گیا ہے۔

اس کے علاوہ، آپ نوٹ کر سکتے ہیں:

  • rustc_codegen_gcc بیک اینڈ کا استعمال کرتے ہوئے rustc کمپائلر کو بوٹسٹریپ کرنے کے لیے سپورٹ شامل کیا گیا، جو آپ کو GCC پروجیکٹ سے libgccjit لائبریری کو rustc میں کوڈ جنریٹر کے طور پر استعمال کرنے کی اجازت دیتا ہے، جو rustc کو GCC میں دستیاب آرکیٹیکچرز اور آپٹیمائزیشنز کے لیے مدد فراہم کرنے کی اجازت دیتا ہے۔ کمپائلر پروموشن کا مطلب ہے rustc میں GCC پر مبنی کوڈ جنریٹر کو rustc کمپائلر خود بنانے کے لیے استعمال کرنے کی صلاحیت۔ عملی پہلو پر، یہ خصوصیت آپ کو فن تعمیر کے لیے زنگ پروگرام بنانے کی اجازت دیتی ہے جو پہلے rustc میں تعاون یافتہ نہیں تھے۔
  • uutils coreutils 0.0.13 ٹول کٹ کی ریلیز دستیاب ہے، جس کے اندر GNU Coreutils پیکج کا ایک اینالاگ، جو زنگ زبان میں دوبارہ لکھا گیا ہے، تیار کیا جا رہا ہے۔ Coreutils سو سے زیادہ افادیت کے ساتھ آتا ہے، بشمول sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln اور ls۔ اس منصوبے کا مقصد GPL کاپی لیفٹ لائسنس کے بجائے، Windows، Redox اور Fuchsia پلیٹ فارمز پر چلنے کے ساتھ ساتھ اجازت یافتہ MIT لائسنس کے تحت تقسیم کرنے کے قابل Coreutils کے متبادل پلیٹ فارم کی تشکیل کرنا ہے۔

    نئے ورژن نے بہت سی یوٹیلیٹیز کے نفاذ کو بہتر کیا ہے، بشمول Cp، dd، df، اسپلٹ اور tr یوٹیلٹیز کی GNU پروجیکٹ سے ان کے ہم منصبوں کے ساتھ نمایاں طور پر بہتر مطابقت۔ آن لائن دستاویزات فراہم کی گئیں۔ کلیپ پارسر کا استعمال کمانڈ لائن آرگیومینٹس کو پارس کرنے کے لیے کیا جاتا ہے، جس نے "--help" جھنڈے کے لیے آؤٹ پٹ کو بہتر بنایا ہے اور طویل کمانڈز کے مخففات کے لیے تعاون شامل کیا ہے (مثال کے طور پر، آپ "ls -color" کی بجائے "ls -col" کی وضاحت کر سکتے ہیں۔ ”)۔

ماخذ: opennet.ru

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