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, на базе якой у першай палове 2027 года будзе сфарміраваны стабільны рэліз Perl 5.46, калі не будзе прынята рашэнне перайсці да нумарацыі 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 пры адначасовым выманне адразу некалькіх значэнняў у адной ітэрацыі цыклу. Напрыклад, можна сфармаваць аліяс для элемента хэша c масівам пры пераборы разам ключоў і значэнняў хэша: 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"; } # Да версіі 5.44 запатрабавалася бы выконваць разнайменне: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } # Без эксперыментальных магчымасцяў refaliasing і declared_refs: foreach my $key (keys %hash) { say "The $key array contains: @{$hash{$key}}"; }
  • У рэгулярных выразах рэалізаваны эксперыментальны рэжым 'enhanced_xx', які дазваляе выкарыстоўваць мадыфікатар /xx з класамі знакаў у квадратных дужках ([a-zA-Z]) для іх падзелу на некалькі радкоў або падстаноўкі каментароў. Напрыклад, умову if ($text =~ m/[a-zA-Z]/){ можна аформіць так: if ($text =~ m/[ az # малыя літары AZ # загалоўныя літары ]/xx) {
  • У генератары псеўдавыпадковых лікаў для атрымання энтрапіі задзейнічаны сістэмны выклік getentropy() на сістэмах з яго падтрымкай (Linux, BSD, macOS). На астатніх сістэмах для атрымання энтрапіі ажыццяўляецца чытанне з прылады /dev/urandom ці выкарыстанне хэша ад часу, ідэнтыфікатара працэсу і значэнні паказальніка.
  • Дададзена падтрымка спецыфікацыі Unicode 17.0.
  • Забяспечана строгае выкананне правіл Unicode для імёнаў ідэнтыфікатараў і груп рэгулярных выразаў, у якіх зараз забаронена выкарыстоўваць каля 160 Unicode-знакаў, раней падпадалых пад клас w. Напрыклад, з дзеяння класа w, які ахоплівае ўсе літары, лічбы і сімвал падкрэслення, выведзены лацінскія літары ў гуртках, якія нагадваюць рэальныя літары, але імі не з'яўляюцца. Змена паводзін закранае толькі праграмы, якія выкарыстоўваюць рэжым use utf8.
  • Ухілены ўразлівасці, выкліканыя перапаўненнямі буфера ў функцыях Perl_study_chunk (CVE-2026-8376, выяўляецца ў 32-разрадных зборках) і S_measure_struct (CVE-2026-57432), а таксама перапаўненне 16-разраднага лічыльніка ў Regex-рухавічку (CVE-2026-13221), што можа прывесці да няправільнага спрацоўвання рэгулярнага выразы.
  • Забаронены пераход пры дапамозе аператара goto на пазіцыі ўсярэдзіне цыклаў і блокавых канструкцый. Гэта магчымасць была аб'яўлена састарэлай у 2010 годзе.
  • Праведзены аптымізацыі прадукцыйнасці, якія паскорылі аперацыі складання, адніманні і множанні цэлых лікаў, апрацоўку сігнатур функцый і запаўненне хэшаў са спісаў у фармаце ключ/значэнне з вядомымі на этапе кампіляцыі радковымі ключамі.

Крыніца: linux.org.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster