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 при одноразовому вилучення відразу кількох значень в одній ітерації циклу. Наприклад, можна сформувати аліас для елемента хеша з масивом при переборі разом ключів і значень хешу: 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