ДоступСн язык программирования Perl 5.44

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ языка программирования 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/[ a-z # строчныС Π±ΡƒΠΊΠ²Ρ‹ A-Z # Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ ]/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 Π³ΠΎΠ΄Ρƒ.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΡƒΡΠΊΠΎΡ€ΠΈΠ²ΡˆΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния, вычитания ΠΈ умноТСния Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигнатур Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ΅ΠΉ ΠΈΠ· списков Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с извСстными Π½Π° этапС компиляции строковыми ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster