Debian Unstable был обновлен до Perl 5.40.0, что принесло ряд новых функций, обновлений безопасности и исправлений ошибок. Разработчик Debian Нико Тини объявил о переходе в списке рассылки Debian, отметив, что пользователям следует ожидать, что в sid (кодовое название Debian Unstable) в течение нескольких дней будет доступна функция удаления, пока не будут завершены необходимые перестройки.
Новые пакеты Perl сначала появятся в нестабильной ветке Debian. Оттуда они попадут в тестовую ветку и, вероятно, будут включены в следующий стабильный выпуск Debian, возможно, в следующем году.
Обновление Debian Unstable до Perl 5.40.0 — заметное достижение. Оно вводит новые языковые функции, повышает безопасность и исправляет множество ошибок. Давайте обсудим некоторые новые функции, улучшения и заметные изменения в Perl 5.40.
Perl 5.40.0 — это основная версия с несколькими улучшениями, в том числе:
class
: это новое ключевое слово позволяет разработчикам писать более современный и объектно-ориентированный код на Perl. Внутри метода, ADJUST
блока или выражения инициализатора поля ключевое слово __CLASS__
возвращает имя класса текущего экземпляра объекта. Это упрощает диспетчеризацию методов, особенно в конструкторах, где доступ к $self
запрещён.-M
: Perl теперь допускает пробел между параметром -M
и последующим именем модуля, что соответствует поведению параметра -I
^^
): Введён новый логический оператор XOR (^^
), дополняющий набор логических и побитовых операторов.try/catch
и многозначной for
итерации: функции, представленные в предыдущих версиях, try/catch
для обработки исключений и итерации по нескольким значениям с помощью for
, теперь считаются стабильными и больше не вызывают предупреждений.builtin
: Модуль builtin
, представленный в Perl 5.36.0, теперь считается стабильным. Однако некоторые функции в этом модуле остаются экспериментальными.use v5.40
Пакет функций: при использовании use v5.40;
(или более поздней версии) импортируется соответствующий пакет функций, включая недавно стабилизированную функцию try
. Кроме того, импортируется соответствующий пакет builtin
.
В этом выпуске устранены две заметные уязвимости в системе безопасности:
cmd.exe
, что делает его уязвимым для эксплуатации путём размещения вредоносного cmd.exe
в каталоге со слабыми разрешениями.
Обновление также включает некоторые несовместимые изменения:
reset EXPR
поведение: reset EXPR
теперь вызывает “set-magic” для скаляров, что потенциально приводит к распространению изменений на внутренние состояния или запуску исключений.import
or unimport
для неопределенного класса с аргументом теперь генерирует предупреждение, помогающее обнаружить опечатки и потенциальное неправильное использование.return
: Оператор return
больше не допускает косвенных объектов, устраняя источник путаницы.no feature "bareword_filehandles"
.
Были обновлены несколько основных модулей, в том числе:
builtin
Модуль: добавлена функция load_module()
.
Различные другие модули получили обновления, включая, но не ограничиваясь, bytes
, Compress::Raw::Bzip2
, Compress::Raw::Zlib
Data::Dumper
, DB_File
Devel::Peek
Devel::PPPort
, diagnostics
и многие другие.
Полный список изменений задокументирован в дельта-документе Perl, который содержит подробную информацию для разработчиков. Если вы столкнулись с проблемами, которые, по вашему мнению, могут быть ошибками, пожалуйста, следуйте инструкциям по отправке сообщений на https://github.com/Perl/perl5/issues.
Ресурс: