Bir yillik rivojlanishdan keyin e'lon qilindi Perl dasturlash tilining yangi barqaror filialini chiqarish - 5.44. Qachon tayyorlanmoqda Yangi nashr taxminan 270 000 qator kodni o'zgartirdi (hujjatlar va avtomatik ravishda yaratilgan kod bundan mustasno - 110 000), o'zgarishlar 860 ta faylga ta'sir qildi va 71 ta ishlab chiquvchi ishlab chiqishda ishtirok etdi.
5.44 filiali o'n uch yil oldin belgilangan belgilangan ishlab chiqish jadvaliga muvofiq chiqarildi, bu jadvalga ko'ra, yiliga bir marta yangi barqaror filiallar va har uch oyda kichik versiyalar chiqarilishi kerak. Birinchi kichik versiya, Perl 5.44.1, taxminan bir oy ichida chiqarilishi rejalashtirilgan bo'lib, Perl 5.44.0 ni joriy etish paytida aniqlangan eng muhim xatolarni tuzatadi. Perl 5.44 ning chiqarilishi bilan 5.40 filialini qo'llab-quvvatlash to'xtatildi; kelajakda faqat muhim xavfsizlik muammolari aniqlangan taqdirda uning yangilanishlari chiqarilishi mumkin. Boshlandi agar qaror qabul qilinmasa, 2027 yilning birinchi yarmida Perl 5.46 ning barqaror chiqarilishi uchun asos bo'ladigan eksperimental 5.45 filialini ishlab chiqish jarayoni o'ting 7.x raqamlashgacha.
Kalit o'zgartirish:
- Qo'shilgan nomlangan parametrlardan foydalanishning eksperimental imkoniyati imzolar Funksiya tanasida emas, balki uni e'lon qilish paytida unga uzatiladigan o'zgaruvchilar ro'yxatini belgilaydigan funksiyalar. Ushbu yangi xususiyat parametrlarni qat'iy tartibda emas, balki istalgan tartibda, kalit/qiymat juftliklari va xeshlarda elementlarni tayinlashga o'xshash sintaksisdan foydalanib uzatish imkonini beradi:
- eski sintaksis: sub f { mening ($x, $y) = @_; …} f(1, 2);
- imzolar: sub f ($x, $y) { … } f(1, 2);
- nomlangan parametrlarga ega imzolar: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Bir nechta o'zgaruvchili foreach sikllarida taxalluslardan (ko'rsatkichlarga ko'rsatkichlar) foydalanish uchun eksperimental yordam qo'shildi. Bu xususiyat sizga bitta sikl iteratsiyasida bir nechta qiymatlarni olishda foreach sikllarida taxallus yaratish imkonini beradi. Masalan, xeshning kalitlari va qiymatlari ustida iteratsiya qilinganda massivli xesh elementi uchun taxallus yaratishingiz mumkin: v5.44 dan foydalaning; feature qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "$key massivida: @items"; } # 5.44 versiyasidan oldin, havolalarni bekor qilish talab qilinadi: foreach my ( $key, $var ) ( %hash ) { say "$key massivida: @$var"; } # Eksperimental qayta filiasing va declared_refs funksiyalarisiz: foreach my $key (keys %hash) { say "$key massivi quyidagilarni o'z ichiga oladi: @{$hash{$key}}"; }
- Muntazam ifodalarda amalga oshirildi Tajribaviy 'enhanced_xx' rejimi /xx modifikatorini kvadrat qavs ichidagi belgilar sinflari ([a-zA-Z]) bilan bir nechta satrlarga ajratish yoki izohlar qo'shish uchun ishlatishga imkon beradi. Masalan, if ($text =~ m/[a-zA-Z]/){ sharti quyidagicha yozilishi mumkin: if ($text =~ m/[a-z # kichik harflar A-Z # katta harflar ]/xx) {
- Pseudo-tasodifiy sonlar generatori uni qo'llab-quvvatlaydigan tizimlarda entropiyani olish uchun getentropy() tizim chaqiruvidan foydalanadi (Linux, BSD, macOS). Boshqa tizimlarda entropiya /dev/urandom qurilmasidan o'qish yoki vaqt, jarayon identifikatori va ko'rsatkich qiymatining xeshidan foydalanish orqali olinadi.
- Qo'shilgan spetsifikatsiyani qo'llab-quvvatlash Unicode 17.0.
- Identifikator nomlari va muntazam ifoda guruhlari uchun Unicode qoidalariga qat'iy rioya qilish ta'minlandi, ilgari w klassi tomonidan qamrab olingan taxminan 160 ta Unicode belgilari endi taqiqlangan. Masalan, barcha harflar, raqamlar va pastki chiziqli belgini qamrab oluvchi w klassi endi haqiqiy harflarga o'xshash, ammo unday bo'lmagan aylana ichidagi lotin harflarini chiqarib tashlaydi. Bu xatti-harakatlar o'zgarishi faqat utf8 rejimidan foydalanadigan dasturlarga ta'sir qiladi.
- Perl_study_chunk funksiyalarida bufer toshib ketishi natijasida yuzaga kelgan zaifliklar tuzatildi (CVE-2026-8376, 32-bitli yig'ilishlarda paydo bo'ladi) va S_measure_struct (CVE-2026-57432), shuningdek, Regex dvigatelidagi 16-bitli hisoblagichning toshib ketishi (CVE-2026-13221), bu esa muntazam ifodaning ishlamay qolishiga olib kelishi mumkin.
- Goto operatoridan foydalanib, sikllar va blok konstruksiyalari ichidagi pozitsiyalarga o'tish taqiqlangan. Bu funksiya 2010-yilda bekor qilingan.
- Butun sonlarni qo'shish, ayirish va ko'paytirishni tezlashtirish, funksiya imzosini qayta ishlash va kompilyatsiya vaqtida ma'lum bo'lgan satr kalitlari bilan kalit/qiymat ro'yxatlaridan xeshlarni to'ldirish uchun unumdorlikni optimallashtirish amalga oshirildi.
Manba: linux.org.ru
