Выпущен Perl 5.28


Perl 5.28 не вносит радикальных изменений, но в основном фокусируется на оптимизации, повышении производительности, исправлениях безопасности, очистке, обновлении и удалении модулей. Мы объединили документ delta этой версии с докладом Сойерк на TPC2018 в Солт-Лейк-Сити, чтобы предоставить более целостное резюме заслуживающих внимания изменений.

Начиная с новых функций,Perl 5.28 был обновлен для поддержки Unicode версии 10.0, которая теперь даже включает символ биткойна!

Теперь Delete можно использовать для хэш-фрагментов ключа/значения, возвращая ключи вместе с удаленными значениями. Как говорит СойеркС :

мои %sanitised_values=удалить %input_values{@allowed_keys};

Алфавитные синонимы для утверждений регулярных выражений Это влияет на конструкцию атомной группировки и различные варианты поиска.

Например, положительный внешний вид записывается как /(?=pattern)/

но теперь можно сделать более читабельным/(*pla:pattern)/

и еще более читаемый как/(*positive_lookahead:pattern)/

*script_run гарантирует, что несколько сценариев не могут быть введены в одно и то же совпадение, так как смесь сценариев, таких как кириллица и латиница, может быть признаком атаки подмены.

qr/(*script_run: \d+ \b )/x

??где совпадающие цифры будут взяты из одного и того же сценария.

Оператор яда-яда … теперь это стало строго утверждением

Повышение производительности и удаление

Затраты на запуск для создания шаблонов регулярных выражений со свойствами Unicode (\p{…}) были значительно сокращены.

Встроенный ref() теперь намного быстрее в логическом контексте

Очистка внутренних хэш — функций

Удаление варс использования

Удаление :заблокированных и :уникальных атрибутов

Будущие удаления:

Присвоение $[ будет фатальным в Perl 5.30

функция hostname() не принимает аргументы в Perl 5.32

Новые предупреждения

Старый разделитель пакетов, используемый в строке(синтаксис W) Вы использовали старый разделитель пакетов «‘» в переменной с именем внутри строки в двойных кавычках; например, «В доме $name». Это эквивалентно «В $name::s house». Если вы имели в виду первое, поставьте обратную косую черту перед апострофом («В доме $name»).

Сценарий под ним, как говорит СойеркС в своем выступлении, заключается в написании :

my $name=’Фисташка’; print «В доме $name»;

не будет делать того, чего ты ожидаешь.Скорее Perl интерпретирует 2-ю строку как :

печать «В $name::s house»;

Обновленные модули и Прагматика

B::Deparse был обновлен с версии 1.40 до 1.48.

B::Краткий был обновлен с версии 0.999 до 1.003.

Архив::Tar был обновлен с версии 2.24 до 2.30, исправив уязвимость CVE-2018-12015: обход каталогов.

Charnames был обновлен с версии 1.44 до 1.45.

Devel::PPPort , модуль, который может включать функции более высоких версий Perl в более старые версии, был обновлен с версии 3.35 до 3.40

CPAN выпускает Storable и File::Spec с Cwd, наконец, были выпущены в CPAN в виде модулей, отдельных от ядра.

И, наконец, подписи подпрограмм, которые окружены неудачной историей, были снова изменены. Они были впервые введены в 5.20, были изменены в 5.22, а затем было обнаружено, что :lvalue отрицательно влияет на них.  Следовательно, в 5.28 они были изменены обратно на их форму 5.20.

В этом отношении функция совместимости, не описанная в Perl delta, но описанная в докладе SawyerX, — это скрипт post526fixsig, с помощью которого вы можете использовать любую версию сигнатур подпрограмм или обе, независимо от версии Perl, которую вы запускаете .

        post526sigfix -d —pmc lib/My/Module.pm >lib/My/Module.pmc

        Опции:        -u, —обновление       Обновите синтаксис 5.26 до синтаксиса 5.28-d, —понизьте синтаксис 5.28 до синтаксиса 5.26-i, —inplace Измените целевой файл(ы) на месте —pmc Сгенерируйте .pmc w/goto::файл для загрузки .pm на другой

                                    версии        Более подробная информация об этом на сайте http://www.trout.me.uk/perl/post526sigfix.txt 


Добавить комментарий