Состоялся релиз языка программирования Perl 5.28
Новости
Среди ключевых изменений — поддержка Unicode 10.0, новые методы хеширования ключей и обновление модулей в базовой поставке.
924 открытий928 показов
Спустя 13 месяцев разработки вышла стабильная ветка языка программирования Perl 5.28. Для создания нового выпуска разработчики изменили около 730 тысяч строк кода в 2200 файлах.
Ключевые изменения
- Поддержка Unicode 10.0.
- Дополнительные bitwise-операторы для побитовой работы со строками
&. |. ^. ~.
и числами& | ^ ~
утратили экспериментальный статус. Поскольку новые числовые операторы явно привязываются к контексту, они доступны только при указании флагаuse feature bitwise
илиuse v5.28
, а также при запуске интерпретатора с опцией-E
. - В режиме редактирования файлов
perl -i
результат записывается в новый файл, который заменяет исходный только после успешного завершения записи. Ранее перед сохранением входной файл переименовывался или удалялся, что иногда приводило к потере данных. - Экспериментальные средства в регулярных выражениях помогают находить смешивания классов Unicode-символов в строке. Чтобы ограничить области значений одним типом символов, можно использовать выражения вида
qr/(*script_run: \d+ \b )/x
илиqr/(*sr: \b \w+ \b )/x
. - Постоянные лексические массивы и хеши можно инициализировать с помощью выражения
state @a = qw(x y z)
. - По умолчанию используется метод хеширования SBOX для ключей до 24 символов, для остальных — метод StadtX в 64-разрядных сборках и Zaphod32 в 32-разрядных. В общем виде предлагается четыре базовые реализации хешей: Siphash 2-4, Siphash 1-3, Zaphod32 и StadtX, а также SBOX32 для коротких строк.
- Выражения с несколькими операциями соединения строк, операции
sprintf
, циклыfor()
, шаблоны регулярных выражений со свойствами с Unicode-символами\p{...}
и блоки require для уже ранее загруженных модулей выполняются быстрее. - Повышена эффективность работы функций
ref()
в булевом иkeys()
в скалярном контекстах, добавлены специальные оптимизации для операций сравнения результатаindex()
с-1
, снижены накладные расходы при выполнении модуляFile::Glob
, ускорено выполнение блоковrequire
для ранее загруженных модулей, оптимизирован код разбора регулярных выражений и обработки строк UTF-8. - Обновлены версии модулей в базовой поставке.
Предыдущие версии и будущее
Поддержка версии Perl 5.24 прекращена, и теперь разработчики взялись за экспериментальную ветку 5.29, которая поможет выпустить стабильный релиз Perl 5.30 в 2019 году.
В апреле 2018 года составители рейтинга TIOBE назвали язык непопулярным из-за неуверенности программистов в его будущем развитии.
924 открытий928 показов