بيرل 5.44


3

بعد عام من التطوير نشرت إطلاق فرع مستقر جديد للغة البرمجة Perl - 5.44. في خطة لقد غيّر الإصدار الجديد ما يقرب من 270 سطر من التعليمات البرمجية (باستثناء التوثيق والتعليمات البرمجية التي تم إنشاؤها تلقائيًا - 110)، وقد أثرت التغييرات على 860 ملفًا، وشارك 71 مطورًا في عملية التطوير.

تم إصدار فرع 5.44 وفقًا لجدول التطوير الثابت الذي وُضع قبل ثلاثة عشر عامًا، والذي ينص على إصدار فروع مستقرة جديدة مرة واحدة سنويًا وإصدارات فرعية كل ثلاثة أشهر. من المقرر إطلاق أول إصدار فرعي، وهو Perl 5.44.1، خلال شهر تقريبًا، لإصلاح أهم الأخطاء التي تم اكتشافها أثناء تنفيذ Perl 5.44.0. مع إصدار Perl 5.44، انتهى دعم فرع 5.40؛ ولن يتم إصدار تحديثات له في المستقبل إلا في حال اكتشاف مشكلات أمنية حرجة. بدأت عملية تطوير الفرع التجريبي 5.45، والذي سيكون الأساس للإصدار المستقر من بيرل 5.46 في النصف الأول من عام 2027، ما لم يتم اتخاذ قرار آخر. تحرك إلى الترقيم 7.x.

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

  • أضيفت بواسطة إمكانية تجريبية لاستخدام معلمات مُسماة في التوقيعات الدوال التي تحدد قائمة المتغيرات المُمرَّرة إلى الدالة ليس في جسم الدالة، بل أثناء تعريفها. تتيح هذه الميزة الجديدة تمرير المعاملات ليس بترتيب مُحدد، بل بأي ترتيب، باستخدام أزواج المفتاح/القيمة وبنية مشابهة لتعيين العناصر في الجداول التجزئية.
    • الصيغة القديمة: sub f { my ($x, $y) = @_; …} f(1, 2);
    • التوقيعات: sub f ($x, $y) { … } f(1, 2);
    • التوقيعات ذات المعاملات المسماة: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • تمت إضافة دعم تجريبي لاستخدام الأسماء المستعارة (مؤشرات إلى مؤشرات) في حلقات foreach مع متغيرات متعددة. تتيح لك هذه الميزة إنشاء اسم مستعار في حلقة foreach عند استرجاع قيم متعددة في تكرار واحد. على سبيل المثال، يمكنك إنشاء اسم مستعار لعنصر تجزئة مع مصفوفة عند التكرار على كل من مفاتيح وقيم التجزئة: `use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "The $key array contains: @items"; } # Before version 5.44, dereferencing would be required: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; }` } # بدون ميزات إعادة التسمية التجريبية و declare_refs: foreach my $key (keys %hash) { say "تحتوي مصفوفة $key على: @{$hash{$key}}"; }
  • في التعبيرات النمطية مُنفّذ يُتيح الوضع التجريبي 'enhanced_xx' استخدام المُعدِّل /xx مع فئات الأحرف بين قوسين مربعين ([a-zA-Z]) لتقسيمها على عدة أسطر أو لإدراج تعليقات. على سبيل المثال، يمكن كتابة الشرط if ($text =~ m/[a-zA-Z]/){ على النحو التالي: if ($text =~ m/[ a-z # أحرف صغيرة A-Z # أحرف كبيرة ]/xx) {
  • يستخدم مولد الأرقام شبه العشوائية استدعاء النظام getentropy() للحصول على الإنتروبيا على الأنظمة التي تدعمه (Linux، بي إس دي، macOS). في الأنظمة الأخرى، يتم الحصول على الإنتروبيا عن طريق القراءة من جهاز /dev/urandom أو باستخدام تجزئة الوقت ومعرف العملية وقيمة المؤشر.
  • تمت إضافة دعم المواصفات Unicode 17.0.
  • تم ضمان الالتزام الصارم بقواعد يونيكود لأسماء المعرّفات ومجموعات التعبيرات النمطية، حيث تم حظر ما يقارب 160 حرفًا من أحرف يونيكود التي كانت مشمولة سابقًا بالفئة w. على سبيل المثال، تستثني الفئة w، التي تشمل جميع الأحرف والأرقام وعلامة الشرطة السفلية، الأحرف اللاتينية المحاطة بدائرة، والتي تشبه الأحرف الحقيقية ولكنها ليست كذلك. يؤثر هذا التغيير في السلوك فقط على البرامج التي تستخدم وضع utf8.
  • تم إصلاح الثغرات الأمنية الناتجة عن تجاوز سعة المخزن المؤقت في دوال Perl_study_chunk (CVE-2026-8376(يظهر في تجميعات 32 بت) و S_measure_struct (CVE-2026-57432)، بالإضافة إلى تجاوز سعة العداد ذي 16 بت في محرك التعبيرات النمطية (CVE-2026-13221)، مما قد يتسبب في فشل التعبير النمطي.
  • يُمنع الانتقال إلى مواقع داخل الحلقات وبنى الكتل باستخدام عامل التشغيل goto. وقد تم إيقاف هذه الخاصية في عام 2010.
  • تم إجراء تحسينات على الأداء لتسريع عمليات جمع وطرح وضرب الأعداد الصحيحة، ومعالجة توقيعات الدوال، وتعبئة التجزئة من قوائم المفاتيح/القيم بمفاتيح السلسلة المعروفة في وقت الترجمة.

المصدر: linux.org.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster