Релиз Perl 5.14

После года разработки представлена новая стабильная ветка языка программирования — Perl 5.14. Одновременно объявлено о прекращении поддержки ветки Perl 5.10. В рамках подготовки релиза 5.14 было изменено около 550 тыс. строк кода, в разработке приняли участие 150 разработчиков. Ветка 5.14 выпущена в соответствии с принятым в прошлом году новым фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов — раз в три месяца.

Ключевые улучшения, добавленные в Perl 5.14:

  • Поддержка Unicode 6.0 и реализация значительной порции общих улучшений, связанных с поддержкой Unicode. Например, полностью обеспечена поддержка режима «use feature ‘unicode_strings’» при котором все строковые операции и регулярные выражения выполняются с использованием Unicode-семантики. Добавлена категория предупреждений «utf8», позволяющая отключить вывод только предупреждений, связанных с проблемами оформления строк utf-8;
  • Улучшена поддержка IPv6;
  • Значительно упрощен процесс выполнения автоконфигурации CPAN-клиента;
  • Новый синтаксис для определения модулей «package Foo { }» или «package номер_версии Foo { }», при котором с модулем ассоциируется только блок кода внутри фигурных скобок (ранее можно было использовать не совсем очевидную конструкцию «{ package Foo; … }»);
  • Регулярные выражения:
    • В регулярных выражениях добавлена поддержка флага «/r», при котором операции замены «s///» и трансляции «y///» осуществляются без изменения содержимого рабочей переменной — действие выполняется над копией данных, после чего отдельно возвращается результат. Например, после выполнения «$new = $old =~ s/cat/dog/r;» будет перезаписано только содержимое переменной $new, а переменная $old сохранит прежнее значение;
    • Реализован набор флагов (/d, /l, /u, /a), указывающих на то, как следует интерпретировать участвующие в регулярных выражениях строки — в виде последовательности ASCII или Unicode: «/l» — компилирует регулярное выражение как если бы было указано «use locale», ‘/u’ — как если бы использовалась прагма «unicode_strings», «/d» — включает режим по умолчанию, независимо от ранее используемых настроек, «/a» — привязка к ACSII;
    • Использование внутри регулярного выражения блока «(?^…)» (когда символ «^» указан за «(?»), теперь приводит к использованию для данного блока модификаторов по умолчанию, т.е. если регулярное выражение вызвано с модификатором «/i» (отключение учета регистра символов), то для указанного бока он применяться не будет;
    • Движок выполнения регулярных выражений теперь реентерабелен, т.е. можно без опасения выполнять новые регулярные выражения внутри блоков «(?{…})» и «(??{…})» в другом регулярном выражении;
  • В экспериментальном режиме все оперирующие с массивами и хэшами функции теперь поддерживают указание ссылки на переменную, т.е. если раньше для заданного через ссылку хэша нужно было указывать «keys %$hash_ref», то теперь можно использовать «keys $hash_ref». Отдельно отмечено, что в будущих версиях подобное поведение может быть изменено;
  • Проведена работа по уменьшению потребления памяти и уменьшению нагрузки на CPU в процессе работы.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.