The OpenNET Project / Index page

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

Вышел релиз Perl 5.11.0

04.10.2009 19:36

После двух лет разработки объявлено о выходе первого релиза в новой экспериментальной ветке Perl 5.11, в рамках которой начата подготовка к стабильной серии Perl 5.12. В анонсе новой версии подчеркивается важность проверки работоспособности кода в экспериментальной ветке. Несмотря на то, что разработчики прилагают огромные усилия к полному обеспечению совместимости, большие изменение в коде при создании новой ветки могут привести к незапланированным нарушениям совместимости. Если такие несовместимости будут найдены после выпуска стабильного выпуска 5.12, то отменить их будет уже невозможно, именно поэтому важно протестировать существующий код, выявить и сообщить о всех аномалиях еще на стадии разработки экспериментальной ветки.

Ветка 5.11 будет развиваться в рамках измененного процесса подготовки релизов - новый выпуск отныне будет выходить раз в месяц, при этом каждый из таких выпусков будет подготовлен разным релиз-инженером: 5.11.1 выйдет 20 октября под контролем Jesse Vincent, 5.11.2 - 20 ноября под контролем Yves Orton, 5.11.3 - 20 декабря под контролем Leon Brocard, 5.11.4 - 20 января под контролем Ricardo Signes. В рамках перехода с системы управления версиями Perforce на Git, разработка Perl 5.11 ведется только в Git репозитории.

