Релиз Perl 5.14


Рубрика: Новости Linux
Метки:
Просмотров: 2254

После года разработки представлена 0 новая стабильная ветка языка программирования - 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 в модуле Socket, включая добавление поддержки IPv6 в функции Socket::getaddrinfo() и Socket::getnameinfo();

Значительно упрощен процесс выполнения автоконфигурации CPAN-клиента (уменьшено число требующих ручных операций диалогов, добавлена поддержка META/MYMETA.json и local::lib, возможность автоматического выбора зеркал);

Новый синтаксис для определения модулей "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" (для массивов вместо "push @$arrayref, @stuff" можно указывать "push $arrayref, @stuff"). Отдельно отмечено, что в будущих версиях подобное поведение может быть изменено;

Возможность переопределения функций tie, tied и untie;

Проведена работа по уменьшению потребления памяти и уменьшению нагрузки на CPU в процессе работы. Например, увеличена скорость работы функций shift() и pop(), при их вызове без аргументов (shift() теперь на 5% быстрее, чем shift @_ в однопоточном режиме и на 25% в многопоточном). В движке регулярных выражений увеличена производительность операций сравнения строк и компиляции регулярных выражений. При интенсивном выполнении операций добавления одной строки в конец другой, изменен метод выделения памяти, что например, позволило на платформе Win32 увеличить скорость выполнения данных операций в 100 раз. Увеличена скорость выполнения прямых присвоений значений массивам и хэшам (my @array = ... и my %hash = ...). Уменьшено потребление памяти для автоматически генерируемой для всех функций переменной "@_";

В базовую поставку добавлены новые модули: CPAN::Meta::YAML, CPAN::Meta, HTTP::Tiny (простой HTTP-клиент), JSON:raspberryP, Module::Metadata, Perl::OSType;

Обновлены версии модулей: Archive::Extract 0.48, Archive::Tar 1.76, Attribute::Handlers 0.89, B 1.29, Benchmark 1.12, Carp 1.20, CGI 3.52, Compress::Raw::Bzip2 2.033, DB_File 1.821, DBM_Filter 0.04, Digest::MD5 2.51, Digest::SHA 5.61, DynaLoader 1.13, Encode 2.42, File::Copy 2.21, File::Basename 2.82, File::CheckTree 4.41, File::Fetch 0.32, File::Find 1.19, GDBM_File 1.14, MIME::Base64 3.13, POSIX 1.24, Socket 1.94, Storable 2.27 и т.д.


  • Комментариев: 0

  • Вконтакте

  • Facebook:

    Оставьте комментарий!

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

    Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

    Имя и сайт используются только при регистрации

    Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

    Авторизация 

    MaxSiteAuth.

    (обязательно)