После 11 месяцев разработки состоялся релиз новой стабильной ветки языка программирования Perl – 5.34. При подготовке нового выпуска было изменено около 280 тыс. строк кода, изменения затронули 2100 файлов, в разработке приняли участие 78 разработчиков.
Ветка 5.34 выпущена в соответствии с утверждённым восемь лет назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов – раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.34.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.34.0. Одновременно с выходом Perl 5.34 прекращена поддержка ветки 5.30, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.35, на базе которой в мае или июне 2022 года будет сформирован стабильный релиз Perl 5.36, если Perl 5 не заменит ветка Perl 7.
Ключевые изменения:
- Добавлена экспериментальная поддержка синтаксиса try/catch для обработки исключений, который можно использовать вместо не очевидных манипуляций с “eval”. Блок “try” включает блок с выполняемым кодом, а блок “catch” с кодом для обработки любого исключения, которое может возникнуть при выполнении первого блока. В “catch” определяется переменная, содержащая данные, переданные при формировании исключения (например, при срабатывании исключения на вызов “die” будет передана указанная в качестве аргумента строка). Внутри блоков “try” и “catch” разрешены операторы переходов, включая return, goto, next, last и redo. use feature ‘try’; try { a_function(); } catch ($e) { warn “An error occurred: $e”; }
- Разрешено использование пустой нижней границы диапазона в блоках “{a,n}”, в том числе используемых в регулярных выражениях. Например, теперь можно указывать “{,3}”.
- Внутри параметров с фигурными скобками {m,n}, b{}, g{}, k{}, N{}, o{} и x{} разрешено использование пробелов, если пробел прилегает к фигурной скобке или запятой, для двойного экранирования или в шаблонах регулярных выражений, например, теперь можно указывать “qr/a{ 5, 7 }/” или “x{ FFFC }” без заключения значений в кавычки.
- В дополнение к шестнадцатеричным (0xddddd) и двоичным (0bddddd) литералам предложен новый синтаксис для задания восьмеричных чисел – “0oddddd”, в которых для наглядности можно указывать подчёркивания (0o123_456). Поддержка нового синтаксиса также добавлена в функцию builtin oct().
- В движке регулярных выражений устранена утечка памяти.
- Обновлены версии модулей, входящих в базовую поставку. В состав включён модуль ExtUtils::PL2Bat для преобразования perl-скриптов в bat-файлы для запуска в Windows.
- Добавлена поддержка сборки Perl для системы 9front (форк Plan9). Улучшена поддержка Plan9 и macOS. Прекращена поддержка ОС Symbian.