إصدار لغة البرمجة روبي 3.1

تم إصدار Ruby 3.1.0، وهي لغة برمجة ديناميكية موجهة للكائنات ذات كفاءة عالية في تطوير البرامج وتتضمن أفضل ميزات Perl وJava وPython وSmalltalk وEiffel وAda وLisp. يتم توزيع رمز المشروع بموجب تراخيص BSD ("2-clause BSDL") و"Ruby"، والتي تشير إلى أحدث إصدار من ترخيص GPL ومتوافق تمامًا مع GPLv3.

التحسينات الرئيسية:

  • تمت إضافة مترجم JIT تجريبي جديد قيد التشغيل، YJIT، تم إنشاؤه بواسطة مطوري منصة التجارة الإلكترونية Shopify كجزء من مبادرة لتحسين أداء برامج Ruby التي تستخدم إطار عمل Rails وتستدعي الكثير من الأساليب. يتمثل الاختلاف الرئيسي عن مترجم MJIT JIT المستخدم مسبقًا، والذي يعتمد على معالجة الأساليب بأكملها ويستخدم مترجمًا خارجيًا في لغة C، في أن YJIT يستخدم Lazy Basic Block Versioning (LBBV) ويحتوي على مترجم JIT متكامل. باستخدام LBBV، يقوم JIT أولاً بتجميع بداية الطريقة فقط، ثم يجمع الباقي في وقت لاحق، بعد تحديد أنواع المتغيرات والوسائط المستخدمة أثناء التنفيذ. عند استخدام YJIT، تم تسجيل زيادة في الأداء بنسبة 22% عند تشغيل اختبار Railsbench، وزيادة بنسبة 39% في اختبار تجسيد السائل. يقتصر YJIT حاليًا على دعم أنظمة التشغيل المشابهة لنظام التشغيل Unix على الأنظمة ذات بنية x86-64 ويتم تعطيله افتراضيًا (للتنشيط، حدد علامة "--yjit" في سطر الأوامر).
  • تحسين أداء مترجم MJIT JIT القديم. بالنسبة للمشاريع التي تستخدم Rails، تمت زيادة الحد الأقصى الافتراضي لحجم ذاكرة التخزين المؤقت (-jit-max-cache) من 100 إلى 10000 تعليمات. توقف عن استخدام JIT للطرق التي تحتوي على أكثر من 1000 تعليمات. لدعم Zeitwerk of Rails، لم يعد يتم تجاهل كود JIT عند تمكين TracePoint لأحداث الفصل الدراسي.
  • يتضمن مصحح أخطاء debug.gem معاد كتابته بالكامل، والذي يدعم تصحيح الأخطاء عن بعد، ولا يبطئ التطبيق الذي تم تصحيحه، ويدعم التكامل مع واجهات تصحيح الأخطاء المتقدمة (VSCode وChrome)، ويمكن استخدامه لتصحيح أخطاء التطبيقات متعددة الخيوط والمتعددة العمليات، ويوفر توفر واجهة تنفيذ تعليمات برمجية REPL إمكانات تتبع متقدمة، ويمكنها تسجيل مقتطفات التعليمات البرمجية وإعادة تشغيلها. تمت إزالة مصحح الأخطاء lib/debug.rb المقدم مسبقًا من التوزيع الأساسي.
    إصدار لغة البرمجة روبي 3.1
  • تم تنفيذ التمييز المرئي للأخطاء في تقارير تتبع معاودة الاتصال. يتم توفير وضع علامة على الأخطاء باستخدام حزمة الأحجار الكريمة المضمنة والممكنة افتراضيًا error_highlight. لتعطيل الإبلاغ عن الأخطاء، يمكنك استخدام الإعداد "--disable-error_highlight". $ روبي 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( س:، ص: )".
  • دعم ثابت لمطابقات نمط السطر الواحد (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
  • أضافت لغة التعليقات التوضيحية لنوع RBS، والتي تسمح لك بتحديد بنية البرنامج والأنواع المستخدمة، دعمًا لتحديد الحد الأعلى لمعلمات النوع باستخدام الرمز "<"، وإضافة دعم للأسماء المستعارة للأنواع العامة، وتنفيذ دعم لـ مجموعات لإدارة الأحجار الكريمة وتحسين الأداء وتنفيذ العديد من التوقيعات الجديدة للمكتبات المدمجة والقياسية.
  • تمت إضافة الدعم التجريبي لبيئات التطوير المتكاملة إلى محلل النوع الثابت لـ TypePro، والذي ينشئ تعليقات توضيحية لـ RBS بناءً على تحليل التعليمات البرمجية دون معلومات النوع الصريحة (على سبيل المثال، تم إعداد وظيفة إضافية لدمج TypePro مع محرر VSCode).
  • تم تغيير ترتيب معالجة المهام المتعددة. على سبيل المثال، في السابق، تمت معالجة مكونات التعبير "foo[0]، bar[0] = baz، qux" بالترتيب baz، qux، foo، bar، ولكن الآن foo، bar، baz، qux.
  • تمت إضافة دعم تجريبي لتخصيص الذاكرة للسلاسل باستخدام آلية VWA (تخصيص العرض المتغير).
  • الإصدارات المحدثة من وحدات الأحجار الكريمة المضمنة وتلك المضمنة في المكتبة القياسية. الحزم net-ftp، وnet-imap، وnet-pop، وnet-smtp، وMatrix، وPrime، وdebug مدمجة.

المصدر: opennet.ru

إضافة تعليق