Бир жылдык иштеп чыгуудан кийин, Perl программалоо тилинин жаңы туруктуу тармагы, 5.44 версиясы чыгарылды. Жаңы чыгарылышты даярдоодо болжол менен 270 000 сап код өзгөртүлдү (документацияны жана автоматтык түрдө түзүлгөн кодду кошпогондо – 110 000 сап), бул 860 файлга таасирин тийгизди жана аны иштеп чыгууга 71 иштеп чыгуучу салым кошту.
5.44 бутагы он үч жыл мурун түзүлгөн туруктуу өнүктүрүү графигине ылайык чыгарылды, ал жылына бир жолу жаңы туруктуу бутактарды жана үч ай сайын минордук релиздерди чыгарууну талап кылат. Биринчи минордук релиз, Perl 5.44.1, болжол менен бир айдан кийин чыгарылышы пландаштырылууда, анда Perl 5.44.0 ишке ашыруу учурунда табылган эң маанилүү каталар оңдолот. Perl 5.44 чыгарылышы менен бирге 5.40 бутагын колдоо токтотулду; келечекте анын жаңыртуулары коопсуздуктун маанилүү маселелери аныкталган учурда гана чыгарылышы мүмкүн. Эгерде 7.x версиясынын номерленишине өтүү чечими кабыл алынбаса, 2027-жылдын биринчи жарымында Perl 5.46 туруктуу релизинин негизин түзө турган эксперименталдык 5.45 бутагын иштеп чыгуу башталды.
Негизги өзгөрүүлөр:
- Функциянын кол тамгаларында аталган параметрлерди колдонуу үчүн эксперименталдык мүмкүнчүлүк кошулду. Бул параметрлер функциянын денесинде эмес, аны жарыялоо учурунда функцияга өткөрүлүп берилген өзгөрмөлөрдүн тизмесин аныктайт. Жаңы мүмкүнчүлүк параметрлерди так тартипте эмес, ачкыч/маани жуптарын жана хэштерде элементтерди дайындоого окшош синтаксисти колдонуп каалаган тартипте өткөрүүгө мүмкүндүк берет: Эски синтаксис: 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 циклинде псевдоним түзүүгө мүмкүндүк берет. Мисалы, хэштин ачкычтары жана маанилери боюнча итерациялоодо массиви бар хэш элементи үчүн псевдоним түзө аласыз: v5.44 колдонуу; feature qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, \@items ) ( %hash ) { say "$key массиви төмөнкүлөрдү камтыйт: @items"; } # 5.44 версиясына чейин шилтемелерди ажыратуу талап кылынат: foreach my ( $key, $var ) ( %hash ) { say "$key массиви төмөнкүлөрдү камтыйт: @$var"; } # Эксперименталдык кайра даректөө жана declared_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, BSD, macOSБашка системаларда энтропия /dev/urandom түзмөгүнөн окуу же убакыттын хэшин, процесстин идентификаторун жана көрсөткүч маанисин колдонуу менен алынат.
- Юникод 17.0 спецификациясына колдоо кошулду.
- Идентификаторлордун аталыштары жана туруктуу туюнтма топтору үчүн Юникод эрежелерин катуу сактоо камсыз кылынды, мурда "\w" классы менен камтылган болжол менен 160 Юникод символу эми тыюу салынган. Мисалы, бардык тамгаларды, сандарды жана астыңкы сызыкча белгисин камтыган "\w" классы эми чыныгы тамгаларга окшош, бирок андай эмес тегеректелген латын тамгаларын камтыбайт. Бул жүрүм-турумдун өзгөрүшү "utf8 колдонуу" режимин колдонгон программаларга гана таасир этет.
- Perl_study_chunk (CVE-2026-8376, ал 32-биттик курулмаларга таасир этет) жана S_measure_struct (CVE-2026-57432) функцияларындагы буфердин ашыкча толуп кетиши, ошондой эле Regex кыймылдаткычындагы (CVE-2026-13221) 16-биттик эсептегичтин ашыкча толуп кетиши оңдолду, бул кадимки туюнтманын туура эмес аткарылышына алып келиши мүмкүн.
- Циклдердин ичиндеги позицияларга жана блоктук конструкцияларга goto операторун колдонуп секирүүгө тыюу салынат. Бул функция 2010-жылы алынып салынган.
- Бүтүн сандарды кошууну, кемитүүнү жана көбөйтүүнү, функциянын кол тамгасын иштетүүнү жана ачкыч/маани тизмелеринен хэштерди компиляция учурунда белгилүү болгон сап ачкычтары менен толтурууну тездетүү үчүн иштин натыйжалуулугун оптималдаштыруулар жасалган.
Source: opennet.ru
