The OpenNET Project
 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ

13.04.2010 18:16  Вышел Perl 5.12.0

После двух лет разработки объявлено о выходе новой стабильной ветки языка программирования Perl 5.12. В рамках подготовки релиза было изменено около 750 тыс. строк кода, в разработке приняли участие более 200 разработчиков. В будущем новые релизы будут выходить по фиксированному графику: стабильный релиз - раз в год, корректирующие релизы - ежеквартально.

Из ключевых новшеств Perl 5.12.0 можно отметить: значительное улучшение поддержки Unicode; добавление экспериментального API для разработки дополнений, расширяющих синтаксис и набор ключевых слов языка; решение в функциях работы со временем проблемы 2038 года; поддержку возможности указания номеров версий модулей прямо в операторе "package"; включение по умолчанию вывода уведомлений при использовании устаревших возможностей языка.

Основные новшества Perl 5.12.0:

  • Нарушения совместимости:
    • Изменена Unicode интерпретация спецсимволов \w, \d, \s, и символьных классов POSIX (alpha, upper, word и т.п.). Например, строго соответствуя требованию POSIX, \d более не охватывает все цифры, а \w все буквы, описанные в unicode-стандарте.
    • В служебном массиве @INC, элементы ARCHLIB и PRIVLIB теперь следуют после определения версий site_perl и vendor_perl;
    • Аргументы условных операторов given/when теперь интерпретируется в логическом контексте, если между аргументами используются связки ".." или "//". Например, вместо "when (1..10)" теперь нужно писать "when ([1..10])";
    • Изменено поведение оператора "умного" сопоставления (smart match) "~~", который перестал быть коммутативным;
    • Метки, используемые в операторах goto, last, next или redo, теперь нельзя использовать в качестве ключевых слов (например, использоваться для именования функции);
    • Около 15 более мелких и узкоспециализированных нарушений совместимости;
  • Базовые изменения:
    • База Unicode-символов обновлена до версии 5.2, что позволяет корректно обрабатывать в perl любые Unicode символы;
    • В регулярных выражениях добавлена поддержка последовательности "\N", под которую подпадают все символы, кроме конца строки, независимо от присутствия или отсутствия "/s" ("/s" сводит выборку к одной первой строке);
    • Использование "use 5.11.0" автоматически включает режим "strict";
    • Поддержка параллельного выполнения регрессивных тестов, выполняемых на этапе сборки модулей (вместо "make test", можно запустить "TEST_JOBS=3 make test_harness");
    • Добавлен новый оператор "..." (Yada Yada), для определения кода который будет добавлен позднее;
    • Интегрирована поддержка системы динамической трассировки DTrace;
    • Функция "each" отныне может оперировать массивами;
    • Все функции и структуры связанные со временем защищены от проблемы 2038 года;
    • Переменная $ теперь тоже может быть переопределена через tie;
    • Вывод предупреждений (-W) теперь можно включить через определение в переменной окружения PERL5OPT;
    • "delete local" теперь можно использовать для удаления элементов хэшей;
    • Для платформы Linux добавлена поддержка абстрактного пространства имен сетевых сокетов (например, в качестве адреса может быть использован массив произвольных символов).
    • Из комплекта исключен suidperl;
    • Официально прекращена поддержка платформ Windows 95, 98, ME и NT4;
    • Использование конструкции "C<:=>" в качестве пустого списка атрибутов объявлено устаревшим.
    • Возможность перегрузки реализованных на языке Си операторов, например "qr//";
  • Изменения, связанные с модулями и "pragma":
    • Модули в базовой поставке разделены на две части: в директории dist/ теперь находятся модули, разработка которых ведется вместе с ядром языка Perl, а в директории cpan/ - модули развиваемые через CPAN;
    • Прагма autodie в качестве замены модулю Fatal;
    • Новые модули Compress::Raw::Bzip2 и Parse::CPAN::Meta;
    • Новые прагмы parent (устанавливает взаимосвязь между ISA и базовыми классами) и overloading (определяет включить или выключить возможность переопределения операторов);
    • Расширены возможности прагм overloading, attrs, charnames, feature, mro;
    • Модули расширений теперь могут перехватывать обработку функций Perl парсера для обработки новых видов задаваемых через ключевые слова выражений и реализации сложных операторов;
    • Добавлен Си API для использования в XS расширениях низкоуровневых частей лексического анализатора и pad-системы;
    • При использовании устаревших конструкций и возможностей языка отныне по умолчанию выводится предупреждение (чтобы избавиться от таких предупреждений нужно указать "no warnings 'deprecated';");
    • Обновлены версии модулей: Test-Simple 0.94, Storable 2.21, Pod-Simple 3.08, Parse-CPAN-Meta 1.40, ExtUtils-Manifest 1.57, ExtUtils-CBuilder 0.260301, CGI.pm 3.48, threads::shared 1.32, ExtUtils::ParseXS 2.21, File::Path 2.08, Module::CoreList 2.20, Object::Accessor 0.36.
  • Улучшения производительности:
    • Новый внутренний кэш для ускорения выполнения isa();
    • Линеризация для классов с единственным наследником выполняется на 40% быстрее;
    • Связанная с текущей локалью информация теперь кэшируется через специальный хэш;
    • Пустые DESTROY методы более не вызываются;
    • Увеличена скорость работы функции Perl_sv_utf8_upgrade();
    • Увеличена скорость выполнения оператора "keys" для пустых хэшей.


  1. Главная ссылка к новости (http://www.nntp.perl.org/group/perl.perl...)
  2. OpenNews: Проект по развитию компилятора для языка Perl
  3. OpenNews: Релиз Parrot 2.0.0, виртуальной машины для Perl 6
  4. OpenNews: Релиз Parrot 2.2.0, виртуальной машины для Perl 6
  5. OpenNews: Вышел Perl 5.11.3
Тип: Программы
Ключевые слова: perl, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
Обсуждение Линейный вид (Ajax) | Показать все | RSS
 
  • 1.1, sluge, 12:30, 14/04/2010 [ответить] [смотреть все]
  • +/
    нарушение совместимости это плохо :(
     
  • 1.2, Аноним, 13:02, 14/04/2010 [ответить] [смотреть все]
  • +1 +/
    Отличная новость Перл был и остаётся самым удобным языком, когда б ты к нему ни... весь текст скрыт [показать]
     
     
  • 2.3, sluge, 14:04, 14/04/2010 [^] [ответить] [смотреть все]  
  • –2 +/
    ну вот я обновился apt до новой версии, а все старые пакеты работать перестали... зашибись да?
     
     
  • 3.9, TS, 18:39, 14/04/2010 [^] [ответить] [смотреть все]  
  • –1 +/
    Это стандартное поведение любой мажорной версии перла - бинарные модули требуют пересборки, это нормально и логично.
    По идее апгрейд на 5.12 через apt вытянет также все измененные версии модулей, ну а если кто ручками модули дособирал - тут уже придется самому пересобрать.
    Да и вообще, в рабочей системе кошерно собрать 5.12 из сорцов и поставить вместе со старой версией, например в /usr/local/bin/perl (старый остается лежать в /usr/bin/perl) - в INSTALL это подробно расписано.
     
     
  • 4.12, sluge, 12:44, 15/04/2010 [^] [ответить] [смотреть все]  
  • –1 +/
    гыгы
    тока ты не учел что авторы тех перл программ которые уже есть в системе могли и не почесатся выпустить обновления. а зачем две версии держать?! я вот одну версию gcc держу и горя ненаю. а если бы под каждую версию gcc пришлось с проги переписывать-это кошерно?!
     
  • 1.11, RomaCh, 10:04, 15/04/2010 [ответить] [смотреть все]  
  • +/
    Если не осилил - так и скажи. Не надо поливать грязью то, чего не понимаешь. Я вот например не понимаю идиотских языков у которых отступ решает в каком блоке находится оператор. И не надо говорить что так аккуратней кодить люди начинают. Адекватный человек в любом языке отступы соблюдает, а неадекват - на любом напишет такой код что сам через месяц не поймёт. За-то подобный подход (блоки кода из отступов) порой очень сильно мешает оценить где заканчивается текущий блок. Например - закончился-ли он в конце текущей страницы, или дальше продожается? В отличии от perl'а например, у которого это будет очевидно исходя из наличия закрывающей скобки.
     
     
  • 2.13, sluge, 12:51, 15/04/2010 [^] [ответить] [смотреть все]  
  • +/
    совместимость то тут причем? :-D
     
  • 2.14, Большой любитель верблюдов., 15:39, 15/04/2010 [^] [ответить] [смотреть все]  
  • +1 +/
    >В отличии от perl'а например, у которого это будет очевидно исходя
    >из наличия закрывающей скобки.

    угу... после долгих и мучительных поисков этой скобки :)

     
     
  • 3.15, WinLin, 16:18, 15/04/2010 [^] [ответить] [смотреть все]  
  • +/
    1. В нормальных редакторах парные скобки подсвечиваются при выборе одной из скобок.
    2. perltidy -b file.pl

     
  • 3.16, tstr, 00:38, 16/04/2010 [^] [ответить] [смотреть все]  
  • +/
    >>В отличии от perl'а например, у которого это будет очевидно исходя
    >>из наличия закрывающей скобки.
    >
    >угу... после долгих и мучительных поисков этой скобки :)

    В виме стоя на скобке жмешь комбинацию клавишь
    [Shift] + [%]
    ..и все дела - парная скобка найдена.

     
     
  • 4.17, leon55, 01:48, 18/04/2010 [^] [ответить] [смотреть все]  
  • +/
    может человек в тотале работает или в easy editore. Имейте уважение - речь идёт о VIm.
     
  • 1.18, guest, 00:52, 24/04/2010 [ответить] [смотреть все]  
  • +/
    а скажите, что значит вот это:

    Изменена Unicode интерпретация спецсимволов \w, \d, \s, и символьных классов POSIX (alpha, upper, word и т.п.). Например, строго соответствуя требованию POSIX, \d более не охватывает все цифры, а \w все буквы, описанные в unicode-стандарте.


    что теперь означает \w, \d, \s ?

     

    Ваш комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:
     
    Навигация
     
     Новости для экспорта XML
     В социальных сетях:  twitter    
     Сводные | за день | мини-новости
     Разделы новостей
     Что нового на OpenNet
     Поиск в новостях
     Новые комментарии
     Добавить свою новость

    Важное
    - 27.08 Значительный выпуск десктоп-окружения Lumina, развиваемого для FreeBSD и PC-BSD (63 +13)
    - 20.08 Qt переходит на лицензию LGPLv3 вместо GPLv3, что позволит заимствовать код Qt в KDE (12 +25)
    - 13.08 BGP достиг рубежа в 512 тысяч маршрутов, что может привести к проблемам в интернете (204 +24)

    Советы
    - 17.08 Простой способ существенно увеличить производительность открытого драйвера RadeonSI
    - 02.06 Увеличение числа вкладок, вмещающихся в строке Firefox
    - 01.06 Как в mpd5 присвоить определенный номер для ng интерфейса
    - 09.04 Блокирование попыток эксплуатации heartbeat-уязвимости в OpenSSL средствами iptables
    - 04.04 Создание чистого openvz-контейнера на основе CentOS 6

    Обсуждаемые новости
    - 01:56 Выпуск дистрибутива Deepin 2014.1, с собственным рабочим сто (8)
    - 01:51 Проект Mozilla объявил о возможной утечке 97 тысяч аккаунтов (7)
    - 01:50 Первый выпуск Jailhouse, развиваемого компанией Siemens гипе (5)
    - 01:48 В ночных сборках Firefox добавлена стартовая страница с рекл (65)
    - 01:45 Журнал Linux Format вышел в формате для чтения на iPhone и i (14)
    - 01:42 В MESA сменился ответственный за подготовку стабильных верси (6)
    - 01:28 Переустановка Ubuntu с использование инсталлятора может прив (63)
    - 01:26 Релиз языка программирования PHP 5.6.0 (57)


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