Из новшеств Perl 5.11 можно отметить:

  • Нарушения совместимости:
    • Изменена 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.1;
    • В регулярных выражениях добавлена поддержка последовательности "\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 добавлена поддержка абстрактного пространства имен сетевых сокетов (например, в качестве адреса может быть использован массив произвольных символов).
  • Изменения, связанные с модулями и "pragma":
    • Модули в базовой поставке разделены на две части: в директории dist/ теперь находятся модули, разработка которых ведется вместе с ядром языка Perl, а в директории cpan/ - модули развиваемые через CPAN;
    • Прагма autodie в качестве замены модулю Fatal;
    • Новые модули Compress::Raw::Bzip2 и Parse::CPAN::Meta;
    • Новые прагмы parent (устанавливает взаимосвязь между ISA и базовыми классами) и overloading (определяет включить или выключить возможность переопределения операторов);
    • Расширены возможности прагм overloading, attrs, charnames, feature, mro;
  • Улучшения производительности:
    • Новый внутренний кэш для ускорения выполнения isa();
    • Линеризация для классов с единственным наследником выполняется на 40% быстрее;
    • Связанная с текущей локалью информация теперь кэшируется через специальных хэш;
    • Пустые DESTROY методы более не вызываются;
    • Увеличена скорость работы функции Perl_sv_utf8_upgrade();
    • Увеличена скорость выполнения оператора "keys" для пустых хэшей.


  1. Главная ссылка к новости (http://www.nntp.perl.org/group...)
  2. OpenNews: Доступен релиз Perl 5.10.1
  3. OpenNews: Perl 6 планируется выпустить в апреле следующего года
  4. OpenNews: Выпуск Parrot 1.0, виртуальной машины для Perl 6
  5. OpenNews: Выпуск Perl 5.8.9
  6. OpenNews: Разработка языка Perl 5 переведена на систему управления исходными текстами Git
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/23718-perl
Ключевые слова: perl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:02, 05/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Несмотря на то, что разработчики прилагают огромные усилия к полному обеспечению совместимости

    ЗАЧЕМ? Гномеры вот тоже прилагали усилия к совместимости, и что получили? А получили они то, что всё равно наступает такой момент, когда всех напрягает эта "поддержка" так сильно, что в конце концов всё переделывается.

     
     
  • 2.2, Skylord (??), 00:38, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, поддерживаю. Почему-то наличие в системе нескольких версий gcc и необходимость зачастую для компиляции разного кода использовать разные версии - никого особо не напрягает. А вот в Перле все парятся... В чем проблема-то? В заголовке скрипта объявлена версия, которую он пользует. Если не объявлена - пусть считается, по умолчанию, скажем 5.8 (ну или вообще любая, младше той, в которой появились первые несовместимости). И усе - вперед и с песней!
    Перл - отличный язык. Сколько тестирований проводят - по потреблению памяти и скорости рвет всякие Питоны, Руби и т.п. как тузик грелки. Единственные к нему от всех претензии - маленькая скорость инноваций, консервативность и одновременно - сложный и неоднозначный синтаксис. Хрен с ним с синтаксисом - уже все привыкли. А вот разработку могли бы и поактивнее вести...
     
     
  • 3.3, ixrws (ok), 08:15, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Работа над perl6 вполне активно сейчас ведётся. А что до пятой ветки, то жаль только одного - разработчики perl5 и perl6 не работают вместе. Давно пора уже заняться ответвлением perl5 для parrot, чтобы обеспечить совместимость и преемственность кода perl5->perl6, но это совсем другая песня и не совсем очевидно будет ли это хорошо или плохо.
     
  • 3.5, uldus (ok), 08:57, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >В заголовке скрипта объявлена версия, которую он пользует. Если не объявлена -
    >пусть считается, по умолчанию, скажем 5.8

    "use версия" отключает фичи, но никак не влияет на регрессии из-за переделки кода. Прикажите для каждого скрипта свою отдельную версию Perl держать ? Хорошая совместимость между версиями одна из ключевых сильных сторон Perl-а. А инновации не так существенны, мне например, кроме юникода и нитей, вполне хватает возможностей 5.005, главное чтобы стабильно и предсказуемо все работало.

     
     
  • 4.6, Аноним (-), 09:31, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А инновации не так существенны, мне например, кроме юникода и нитей

    Как вы себе красиво противоречите =)

     
  • 3.20, Warhead Wardick (?), 18:34, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А вот в Перле все парятся...

    Skylord - кроссавчег! Сделайте как он предложил! Лучше рецепта как перл похоронить - НЕТ! :)

     
  • 2.4, ixrws (ok), 08:18, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Несмотря на то, что разработчики прилагают огромные усилия к полному обеспечению совместимости
    >
    >ЗАЧЕМ? Гномеры вот тоже прилагали усилия к совместимости, и что получили? А
    >получили они то, что всё равно наступает такой момент, когда всех
    >напрягает эта "поддержка" так сильно, что в конце концов всё переделывается.
    >

    При правильной архитектуре, все уровни совместимости отгораживаются и выносятся за рамки основной части, таким образом в худшем случае будет падение производительности тех частей кода, которые используют устаревшие возможности, что не критично. А сильно напрягает поддержка только тогда, когда она делается в основном потоке разработки без рефакторинга кода, когда архитектура не меняется, даже если назрела необходимость. Но это уже низкая квалификация разработчиков и аппатия виноваты.


     

  • 1.8, Thorn (??), 13:11, 05/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Перл рулез! Хорошо, что не забрасывают пятую ветку - вполне себе хороша для немалого класса приложений.
    Ещё бы они CPAN почистили... а то надоело на каждый чих три разных модуля иметь. :(  (примеры: MySQL, SSL, XML - везде свалка полунедомодулей сомнительной свежести)
     
  • 1.9, upyx (ok), 14:31, 05/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Несмотря на то, что разработчики прилагают огромные усилия к полному >обеспечению совместимости
    >Из новшеств Perl 5.11 можно отметить:
    >    * Нарушения совместимости:

    Если есть хоть одна несовместимость, есть шанс, что код "не пойдет", а значит придется его или переписывать, или пользовать старую версию. И тут возникает вопрос: Если все равно совместимость частично нарушена, то на кой ляд прилагать "огромные усилия"?
    Мне однажды пришлось запускать две вебморды управления на одном сервере (для разных тулзов есесно), причем одна работала только на РНР5, а другая (нормально) только на РНР4. Да, сначала расстроится, что нет совместимости, пытался как-то подправить, подладить код РНР4 под РНР5. А потом, о чудо, совершенно неожиданно буквально из ниоткуда среди суеты, отчаяния и усталости, на меня снизошло озарение, и я поставил две версии РНР! Потом долго отходил от осознания собственной глупости, что не сделал этого сразу.
    Итого: в топку совместимость, даешь функционал!

     
     
  • 2.10, Thorn (??), 15:11, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Если все равно совместимость частично нарушена, то на кой ляд прилагать "огромные усилия"?

    Возможно, "огромные усилия" - всего лишь для красного словца. :) Да и НЕ сохранять совместимость (на фоне грядущего Перл-6) как бы глупо. Совместимость нужна, потому как Перл настолько "хаканУтый" язык, что половина кода опирается на его неочевидные эффекты. Я думаю, разработчики тоже не настолько глупы, чтобы ломать что-то фундаментальное, а кто ставит новую версию, тот уж наверное проверит свои скрипты на совместимость.

     
     
  • 3.17, аноним (?), 18:08, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Там все очевидно, и подробно документировано. Хотя, по-моему, сейчас стало модно хвалиться, что неосилил перл.
     

  • 1.11, croster (ok), 15:21, 05/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А 6-ой Perl когда обещают? Есть там какой-нибудь прогресс?
     
     
     
    Часть нити удалена модератором

  • 3.13, dimid (??), 16:26, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Весной 2010 года: http://perl6.ru/rakudo-release-date/
     

  • 1.14, Voviandr (ok), 16:48, 05/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    интересно, планируется ли в будущих версиях Perl возможность программирования в функциональном стиле. только не надо в ответ возмущённо спрашивать "зачем".
     
     
  • 2.16, ixrws (ok), 17:12, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы это было более-менее ориентированно на практику, нужно будет перенять опыт того же haskell. Что сделает язык ещё тяжелее для понимания. Но если пойти "своим" путём, то следуя заветам перла надо будет оценить практическую надобность этого, то есть ответить на всё тот же вопрос "зачем", ведь б'ольшая часть новых возможностей того же perl6 очень удобна на практике. А вот будет ли удобен перегруженный язык, удовлетворяющий разным концепция программирования - это большой вопрос. Итак уже можно решать оду и ту же проблему разными способами в перле, чистая функциональщина добавит соли не только непосредственно в код разработчиков, но неизбежно в код модулей, используемых другими разработчиками. А потом всё это смешивать, хм, сомнительная перспектива.
     
  • 2.18, аноним (?), 18:10, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >интересно, планируется ли в будущих версиях Perl возможность программирования в функциональном стиле.

    И что же вам мешает сейчас программировать на perl в функциональном стиле?

     

  • 1.23, Аноним (-), 18:00, 06/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Изменена Unicode интерпретация спецсимволов \w, \d, \s, и символьных классов POSIX (alpha, upper, word и т.п.). Например, строго соответствуя требованию POSIX, \d более не охватывает все цифры, а \w все буквы, описанные в unicode-стандарте.

    не понял, \w теперь для кириллицы не работает что ли ?

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру