پس از یک سال توسعه منتشر شد انتشار یک شاخه پایدار جدید از زبان برنامه نویسی Perl - 5.44. با مهیا کردن نسخه جدید تقریباً ۲۷۰،۰۰۰ خط کد را تغییر داد (به استثنای مستندات و کد تولید شده خودکار - ۱۱۰،۰۰۰)، این تغییرات ۸۶۰ فایل را تحت تأثیر قرار داد و ۷۱ توسعهدهنده در توسعه آن شرکت کردند.
شاخه ۵.۴۴ مطابق با برنامه توسعه ثابتی که سیزده سال پیش تعیین شده بود، منتشر شده است. این برنامه، انتشار شاخههای پایدار جدید را سالی یک بار و انتشارهای جزئی را هر سه ماه یکبار الزامی میکند. اولین نسخه جزئی، Perl 5.44.1، قرار است حدود یک ماه دیگر منتشر شود و مهمترین اشکالات کشف شده در طول پیادهسازی Perl 5.44.0 را برطرف کند. با انتشار Perl 5.44، پشتیبانی از شاخه ۵.۴۰ به پایان رسیده است. بهروزرسانیهای آن ممکن است در آینده فقط در صورت کشف مشکلات امنیتی حیاتی منتشر شود. آغاز شده است فرآیند توسعه شاخه آزمایشی ۵.۴۵، که مبنای انتشار پایدار پرل ۵.۴۶ در نیمه اول سال ۲۰۲۷ خواهد بود، مگر اینکه تصمیمی اتخاذ شود. برو به شماره گذاری 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 declares_refs); my %hash = ( one => [1], two => [2, 2],); foreach my ( $key, @items ) ( %hash ) { say "The $key array contains: @items"; } # قبل از نسخه 5.44، ارجاعزدایی لازم بود: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } # بدون استفاده آزمایشی از realiasing و ویژگیهای 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 یا با استفاده از هش زمان، شناسه فرآیند و مقدار اشارهگر به دست میآید.
- پشتیبانی از مشخصات اضافه شد یونیکد 17.0.
- پایبندی دقیق به قوانین یونیکد برای نامهای شناسه و گروههای عبارات منظم تضمین شده است، به طوری که تقریباً ۱۶۰ کاراکتر یونیکد که قبلاً توسط کلاس w پوشش داده میشدند، اکنون ممنوع شدهاند. به عنوان مثال، کلاس w که تمام حروف، ارقام و کاراکتر زیرخط را پوشش میدهد، اکنون حروف لاتین دایرهای را که شبیه حروف واقعی هستند اما حروف واقعی نیستند، حذف میکند. این تغییر رفتار فقط بر برنامههایی که از حالت utf8 استفاده میکنند، تأثیر میگذارد.
- آسیبپذیریهای ناشی از سرریز بافر در توابع Perl_study_chunk برطرف شد (CVE-2026-8376، در اسمبلیهای ۳۲ بیتی ظاهر میشود) و S_measure_struct (CVE-2026-57432) و همچنین سرریز شمارنده ۱۶ بیتی در موتور Regex (CVE-2026-13221)، که ممکن است باعث شود عبارت منظم از کار بیفتد.
- پرش به موقعیتهای درون حلقهها و ساختارهای بلوکی با استفاده از عملگر goto ممنوع است. این ویژگی در سال ۲۰۱۰ منسوخ شد.
- بهینهسازیهای عملکرد برای سرعت بخشیدن به جمع، تفریق و ضرب اعداد صحیح، پردازش امضای تابع و پر کردن هشها از لیستهای کلید/مقدار با کلیدهای رشتهای که در زمان کامپایل شناخته شدهاند، انجام شد.
منبع: linux.org.ru
