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

16.10.2024
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» для скаляров, что потенциально приводит к распространению изменений на внутренние состояния или запуску исключений.
  • Вызов метода импорта неопределенного пакета: Вызов import or unimport для неопределенного класса с аргументом теперь генерирует предупреждение, помогающее обнаружить опечатки и потенциальное неправильное использование.
  • Запрет косвенных объектов с помощью return: Оператор return больше не допускает косвенных объектов, устраняя источник путаницы.
  • Ограничение на использование ключевых слов класса в вызовах методов: ключевые слова класса больше не интерпретируются как дескрипторы файлов в конкретных вызовах методов при условии no feature "bareword_filehandles".

 

 

Обновления модулей

Были обновлены несколько основных модулей, в том числе:

  • Archive::Tar обновлен с версии 2.40 до версии 3.02_001.
  • Term::Table добавлен в ядро (версия 0.018).
  • Test2::Suite добавлен в ядро (версия 0.000162) и предоставляет инструменты для комплексного модульного тестирования.
  • builtin Модуль: добавлена функция load_module().

 

Различные другие модули получили обновления, включая, но не ограничиваясь, bytesCompress::Raw::Bzip2Compress::Raw::ZlibData::DumperDB_File Devel::PeekDevel::PPPortdiagnostics и многие другие.

Полный список изменений задокументирован в дельта-документе Perl, который содержит подробную информацию для разработчиков. Если вы столкнулись с проблемами, которые, по вашему мнению, могут быть ошибками, пожалуйста, следуйте инструкциям по отправке сообщений на https://github.com/Perl/perl5/issues.

 

Ресурс:

  • Осуществляется переход на Perl 5.40

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 0 (0 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала