Написать пост

Состоялся релиз языка программирования Perl 5.28

Аватар Наташа Маркова

Среди ключевых изменений — поддержка Unicode 10.0, новые методы хеширования ключей и обновление модулей в базовой поставке.

Спустя 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 назвали язык непопулярным из-за неуверенности программистов в его будущем развитии.

Следите за новыми постами
Следите за новыми постами по любимым темам
923 открытий923 показов