В начале июня 2024 года состоялся релиз стабильной ветки языка программирования Perl 5.40. Релиз предыдущей стабильной ветки проекта Perl 5.38 состоялся в июле 2023 года.
По данным OpenNET, при подготовке нового выпуска Perl сообществом было изменено около 160 тыс. строк кода (без документации и автоматически сгенерированного кода — 110 тыс. строк кода), а всего изменения затронули 1500 файлов, в разработке приняли участие 75 программистов и мейнтейнеров открытого проекта.
Ветка 5.40 выпущена в соответствии с утверждённым одиннадцать лет назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов — раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.40.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.40.0. Одновременно с выходом Perl 5.40 прекращена поддержка ветки 5.36, для которой обновления могут быть выпущены в будущем только в случае выявления критических проблем с безопасностью.
20 июня начнётся процесс разработки экспериментальной ветки 5.41, на базе которой в мае или июне 2025 года будет сформирован стабильный релиз Perl 5.42, если не будет принято решение перейти к нумерации 7.x.
Основные изменения и дополнения в Perl 5.40:
• расширены возможности, связанные с появившемся в прошлой версии экспериментальным синтаксисом для создания классов;
• для определяемых внутри класса полей реализован атрибут «:reader», применяемый для автоматического создания метода, возвращающего значение переменной из поля в текущем экземпляре класса;
• объявлен стабильным синтаксис обработки исключений try/catch, который можно использовать вместо неочевидных манипуляций с eval. Блок try включает блок с выполняемым кодом, а блок catch с кодом для обработки любого исключения, которое может возникнуть при выполнении первого блока;
• стабилизирован синтаксис «for my (VAR, VAR) (LIST)» и «foreach my (VAR, VAR) (LIST)», применяемый для перебора списков с единовременным извлечением сразу нескольких значений в одной итерации цикла;
• объявлен стабильным модуль builtin, включающий всегда доступные функции, встроенные в интерпретатор. В настоящее время в модуле предложены функции true, false, weaken, unweaken, is_weak, blessed, refaddr, reftype, ceil, floor, is_tainted, trim и indexed;
• добавлены новые экспериментальные встроенные функции inf и nan, доступные в пространстве имён «builtin::» («builtin::inf» и «builtin::nan»). Данные функции можно использовать в качестве констант, определяющих бесконечность и нечисловое значение;
• добавлен новый логический оператор «^^», соответствующий операции XOR и дополняющий битовый оператор «^» (в Perl предоставляет три базовых битовых оператора «&», «|» и «^», соответствующих операциям AND, OR и XOR, но для логических операций до сих пор были доступны только варианты AND («&&») и OR («||»)). Логическое выражение «$x ^^ $y» вернёт TRUE, когда либо «x», либо «y» имеют значение TRUE, но не одновременно;
• прекращена поддержка симуляции версий до 5.11. Использование директивы «use номер_версии», отключающей дополнительные возможности, добавленные в интерпретаторе после указанной версии, с номером версии меньше 5.11 (например, «use v5.8») теперь будет приводить к выводу ошибки, а не предупреждения. Аналогично добавлен вывод предупреждения при использовании в «use» версии меньше 5.39 (предупреждения будут заменены на ошибку в выпуске 5.44);
• разрешено использование пробела между опцией командной строки «-M» и именем модуля, например «perl -M Data::Dumper=Dumper -E ‘say Dumper [1,2,3]’» (раньше нужно было писать «perl -MData::Dumper…»);
• объявлено устаревшим использование оператора «goto» для перехода из внешней области видимости во внутреннюю. Поддержка данной возможности будет прекращена в версии Perl 5.42;
• в основной состав включены модули Term::Table и Test2::Suite, предназначенные для создания unit-тестов. Обновлены версии модулей Archive::Tar, Compress::Raw::Bzip2, Compress::Raw::Zlib, Data::Dumper, DB_File, File::Compare, File::Find, Getopt::Long, Hash::Util, HTTP::Tiny, IO, Math::BigInt, PerlIO::encoding, Tie::File, Time::HiRes;
• добавлена поддержка операционной системы Serenity OS.
ссылка на оригинал статьи https://habr.com/ru/articles/821173/
Добавить комментарий