Выпущен язык программирования Perl 5.40

Только что вышедшая новая версия Perl 5.40 внесла в язык программирования усовершенствования, обновления безопасности и изменения, развивающие его возможности предыдущей версии 5.38.

В этом обновлении появились новые функции оптимизации и устранения значительных уязвимостей в системе безопасности. Вот об этом подробнее.

Что нового в языке программирования Perl 5.40

Одной из особенностей Perl 5.40 является введение ключевого слова __CLASS__. Это новое дополнение позволяет более точно находить имена классов в контекстах, основанных на классах, таких как методы и инициализаторы полей. Оно предоставляет ссылку на класс с учетом времени выполнения, что особенно полезно при выполнении конструктора, когда «$self» недоступен.

Кроме того, программисты Perl теперь могут использовать атрибут :reader для переменных полей класса, чтобы автоматически генерировать методы-аксессоры, упрощая код и повышая его читабельность. Обновление также включает в себя разрешение пробелов в опции -M командной строки, выравнивая ее с существующим поведением опции -I.

Значительное усовершенствование синтаксиса связано с введением логического оператора xor ^^, который дополняет набор логических операторов Perl. В то же время такие функции, как блоки try/catch и итерация по нескольким значениям с помощью for, перешли из разряда экспериментальных в разряд стабильных, что свидетельствует о зрелости их реализации и надежности.

Что касается безопасности, то в Perl 5.40 исправлены значительные уязвимости, включая CVE-2023-47038, устраняющую проблему переполнения буфера, и CVE-2023-47039, устраняющую риск перехвата бинарных файлов на системах Windows

Что касается несовместимости и устареваний, то в обновлении появились изменения, которые могут повлиять на существующие скрипты, включая корректировку функции reset EXPR, которая теперь запускает „set magic“ для скаляров, что может повлиять на старые скрипты, где она не имела эффекта.

Кроме того, Perl продолжает отказываться от функций и синтаксиса, которые могут привести к двусмысленности или ошибкам, например, разрешение пустых слов классов в качестве дескрипторов файлов.

В Perl 5.40 также обновлен широкий спектр модулей, от «Archive::Tar» до «IO::Socket::I P», наряду с включением новых модулей, таких как «Term::Table» и «Test2::Suite» в ядро Perl, что уменьшает зависимость от тестирования модулей на CPAN.

Наконец, в новом выпуске улучшена производительность, в том числе оптимизированы операции отрицания и улучшена работа с общими оптимизациями TARGMY, которые могут значительно ускорить выполнение определенных операций.

Разработчикам рекомендуется обратиться к документации Perl и ресурсам сообщества для подробного обзора всех изменений и получения дополнительной информации. Вот анонс; подробно ознакомиться с ключевыми отличиями от предыдущей версии.