Perl 5.44


3

Bir illik inkişafdan sonra nəşr olundu Perl proqramlaşdırma dilinin yeni sabit qolunun buraxılışı - 5.44... Nə vaxt hazırlanır Yeni buraxılışda təxminən 270 sətir kod dəyişdirildi (sənədlər və avtomatik olaraq yaradılan kod istisna olmaqla - 110), dəyişikliklər 860 fayla təsir etdi və 71 tərtibatçı inkişafda iştirak etdi.

5.44 budağı, on üç il əvvəl müəyyən edilmiş sabit inkişaf cədvəlinə uyğun olaraq buraxılıb və bu cədvələ əsasən, ildə bir dəfə yeni sabit budaqların, üç aydan bir isə kiçik buraxılışların buraxılması nəzərdə tutulur. İlk kiçik buraxılış olan Perl 5.44.1-in təxminən bir ay ərzində buraxılması planlaşdırılır və Perl 5.44.0-ın tətbiqi zamanı aşkar edilən ən əhəmiyyətli səhvlər düzəldilir. Perl 5.44-ün buraxılışı ilə 5.40 budağı üçün dəstək sona çatdı; gələcəkdə yalnız kritik təhlükəsizlik problemləri aşkar edildikdə onun üçün yeniləmələr buraxıla bilər. Başladı qərar verilmədiyi təqdirdə, 2027-ci ilin birinci yarısında Perl 5.46-nın sabit buraxılışı üçün əsas olacaq eksperimental 5.45 qolunun inkişaf prosesi gedin 7.x nömrələnməsinə.

Açar dəyişikliklər:

  • Əlavə edilib adlı parametrlərin eksperimental istifadə imkanı imzalar Funksiya gövdəsində deyil, onun elan edilməsi zamanı funksiyaya ötürülən dəyişənlərin siyahısını təyin edən funksiyalar. Bu yeni xüsusiyyət, parametrlərin ciddi qaydada deyil, istənilən qaydada, açar/dəyər cütlükləri və heşlərdə elementlərin təyin edilməsinə bənzər bir sintaksisdən istifadə edərək ötürülməsinə imkan verir:
    • köhnə sintaksis: sub f { my ($x, $y) = @_; …} f(1, 2);
    • imzalar: sub f ($x, $y) { … } f(1, 2);
    • adlı parametrləri olan imzalar: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Çoxdəyişənli foreach döngələrində ləqəblərdən (göstəricilərdən göstəricilərə) istifadə üçün eksperimental dəstək əlavə edildi. Bu xüsusiyyət, tək döngə iterasiyasında birdən çox dəyər əldə edərkən foreach döngəsində ləqəb yaratmağa imkan verir. Məsələn, həm açarlar, həm də heş dəyərləri üzərində iterasiya edərkən massivli heş elementi üçün ləqəb yarada bilərsiniz: v5.44 istifadə edin; feature qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "The $key array contains: @items"; } # 5.44 versiyasından əvvəl, istinadın kəsilməsi tələb olunacaq: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } # Eksperimental yenidən aliasing və declared_refs funksiyaları olmadan: foreach my $key (keys %hash) { say "$key massivi aşağıdakıları ehtiva edir: @{$hash{$key}}"; }
  • Adi ifadələrdə həyata keçirilən Eksperimental 'enhanced_xx' rejimi /xx modifikatorunun kvadrat mötərizədə ([a-zA-Z]) simvol sinifləri ilə istifadə edilməsinə və onları birdən çox sətir arasında bölməsinə və ya şərhlər daxil etməsinə imkan verir. Məsələn, if ($text =~ m/[a-zA-Z]/){ şərti belə yazıla bilər: if ($text =~ m/[a-z # kiçik hərflər A-Z # böyük hərflər ]/xx) {
  • Yalançı təsadüfi ədəd generatoru, onu dəstəkləyən sistemlərdə entropiya əldə etmək üçün getentropy() sistem çağırışından istifadə edir (Linux, BSD, macOSDigər sistemlərdə entropiya /dev/urandom cihazından oxumaqla və ya zamanın, proses ID-sinin və göstərici dəyərinin heşindən istifadə etməklə əldə edilir.
  • Spesifikasiya dəstəyi əlavə edildi Unicode 17.0.
  • İdentifikator adları və müntəzəm ifadə qrupları üçün Unicode qaydalarına ciddi riayət olunması təmin edilmişdir və əvvəllər w sinfi tərəfindən əhatə olunan təxminən 160 Unicode simvolu artıq qadağan edilmişdir. Məsələn, bütün hərfləri, rəqəmləri və alt xətt simvolunu əhatə edən w sinfi artıq həqiqi hərflərə bənzəyən, lakin olmayan dairəvi Latın hərflərini istisna edir. Bu davranış dəyişikliyi yalnız utf8 istifadə rejimindən istifadə edən proqramlara təsir göstərir.
  • Perl_study_chunk funksiyalarında bufer daşmalarının yaratdığı zəifliklər düzəldildi (CVE-2026-8376, 32 bitlik yığımlarda görünür) və S_measure_struct (CVE-2026-57432), eləcə də Regex mühərrikində 16 bitlik sayğacın daşması (CVE-2026-13221), bu da müntəzəm ifadənin sıradan çıxmasına səbəb ola bilər.
  • Goto operatorundan istifadə edərək döngələr və blok konstruksiyaları daxilindəki mövqelərə tullanmaq qadağandır. Bu funksiya 2010-cu ildə ləğv edilib.
  • Tam ədədlərin toplanması, çıxılması və vurulmasını, funksiya imzasının emalını və kompilyasiya zamanı məlum olan sətir açarları ilə açar/dəyər siyahılarından heşlərin doldurulmasını sürətləndirmək üçün performans optimallaşdırmaları edilmişdir.

Mənbə: linux.org.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster