إصدار لغة البرمجة Perl 5.30.0

بعد 11 أشهر من التطوير وقع إطلاق فرع مستقر جديد للغة البرمجة Perl - 5.30. أثناء إعداد الإصدار الجديد، تم تغيير حوالي 620 ألف سطر من التعليمات البرمجية، وأثرت التغييرات على 1300 ملف، وشارك 58 مطورًا في التطوير.

تم إصدار الفرع 5.30 وفقًا لجدول التطوير الثابت الذي تمت الموافقة عليه منذ ست سنوات، مما يعني إصدار فروع مستقرة جديدة مرة واحدة سنويًا والإصدارات التصحيحية كل ثلاثة أشهر. ومن المقرر خلال شهر تقريبًا إطلاق الإصدار التصحيحي الأول من Perl 5.30.1، والذي سيصحح الأخطاء الأكثر أهمية التي تم تحديدها أثناء تنفيذ Perl 5.30.0. جنبا إلى جنب مع إصدار Perl 5.30، تم إيقاف دعم الفرع 5.26، والذي قد يتم إصدار تحديثات له في المستقبل فقط في حالة التعرف على مشكلات أمنية حرجة. بدأت أيضًا عملية تطوير الفرع التجريبي 5.31، والذي على أساسه سيتم تشكيل إصدار مستقر لـ Perl 2020 في مايو 5.32.

مفتاح التغييرات:

  • تمت إضافة الدعم التجريبي لعمليات "" إلى التعبيرات العادية.(؟<!نمط)"و"(?‹=نمط)» للوصول المحدود إلى القوالب المسماة التي تمت معالجتها مسبقًا. يجب أن يكون تعريف النمط ضمن 255 حرفًا من النقطة المرجعية؛
  • تمت زيادة الحد الأقصى لقيمة محدد الحجم ("n") في كتل التعبير العادي "{m,n}" إلى 65534؛
  • تمت الإضافة بشكل محدود دعم أقنعة لتسليط الضوء على فئات معينة من الأحرف في التعبيرات العادية، وتغطي مجموعات Unicode المختلفة. على سبيل المثال، التعبير "qr! \p{nv= /(?x) \A [0-5] \z / }!" يسمح لك بتحديد جميع أحرف Unicode التي تحدد الأرقام من 0 إلى 5، بما في ذلك تهجئة الأرقام التايلاندية أو البنغالية؛
  • تمت إضافة دعم للأحرف المسماة في التعبيرات العادية
    الأنماط الداخلية المحددة بعلامات اقتباس مفردة (qr'\N{name}');

  • تم تحديث دعم مواصفات Unicode إلى الإصدار 12.1. تمت إزالة علامة التطوير التجريبي من المكالمات sv_utf8_downgrade وsv_utf8_decodeالمستخدمة في تطوير الامتدادات في لغة C؛
  • تمت إضافة القدرة على إنشاء لغة Perl مع تنفيذ العمليات باستخدام لغة تدعم العمليات متعددة الخيوط (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). في السابق، كان يتم استخدام هذا التطبيق فقط عند إنشاء إصدار متعدد الخيوط من Perl، ولكن يمكن الآن تمكينه لأي إصدار؛
  • يؤدي الآن الجمع بين علامتي "-Dv" (إخراج التصحيح المحسّن) و"-Dr" (تصحيح أخطاء regex) إلى تمكين جميع أوضاع تصحيح أخطاء التعبير العادي الممكنة؛
  • تمت إزالة الميزات التي تم إهمالها سابقًا:
    • متوفر الآن كفاصل أسطر وأحرف بدل مسموح استخدم فقط الرسوم البيانية (أحرف Unicode المركبة غير مسموح بها).
    • توقف دعم بعض الأشكال القديمة لاستخدام الحرف "{" في التعبيرات العادية دون الهروب منه.
    • يحظر باستخدام وظائف sysread() وsyswrite() وrecv() وsend() مع معالجات ":utf8".
    • يُحظر استخدام تعريفات "my" في العبارات الشرطية الخاطئة بطبيعتها (على سبيل المثال، "my $x if 0").
    • تمت إزالة دعم المتغيرات الخاصة "$*" و"$#".
      لقد تم إيقاف دعم الاستدعاء الضمني للدالة dump() (يجب عليك الآن تحديد CORE::dump() بشكل صريح).

    • تمت إزالة الدالة File::Glob::glob (يجب عليك استخدام File::Glob::bsd_glob).
    • تمت إضافة الحماية إلى pack() ضد إرجاع تسلسلات Unicode غير الصالحة.
    • تم تأجيل انتهاء دعم استخدام وحدات الماكرو التي تنفذ العمليات باستخدام UTF-8 في رمز XS (كتل C) حتى الإصدار التالي.
  • تحسينات الأداء:
    • تم تسريع عمليات الترجمة من UTF-8 إلى تخطيط الأحرف (نقطة الرمز)، على سبيل المثال، تنفيذ العملية ord(“\x7fff”) يتطلب الآن تعليمات أقل بنسبة 12%. تم أيضًا زيادة أداء عمليات التحقق من صحة تسلسل أحرف UTF-8؛
    • تم حذف الاستدعاءات العودية في الدالة Finalize_op()؛
    • تم إجراء تحسينات طفيفة على التعليمات البرمجية لطي الأحرف المتماثلة وتحديد فئات الأحرف في التعبيرات العادية؛
    • المحسن تحويل تعريفات النوع الموقعة إلى تعريفات غير موقعة (IV إلى UV)؛
    • تم تسريع خوارزمية تحويل الأعداد الصحيحة إلى سلسلة عن طريق معالجة رقمين في وقت واحد بدلاً من رقم واحد؛
    • تم إجراء تحسينات مُعد بناءً على التحليل الذي أجرته شركة LGTM؛
    • الكود الأمثل في الملفات regcomp.c، وregcomp.h، وregexec.c؛
    • في التعبيرات العادية، تم تسريع معالجة الأنماط مثل "qr/[^a]/" بأحرف ASCII بشكل كبير.
  • تمت استعادة الدعم لمنصة Minix3. من الممكن البناء باستخدام برنامج التحويل البرمجي Microsoft Visual Studio 2019 (Visual C++ 14.2)؛
  • الإصدارات المحدثة من الوحدات المضمنة في الحزمة الأساسية. تمت إزالة الوحدات من التكوين الرئيسي ب::تصحيح и اللغة::الرموز.

المصدر: opennet.ru

إضافة تعليق