Debian Unstable был обновлен до Perl 5.40.0

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
Perl 5.40.0 — это основная версия с несколькими улучшениями, в том числе:
- Ключевое слово
class: это новое ключевое слово позволяет разработчикам писать более современный и объектно-ориентированный код на Perl. Внутри метода,ADJUSTблока или выражения инициализатора поля ключевое слово__CLASS__возвращает имя класса текущего экземпляра объекта. Это упрощает диспетчеризацию методов, особенно в конструкторах, где доступ к$selfзапрещён. - Пробел в параметре командной строки
-M: Perl теперь допускает пробел между параметром-Mи последующим именем модуля, что соответствует поведению параметра-I - Логический оператор XOR (
^^): Введён новый логический оператор XOR (^^), дополняющий набор логических и побитовых операторов. - Стабилизация
try/catchи многозначнойforитерации: функции, представленные в предыдущих версиях,try/catchдля обработки исключений и итерации по нескольким значениям с помощьюfor, теперь считаются стабильными и больше не вызывают предупреждений. - Стабилизация модуля
builtin: Модульbuiltin, представленный в Perl 5.36.0, теперь считается стабильным. Однако некоторые функции в этом модуле остаются экспериментальными. use v5.40Пакет функций: при использованииuse v5.40;(или более поздней версии) импортируется соответствующий пакет функций, включая недавно стабилизированную функциюtry. Кроме того, импортируется соответствующий пакетbuiltin.
Улучшения безопасности
В этом выпуске устранены две заметные уязвимости в системе безопасности:
- CVE-2023-47038: эта уязвимость связана с потенциальным переполнением буфера с помощью специального регулярного выражения. Она была устранена в версиях с 5.30.0 по 5.38.0.
- CVE-2023-47039: устранена уязвимость, связанная с перехватом двоичных файлов в Perl для Windows. Эта уязвимость возникла из-за того, что Perl использует системный путь для поиска
cmd.exe, что делает его уязвимым для эксплуатации путём размещения вредоносногоcmd.exeв каталоге со слабыми разрешениями.
Заметные изменения
Обновление также включает некоторые несовместимые изменения:
reset EXPRповедение:reset EXPRтеперь вызывает «set-magic» для скаляров, что потенциально приводит к распространению изменений на внутренние состояния или запуску исключений.- Вызов метода импорта неопределенного пакета: Вызов
importorunimportдля неопределенного класса с аргументом теперь генерирует предупреждение, помогающее обнаружить опечатки и потенциальное неправильное использование. - Запрет косвенных объектов с помощью
return: Операторreturnбольше не допускает косвенных объектов, устраняя источник путаницы. - Ограничение на использование ключевых слов класса в вызовах методов: ключевые слова класса больше не интерпретируются как дескрипторы файлов в конкретных вызовах методов при условии
no feature "bareword_filehandles".
Обновления модулей
Были обновлены несколько основных модулей, в том числе:
- Archive::Tar обновлен с версии 2.40 до версии 3.02_001.
- Term::Table добавлен в ядро (версия 0.018).
- Test2::Suite добавлен в ядро (версия 0.000162) и предоставляет инструменты для комплексного модульного тестирования.
builtinМодуль: добавлена функцияload_module().
Различные другие модули получили обновления, включая, но не ограничиваясь, bytes, Compress::Raw::Bzip2, Compress::Raw::ZlibData::Dumper, DB_File Devel::PeekDevel::PPPort, diagnostics и многие другие.
Полный список изменений задокументирован в дельта-документе Perl, который содержит подробную информацию для разработчиков. Если вы столкнулись с проблемами, которые, по вашему мнению, могут быть ошибками, пожалуйста, следуйте инструкциям по отправке сообщений на https://github.com/Perl/perl5/issues.
Ресурс:
- Осуществляется переход на Perl 5.40
Редактор: AndreyEx