The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

15.05.2011 09:20  Релиз 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 в модуле 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::PP, 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 и т.д.


  1. Главная ссылка к новости (http://news.perlfoundation.org...)
  2. OpenNews: Корректирующий релиз Perl 5.12.3
  3. OpenNews: Релиз Parrot 3.0.0, виртуальной машины для Perl 6
  4. OpenNews: Увидел свет Rakudo Star, первый готовый к использованию дистрибутив Perl 6
  5. OpenNews: Вышел Perl 5.12.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: perl
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, szh, 11:36, 15/05/2011 [ответить] [смотреть все]
  • +1 +/
    # Uses less memory and CPU than previous releases

    было бы интереснее узнать подробнее.

     
     
  • 2.21, szh, 21:52, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    http search cpan org dist perl-5 14 0-RC1 pod perldelta pod Performance_Enhanc... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.25, anonymous, 07:21, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    ага только ты про ограничения почитай ещё, а не только там, где про скорость пи... весь текст скрыт [показать]
     
     
  • 4.33, szh, 15:22, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    в irregexp этих ограничений насколько я понимаяю нет В хроме regexp быстрее в 1... весь текст скрыт [показать]
     
     
  • 5.37, Аноним, 21:32, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Ты почитай сначала, а то твоему пониманию грошь цена У Яндекса есть pire, кот... весь текст скрыт [показать]
     
     
  • 6.41, szh, 13:37, 17/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Ты путаешь Irregexp c RE2, так что иди почитай сначала Мои сложные regexp ы в j... весь текст скрыт [показать]
     
  • 1.8, Kai, 13:49, 15/05/2011 [ответить] [смотреть все]  
  • +/
    Подскажите, есть ли простой способ бороться с кодировкой в скрипте который должен работать и в linux и в windows? А то есть проблемы с кодировкой путей к файлам.  В Linux они в utf8 в винде в cp1251. Есть что нибудь простое решение на эту тему?
     
     
  • 2.10, Vitold S, 14:08, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    Самый простой способ написать свой декоратор для классав Я в Perl уже давно не ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Я не забыл заполнить поле Имя, 21:20, 15/05/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Тонкий вброс питониста Декораторы классов в perl ... весь текст скрыт [показать]
     
     
  • 4.42, Аноним, 13:39, 17/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Простите, штоу http perldesignpatterns com DecoratorPattern А если вы про де... весь текст скрыт [показать]
     
     
  • 5.43, Я не забыл заполнить поле Имя, 21:52, 18/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Базару нет Ты умнее меня Только второе не является декоратором классов, хоть... весь текст скрыт [показать]
     
  • 2.15, angra, 17:59, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Любопытно было бы глянуть на пример проблемного кода У меня все работает без до... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, Kai, 00:14, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Проблема начинается когда под виндой хранишь пути к файлам в UTF8 хранилище Их ... весь текст скрыт [показать]
     
     
  • 4.27, letsmac, 08:46, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    А использовать прямо unicode-версии API-функций не выходит Запросто винда може... весь текст скрыт [показать]
     
     
  • 5.35, Kai, 17:33, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Это как? Вместо родного readdir юзать что-то из Windows32:: ?
     
  • 2.19, Аноним, 21:39, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Ршения нет, так как такой проблемы не существует.
     
     
  • 3.24, Kai, 00:14, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    > Ршения нет, так как такой проблемы не существует.

    У меня существует.

     
  • 2.29, petr999, 12:29, 16/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Есть жизнь на Марс WMs-windows, но только в скафандре марки cygwin Там вам и ... весь текст скрыт [показать] [показать ветку]
     
  • 2.31, fi, 13:51, 16/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это не совсем правда, там utf-16 для ntfs и cp866 для старого fat ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.34, brother anon, 16:50, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Не путай кодировку в которой хранятся имена в ФС и кодировку в которой предостав... весь текст скрыт [показать]
     
  • 1.9, Vitold S, 14:05, 15/05/2011 [ответить] [смотреть все]  
  • –8 +/
    Опять буджт конфликт в FreeBSD Постоянно будут пакеты требовать Perl 5 14 Скор... весь текст скрыт [показать]
     
     
  • 2.12, kibab, 16:51, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Задать PERL_VERSION в make.conf, не?
     
  • 2.17, Аноним, 21:39, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    FreeBSD - единственная система, где это по-человечески решено Во-первых, в make... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.26, fsck, 08:22, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    В Gentoo проще, make.conf трогать не нужно.
     
     
  • 4.36, Клыкастый, 17:48, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    в FreeBSD тоже Есть портапгрейд Но попутно - а что make conf так сложно устрое... весь текст скрыт [показать]
     
  • 4.38, Аноним, 21:35, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Зато нужен какой-нибудь eselect, что то же самое ... весь текст скрыт [показать]
     
  • 2.30, Papa, 12:50, 16/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Толсто
     
  • 1.14, vadiml, 17:59, 15/05/2011 [ответить] [смотреть все]  
  • +/
    Похоже наконец-таки довели до ума работу с utf8 -- такое поведение надо было реализовывать изначально.
     
     
  • 2.18, szh, 21:39, 15/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    ага, не сразу я узнал что вот это y A-Z 196 228 203 235 214 246 ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.20, Аноним, 21:41, 15/05/2011 [^] [ответить] [смотреть все]  
  • +/
    > работает не так, как я думал.

    .../a же.

     
     
  • 4.22, szh, 22:27, 15/05/2011 [^] [ответить] [смотреть все]  
  • +/
    y/../../a  ???  perl 5.10: Execution of aborted due to compilation errors.
     
     
  • 5.39, Аноним, 21:35, 16/05/2011 [^] [ответить] [смотреть все]  
  • +/
    Заголовок новости читал ... весь текст скрыт [показать]
     
  • 1.28, KOL, 10:06, 16/05/2011 [ответить] [смотреть все]  
  • +/
    >В экспериментальном режиме все оперирующие с массивами и хэшами функции теперь поддерживают указание ссылки на переменную

    Не знаю, хорошо это или плохо. Вроде бы удобнее и быстрее писать, но потом пойди разберись где у тебя ссылки, а где скаляры.

     
     
  • 2.32, 21343431, 14:05, 16/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это же пока для стандартных функций, вы же и так знаете, что они принимают в качестве параметров, так что тут ничего страшного.
     
  • 2.40, Аноним, 21:41, 16/05/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Зачем разбираться Ни одна из функций push pop shift each keys , которые это ... весь текст скрыт [показать] [показать ветку]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor TopList