روبی پروگرامنگ لینگویج کی ریلیز 3.1

روبی 3.1.0 کو جاری کیا گیا، ایک متحرک آبجیکٹ پر مبنی پروگرامنگ زبان جو پروگرام کی ترقی میں انتہائی موثر ہے اور اس میں پرل، جاوا، ازگر، سمال ٹاک، ایفل، اڈا اور لِسپ کی بہترین خصوصیات شامل ہیں۔ پروجیکٹ کوڈ BSD ("2-شق BSDL") اور "روبی" لائسنس کے تحت تقسیم کیا گیا ہے، جو GPL لائسنس کے تازہ ترین ورژن کا حوالہ دیتا ہے اور GPLv3 کے ساتھ مکمل طور پر مطابقت رکھتا ہے۔

اہم بہتری:

  • ایک نیا تجرباتی اندرون عمل JIT کمپائلر، YJIT، شامل کیا گیا ہے، جسے Shopify ای کامرس پلیٹ فارم کے ڈویلپرز نے Ruby پروگراموں کی کارکردگی کو بہتر بنانے کے اقدام کے حصے کے طور پر بنایا ہے جو ریل فریم ورک کا استعمال کرتے ہیں اور بہت سے طریقوں کو کال کرتے ہیں۔ پہلے استعمال شدہ MJIT JIT کمپائلر سے اہم فرق، جو کہ پورے طریقوں کی پروسیسنگ پر مبنی ہے اور C زبان میں ایک بیرونی کمپائلر استعمال کرتا ہے، یہ ہے کہ YJIT Lazy Basic Block Versioning (LBBV) کا استعمال کرتا ہے اور ایک مربوط JIT کمپائلر پر مشتمل ہے۔ ایل بی بی وی کے ساتھ، جے آئی ٹی پہلے صرف طریقہ کار کی شروعات کو مرتب کرتی ہے، اور کچھ عرصے بعد باقی کو مرتب کرتی ہے، اس کے بعد استعمال کیے جانے والے متغیرات اور دلائل کی اقسام کا تعیّن کیا جاتا ہے۔ YJIT استعمال کرتے وقت، ریل بینچ ٹیسٹ چلاتے وقت کارکردگی میں 22% اضافہ ریکارڈ کیا گیا، اور مائع رینڈر ٹیسٹ میں 39% اضافہ ہوا۔ YJIT فی الحال x86-64 فن تعمیر والے سسٹمز پر یونکس نما OS کے لیے سپورٹ تک محدود ہے اور بطور ڈیفالٹ غیر فعال ہے (فعال کرنے کے لیے، کمانڈ لائن میں "--yjit" پرچم کی وضاحت کریں)۔
  • پرانے MJIT JIT کمپائلر کی بہتر کارکردگی۔ ریل استعمال کرنے والے پروجیکٹس کے لیے، ڈیفالٹ زیادہ سے زیادہ کیشے سائز (-jit-max-cache) کو 100 سے بڑھا کر 10000 ہدایات کر دیا گیا ہے۔ 1000 سے زیادہ ہدایات والے طریقوں کے لیے جے آئی ٹی کا استعمال بند کر دیا۔ Zeitwerk of Rails کو سپورٹ کرنے کے لیے، کلاس ایونٹس کے لیے TracePoint کے فعال ہونے پر JIT کوڈ کو مزید ضائع نہیں کیا جاتا ہے۔
  • اس میں مکمل طور پر دوبارہ لکھا ہوا debug.gem ڈیبگر شامل ہے، جو ریموٹ ڈیبگنگ کو سپورٹ کرتا ہے، ڈیبگ شدہ ایپلیکیشن کو سست نہیں کرتا، ایڈوانس ڈیبگنگ انٹرفیس (VSCode اور Chrome) کے ساتھ انضمام کو سپورٹ کرتا ہے، ملٹی تھریڈڈ اور ملٹی پروسیس ایپلی کیشنز کو ڈیبگ کرنے کے لیے استعمال کیا جا سکتا ہے، فراہم کرتا ہے۔ ایک REPL کوڈ پر عمل درآمد انٹرفیس، اعلی درجے کی ٹریسنگ کی صلاحیتیں پیش کرتا ہے، کوڈ کے ٹکڑوں کو ریکارڈ اور دوبارہ چلا سکتا ہے۔ پہلے پیش کردہ ڈیبگر lib/debug.rb کو بنیادی تقسیم سے ہٹا دیا گیا ہے۔
    روبی پروگرامنگ لینگویج کی ریلیز 3.1
  • کال بیک ٹریس رپورٹس میں غلطیوں کی بصری روشنی ڈالنے کا عمل۔ بلٹ ان اور ڈیفالٹ فعال جیم پیکیج error_highlight کا استعمال کرتے ہوئے ایرر فلیگنگ فراہم کی جاتی ہے۔ غلطی کا جھنڈا لگانے کو غیر فعال کرنے کے لیے، آپ "--disable-error_highlight" ترتیب استعمال کر سکتے ہیں۔ $ruby test.rb test.rb:1:in " ": غیر متعینہ طریقہ "وقت" برائے 1: انٹیجر (NoMethodError) 1.time {} ^^^^^ کیا آپ کا مطلب ہے؟ اوقات
  • انٹرایکٹو کیلکولیشنز کا شیل IRB (REPL, Read-Eval-Print-Loop) درج کردہ کوڈ کی خودکار تکمیل کو لاگو کرتا ہے (جیسے آپ ٹائپ کرتے ہیں، ان پٹ کو جاری رکھنے کے اختیارات کے ساتھ ایک اشارہ ظاہر ہوتا ہے، جس کے درمیان آپ Tab یا Shift+ کے ساتھ منتقل ہو سکتے ہیں۔ ٹیب کلید)۔ تسلسل کے آپشن کو منتخب کرنے کے بعد، قریب ہی ایک ڈائیلاگ باکس ظاہر ہوتا ہے جو منتخب کردہ آئٹم سے وابستہ دستاویزات کو ظاہر کرتا ہے۔ مکمل دستاویزات تک رسائی کے لیے کی بورڈ شارٹ کٹ Alt+d استعمال کیا جا سکتا ہے۔
    روبی پروگرامنگ لینگویج کی ریلیز 3.1
  • زبان کا نحو اب فنکشنز کو کال کرتے وقت ہیش لٹریلز اور کلیدی الفاظ کے دلائل کو چھوڑنے کی اجازت دیتا ہے۔ مثال کے طور پر، "{x: x, y: y}" کے اظہار کے بجائے اب آپ "{x:, y:}" کی وضاحت کر سکتے ہیں، اور "foo(x: x, y: y)" - foo( x:، y:)"۔
  • سنگل لائن پیٹرن میچز (ary => [x, y, z]) کے لیے مستحکم سپورٹ، جو اب تجرباتی طور پر نشان زد نہیں ہیں۔
  • پیٹرن میچز میں "^" آپریٹر اب صوابدیدی اظہارات پر مشتمل ہو سکتا ہے، مثال کے طور پر: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ؟ [[3، 5]، [5، 7]، [11، 13]]
  • سنگل لائن پیٹرن میچوں میں، آپ قوسین کو چھوڑ سکتے ہیں: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • آر بی ایس ٹائپ تشریحی زبان، جو آپ کو پروگرام کی ساخت اور استعمال کی جانے والی اقسام کا تعین کرنے کی اجازت دیتی ہے، نے "<" علامت کا استعمال کرتے ہوئے قسم کے پیرامیٹرز کی اوپری حد کو متعین کرنے کے لیے معاونت شامل کی ہے، عام اقسام کے عرفی ناموں کے لیے تعاون شامل کیا ہے، جواہرات کے انتظام کے لیے مجموعہ، بہتر کارکردگی اور بلٹ ان اور معیاری لائبریریوں کے لیے بہت سے نئے دستخطوں کو نافذ کیا۔
  • مربوط ترقیاتی ماحول کے لیے تجرباتی تعاون کو TypePro کے جامد قسم کے تجزیہ کار میں شامل کیا گیا ہے، جو واضح قسم کی معلومات کے بغیر کوڈ تجزیہ کی بنیاد پر RBS تشریحات تیار کرتا ہے (مثال کے طور پر، VSCode ایڈیٹر کے ساتھ TypePro کو مربوط کرنے کے لیے ایک اضافہ تیار کیا گیا ہے)۔
  • متعدد اسائنمنٹس پر کارروائی کرنے کی ترتیب کو تبدیل کر دیا گیا ہے۔ مثال کے طور پر، پہلے اظہار کے اجزاء "foo[0], bar[0] = baz, qux" کو ترتیب baz، qux، foo، bar میں پروسیس کیا جاتا تھا، لیکن اب foo، bar، baz، qux۔
  • VWA (متغیر چوڑائی مختص) میکانزم کا استعمال کرتے ہوئے تاروں کے لیے میموری مختص کرنے کے لیے تجرباتی معاونت شامل کی گئی۔
  • بلٹ ان جیم ماڈیولز کے تازہ ترین ورژن اور معیاری لائبریری میں شامل۔ net-ftp، net-imap، net-pop، net-smtp، میٹرکس، پرائم اور ڈیبگ پیکجز بلٹ ان ہیں۔

ماخذ: opennet.ru

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