Новый релиз языка программирования Perl 5.32.0

Perl 5.32.0
Метки: /

После 13 месяцев разработки состоялся релиз новой стабильной ветки языка программирования Perl — 5.32. При подготовке нового выпуска было изменено около 220 тыс. строк кода, изменения затронули 1800 файлов, в разработке приняли участие 89 разработчиков. Одновременно объявлено о переводе разработки Perl и отслеживания ошибок на платформу GitHub.

Ветка 5.32 выпущена в соответствии с утверждённым семь лет назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов — раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.32.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.32.0. Одновременно с выходом Perl 5.32 прекращена поддержка ветки 5.28, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.33, на базе которой в июне 2021 года будет сформирован стабильный релиз Perl 5.34.

Ключевые изменения в Perl 5.34:

  • Добавлен инфиксный оператор «isa» для проверки того, является ли объект экземпляром указанного класса или классом, производным от него. Например if( $obj isa Package::Name ) { ... }. Оператор пока помечен как экспериментальный.
  • Предоставлена возможность объединения операторов сравнения в цепочки, позволяющие разом сравнить несколько значений, при условии использования операторов с равным приоритетом. Например цепочка «if ( $x Поддержка спецификации Unicode обновлена до версии 13.0. Добавлены новые свойства Unicode — Identifier_Status и Identifier_Type, которые могут применяться для проверки типа Unicode-символа (нетипичный, устаревший, игнорируемый, исключаемый, специализированный и т.п.) и его статуса в контексте безопасности (разрешённые и ограниченные символы).
  • В регулярных выражениях разрешено использование Unicode-свойства Name (именованные символы) вместо «N{…}», в том числе в шаблонах, например qr!p{name=/(SMILING|GRINNING) FACE/}!.
  • Обеспечена работа функций POSIX::mblen(), mbtowc и wctomb с изменяющими своё состояние локалями и в многопоточных приложениях.
  • Убран признак экспериментальной возможности с символьных синонимов операторов регулярных выражений. Например, вместо (?(*plb:...) или (*positive_lookbehind:...), что значительно проще запомнить.
  • В регулярных выражениях убран признак экспериментальной возможности со средств для выявления смешивания различных классов Unicode-символов в строке, например, когда в слове используются символы кириллицы и латиницы. Для ограничения области значений только одним типом символов можно использовать выражения вида qr/(*script_run: d+ b )/x" или "qr/(*sr: b w+ b )/x.
  • В константах запрещено применять изменяемые переменные, например my $var; $sub = sub () { $var }; теперь вызовет ошибку, для избежания которой нужно писать my $var; $sub = sub () { return $var };.
  • Строка «0» теперь воспринимается как число при указании в операторах определения диапазонов. Например, раньше конструкция ‘»0″ .. «-1″‘ приводила к генерации диапазона строк от «0» до «99», а теперь будет приводить к генерации пустого списка, как при указании «0 .. -1». Аналогично ‘»0″ .. «9»‘ приведёт к генерации списка чисел от 0 до 9 , а не строк.
  • Проведена оптимизация производительности: Заметно увеличена производительность сортировки при использовании конструкций вида sort {$a $b} и sort {$b $a}. Реализация my_strnlen ускорена для систем без собственной реализации strnlen. Ускорена работа функций grok_bin_oct_hex, grok_bin, grok_oct, grok_hex и grok_number_flags.
  • В состав включена утилита streamzip для создания zip-файла из входного потока, поставляемая вместе с новым выпуском модуля IO::Compress::Base.
  • Обновлены версии модулей, входящих в базовую поставку. Из основного состава удалён модуль Pod::Parser.
  • Устранены три уязвимости (CVE-2020-10543, CVE-2020-10878 и CVE-2020-12723), которые могут привести к переполнению буфера или целочисленному переполнению при обработке специально оформленных регулярных выражений. Уязвимости представляют опасность для программ, в которых при построении регулярных выражений используются непроверенные внешние данные (когда внешние данные формируют регулярные выражения, а не используются при проверке).

Вывод:

В этой статье вы прочитали об основных нововведениях в языке программирования Perl 5.32.

Источник: OpenNet.

Подписываетесь на соц-сети:

Оценка:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
(Пока оценок нет)
Загрузка...

Поделится:

Также рекомендую: