3

Бір жылдық дамудан кейін жарияланған Perl бағдарламалау тілінің жаңа тұрақты тармағын шығару - 5.44. С дайындалуда Жаңа шығарылымда шамамен 270 000 жол код өзгертілді (құжаттама мен автоматты түрде жасалған кодты қоспағанда - 110 000), өзгерістер 860 файлға әсер етті және әзірлеуге 71 әзірлеуші ​​қатысты.

5.44 тармағы он үш жыл бұрын белгіленген бекітілген әзірлеу кестесіне сәйкес шығарылды, ол жылына бір рет жаңа тұрақты тармақтарды және үш ай сайын кішігірім шығарылымдарды шығаруды көздейді. Perl 5.44.1-дің алғашқы кішігірім шығарылымы шамамен бір айдан кейін шығарылады деп жоспарлануда, ол Perl 5.44.0 енгізу кезінде анықталған ең маңызды қателерді түзетеді. Perl 5.44 шығарылымымен 5.40 тармағы үшін қолдау тоқтатылды; болашақта оған арналған жаңартулар тек маңызды қауіпсіздік мәселелері анықталған жағдайда ғана шығарылуы мүмкін. Басталды егер шешім қабылданбаса, 2027 жылдың бірінші жартысында Perl 5.46 тұрақты шығарылымының негізі болатын тәжірибелік 5.45 тармағын әзірлеу процесі өту 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 циклында бүркеншік ат жасауға мүмкіндік береді. Мысалы, хэштің кілттері мен мәндері бойынша итерация жасаған кезде массиві бар хэш элементі үшін бүркеншік ат жасай аласыз: v5.44 пайдаланыңыз; use 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-zA-Z]/){
  • Псевдо-кездейсоқ сан генераторы оны қолдайтын жүйелерде энтропияны алу үшін getentropy() жүйелік шақыруын пайдаланады (Linux, BSD, macOSБасқа жүйелерде энтропия /dev/urandom құрылғысынан оқу немесе уақыттың, процесс идентификаторының және көрсеткіш мәнінің хэшін пайдалану арқылы алынады.
  • Қосылған спецификацияны қолдау Unicode 17.0.
  • Идентификатор атаулары мен тұрақты өрнек топтары үшін Юникод ережелерін қатаң сақтау қамтамасыз етілді, бұрын w класымен қамтылған шамамен 160 Юникод таңбасына енді тыйым салынған. Мысалы, барлық әріптерді, сандарды және астын сызу таңбасын қамтитын w класы енді нақты әріптерге ұқсайтын, бірақ ондай емес шеңберленген латын әріптерін қоспайды. Бұл мінез-құлық өзгерісі тек utf8 режимін пайдаланатын бағдарламаларға әсер етеді.
  • Perl_study_chunk функцияларындағы буфердің толып кетуінен туындаған осалдықтарды түзетілді (CVE-2026-8376, 32-биттік жинақтарда пайда болады) және S_measure_struct (CVE-2026-57432), сондай-ақ Regex қозғалтқышындағы 16-биттік санауыштың асып кетуі (CVE-2026-13221), бұл тұрақты өрнектің істен шығуына әкелуі мүмкін.
  • Циклдер ішіндегі позицияларға және блоктық конструкцияларға goto операторын пайдаланып секіруге тыйым салынады. Бұл мүмкіндік 2010 жылы ескірген.
  • Бүтін сандарды қосуды, азайтуды және көбейтуді, функция қолтаңбасын өңдеуді және кілт/мән тізімдерінен хэштерді компиляция кезінде белгілі жол кілттерімен толтыруды жеделдету үшін өнімділікті оңтайландырулар жасалды.

Ақпарат көзі: linux.org.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster