Вчера, 23 мая, вышла версия Perl 5.30.0. Новость была объявлено в группе Usenet perl.perl5.porters одного из ключевых разработчиков Perl — Sawyer X. По сравнению с предыдущим стабильным релизом 5.28.0, вышедшим около 11 месяцев назад, было изменено около 620 000 строк кода, изменения затронули 1300 файлов, в разработке участвовало 58 авторов.
Изменения самого исходного кода (только файлы .
pm, .
t, .
c и .
h) оцениваются примерно в 510 000 строк и 750 файлов.
Открыта разработка очередной ветки 5.31. Следующий стабильный выпуск запланирован на май 2020 года.
Ключевые изменения:
- Функции Perl API C sv_utf8_downgrade и sv_utf8_decode больше не считаются экспериментальными.
- Реализована экспериментальная поддержка выражений просмотра назад переменной длины, таких как «(?<=foo?)" and "(?
- Максимальное значение спецификатора размера ("n") в блоках регулярных выражений "{m,n}" увеличено с 32767 до 65534.
- Поддержка Юникод 12.1.
- Добавлена ограниченная поддержка подстановочных знаков в спецификациях значений свойств Unicode (не знаю, как правильно перевести).
Например, выражение «qr! \p{nv= /(Эx) \A [0-5] \z / }!» позволяет выбрать все символы Юникода, определяющие числа от 0 до 5, включая тайское или бенгальское написание чисел.
- Реализована поддержка qr'\N{name}' (именные символы внутри регулярных выражений, разделенные одинарными кавычками; ранее такое регулярное выражение приводило к ошибке).
- Теперь можно скомпилировать Perl, используя только потокобезопасные операции локали (-Accflags='-DUSE_THREAD_SAFE_LOCALE').
- Комбинация флагов «-Dv» (расширенный вывод отладки) и «-Dr» (отладка регулярных выражений) теперь приводит к включению всех возможных режимов отладки регулярных выражений.
- В функцию package() добавлена защита от возврата неверных последовательностей Юникода.
- Присвоение ненулевого значения специальной переменной $[ (индекс первого элемента массива) теперь приводит к фатальной ошибке.
- Единственными символами, которые можно использовать в качестве разделителей строк и подстановочных знаков, теперь являются графемы .
(составные символы Юникода не допускаются).
- Некоторые ранее нерекомендовавшиеся варианты использования неэкранированной левой скобки "{" в шаблонах регулярных выражений теперь запрещены.
- Вызов sysread(), syswrite(), send() или Recv() во время обработки дескриптора :utf8 теперь является фатальной ошибкой.
- Запрещается использовать «my» в тождественно ложных условных операторах (например, «my $x if 0»).
- Удалена поддержка специальной переменной.
$* (многострочный поиск).
Допустимые альтернативы: «/s» и «/m».
- Удалена поддержка специальной переменной.
$# (вывод форматированного числа).
- Имя функции dump() теперь должно быть указано явно (CORE::dump).
- Функция File::Glob::glob была удалена (вам следует использовать File::Glob::bsd_glob).
- Планировалось прекратить поддержку использования макросов, выполняющих операции с UTF-8 в XS-коде (блоках C), но затем было решено отложить это до версии 5.32.
- Перевести UTF-8 в кодовые точки (не знаю как перевести) теперь реализован как конечный автомат, что также приводит к увеличению производительности — например, ord("\x7fff") теперь требует на 12% меньше инструкций.
Проверка правильности последовательностей символов UTF-8 также реализована как конечный автомат и выполняется быстрее.
- Рекурсивные вызовы были удалены из Finalize_op().
- Сделаны незначительные оптимизации кода для свертывания одинаковых символов и определения классов символов в регулярных выражениях.
- Оптимизировано преобразование определений знакового типа в беззнаковый (IV в UV).
- Алгоритм преобразования целых чисел в строку был ускорен за счет обработки сразу двух цифр вместо одной.
- Улучшения внесены по результатам анализа LGTM.
- Оптимизирован код в файлах regcomp.c, regcomp.h и regexec.c.
- Сопоставление регулярных выражений, таких как "qr/[^a]/", происходит значительно быстрее в случаях, когда "a" является символом ASCII (случаи, отличные от ASCII "a", также могут показывать повышение производительности, но при определенных условиях).
-
Как Работает Hft: 3 Простых Объяснения
19 Oct, 24 -
Hdr-Видео С Использованием Двух 5D Mark Ii
19 Oct, 24 -
Вся Боль P2P-Разработки
19 Oct, 24 -
Itsrach.ru – Не Держите Это В Себе!
19 Oct, 24 -
Массовые Перестановки В Российском Ит
19 Oct, 24 -
Обращение К Тем, Кто Пиратит Игры В России
19 Oct, 24