Bir yillik ishlab chiqishdan so'ng, Perl dasturlash tilining yangi barqaror tarmog'i, 5.44 versiyasi chiqarildi. Yangi nashrni tayyorlash jarayonida taxminan 270 000 qator kod o'zgartirildi (hujjatlar va avtomatik ravishda yaratilgan kod bundan mustasno - 110 000 qator), bu 860 ta faylga ta'sir qildi va 71 ta ishlab chiquvchi uni ishlab chiqishga hissa qo'shdi.
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 bir qatorda, 5.40 filialini qo'llab-quvvatlash tugadi; kelajakda faqat muhim xavfsizlik muammolari aniqlangan taqdirda uning yangilanishlari chiqarilishi mumkin. Agar 7.x versiya raqamlashiga o'tish to'g'risida qaror qabul qilinmasa, 2027 yilning birinchi yarmida Perl 5.46 barqaror versiyasi uchun asos bo'ladigan eksperimental 5.45 filialida ishlab chiqish boshlandi.
Asosiy o'zgarishlar:
- Funksiya imzolarida nomlangan parametrlardan foydalanish uchun eksperimental imkoniyat qo'shildi. Bu parametrlar funksiyaga funksiya tanasida emas, balki uni e'lon qilish paytida uzatiladigan o'zgaruvchilar ro'yxatini belgilaydi. Yangi imkoniyat parametrlarni qat'iy tartibda emas, balki kalit/qiymat juftliklari va xeshlarda elementlarni tayinlashga o'xshash sintaksisdan foydalanib istalgan tartibda uzatish imkonini beradi: Eski sintaksis: sub f { my ($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 ifodalar endi eksperimental 'enhanced_xx' rejimiga ega, bu esa "/xx" modifikatorini kvadrat qavs ichidagi belgilar sinflari ([a-zA-Z]) bilan ularni bir nechta satrlarga ajratish yoki izohlar qo'shish imkonini 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.
- Unicode 17.0 spetsifikatsiyasi uchun qo'shimcha qo'llab-quvvatlash.
- 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 o'ralgan lotin harflarini o'z ichiga olmaydi. Bu xatti-harakatlar o'zgarishi faqat "utf8 dan foydalanish" rejimidan foydalanadigan dasturlarga ta'sir qiladi.
- Perl_study_chunk (32-bitli versiyalarga ta'sir qiluvchi CVE-2026-8376) va S_measure_struct (CVE-2026-57432) funksiyalaridagi bufer toshib ketishi bilan bog'liq zaifliklar, shuningdek, Regex dvigatelidagi (CVE-2026-13221) 16-bitli hisoblagich toshib ketishi muammosi tuzatildi, bu esa muntazam ifodani noto'g'ri bajarishga 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: opennet.ru
