Постфиксное разыменование больше не экспериментальное

Темы:

Принят патч, который убирает статус экспериментальной у возможности постфиксного разыменования. Напомним, что постфиксное разыменование впервые появилось в Perl 5.20 и позволяет использовать новый синтаксис для разыменования:

$array_ref->@*; # вместо @{ $array_ref }
$hash_ref->%*;  # вместо %{ $hash_ref }
...

С выходом Perl 5.24, больше не потребуется использовать конструкцию

no warnings "experimental::postderef";

чтобы подавлять предупреждение, это выражение станет пустой операцией. Для активирования возможности можно по-прежнему использовать выражение

use feature "postderef", "postderef_qq";

или просто

use v5.24;

Комментарии

 

Выпущен Perl 5.23.0

Темы:

20 июня выпущен первый релиз Perl новой ветки для разработчиков 5.23. Данный выпуск состоялся спустя три недели после релиза 5.22.0 и содержит изменения в 86 000 строках исходного кода.

Основные изменения:

  • Поддержка стандарта Юникод 8.0.
  • Класс символов /\C/ в регулярных выражениях больше не поддерживается.
  • chdir('') или chdir(undef) больше не меняет текущий каталог на домашний каталог и приводит к фатальной ошибке. Используйте просто chdir().
  • Макрос PadlistNAMES теперь снова lvalue (решена одна из проблем для работы модуля Coro).
  • Обновлены некоторые базовые модули, в том числе POSIX, с экспериментальной поддержкой NaN payload API (из последнего черновика стандарта ISO C API).

Комментарии

 

Марк Леманн создал форк Perl: «stableperl»

Темы:

Марк Леманн, также известный как schmorp, создатель библиотеки libev, AnyEvent и Coro, объявил о создании форка Perl под названием «stableperl».

Как известно, Марк постоянно конфликтовал с разработчиками Perl5 из-за регулярных нарушений обратной совместимости в новых релизах, а релиз Perl 5.22.0, который привёл к неработоспособности Coro, очевидно, стал последней каплей.

Комментарии

Дальше →  

Выпущен Strawberry Perl 5.22.0.1

Темы:

Выпущен релиз дистрибутива новой мажорной версии Perl для Windows Strawberry Perl 5.22.0.1.

Доступны msi-пакеты для установки: 32-битной и 64-битной версии.

Портабельные версии: 32-битная, 64-битная.

Новые версии содержат последнюю стабильную версию Perl 5.22.0. Кроме того, был обновлен обновлён тулчейн gcc 4.9.2 и mingw-w64 v4.0.2. Полная информация о релизах соотвественно 32 и 64.

К сожалению, msi-пакеты не подписаны, поэтому проверяйте sha1 отпечаток.

На данный момент известно о нескольких проблемах в релизах: сломан модуль IPC::Run, а в 64-битной сборке отсутствует Math::Pari вместе со всеми зависимостями.

Комментарии

 

Выпущен Perl 5.22.0

Темы:

1 июня 2015 года была выпущена новая стабильная версия языка программирования Perl 5.22.0. Разработка велась примерно 12 месяцев, начиная с Perl 5.20.0, и содержит примерно 590 000 изменённых строк среди 2400 файлов от 94 авторов.

Комментарии

Дальше →  

Выпущен Perl 5.22.0 RC2

Темы:

Вышел второй релиз кандидат новой стабильной версии Perl 5.22.0. Просмотреть информацию о релизе и загрузить новую версию можно с любого зеркала CPAN или найти ссылки на странице.

Оличия от RC1 заключаются лишь в нескольких правках в perldelta, исправлении бага с NAN_COMPARE_BROKEN для VC6 и сборки с отладочной информацией для платформы VMS, а также поддержке mkstemp() на mingw-w64-v4 (что в теории должно решить проблему со сборкой новой версии Strawberry Perl).

Если не будет найдено серьёзных проблем, то официальный релиз новой стабильной версии Perl состоится 1 июня.

Комментарии

 

Полезные трюки с микрооптимизацией

Темы:

В рассылке perl5-porters был задан вопрос, почему две операции сильно отличаются по скорости (в пользу do):

do { ; }
{ ; }

Zefram указал на то, что пустой блок рассматривается как цикл, который выполняется один раз, и для него формируется фрейм-контекст с поддержкой динамических операций вроде next. В то время как для do устанавливается только область видимости, что гораздо быстрее.

Кроме этого было замечено, что операция ; это отдельная операция, которая устанавливает номер строки. В противовес этому , не имеет подобного оверхеда. Например:

$x = 1; $y = 2; print "$x $y";
$x = 1, $y = 2, print "$x $y";

Оба выражения выполняют одно и то же, но вторая запись будет работать быстрее.

Эта информация сразу вдохновила Питера Рэбиттсона использовать этот простой трюк на практике. Он продемонстрировал коммит, который на 15% увеличивает производительность DBIx::Class просто заменив все ; на , в генерируемом коде для строкового eval. Этот прирост становится заметен на резалтсетах с ≥1000 рядов.

Комментарии

 

Выпущен Perl 5.22.0 RC1

Темы:

Вышел первый релиз кандидат новой стабильной версии Perl 5.22.0. Просмотреть информацию о релизе и загрузить новую версию можно с любого зеркала CPAN или найти ссылки на странице.

Если не будет найдено серьёзных проблем, то официальный релиз новой стабильной версии Perl состоится 1 июня.

Комментарии

 

Выпущен Perl 5.21.11

Темы:

Вышел последний релиз Perl ветки 5.21 для разработчиков. Новый релиз содержит изменения в порядка 1 700 строках исходного кода, не считая изменений в автогенерируемых файлах. Полный список изменений можно прочесть в perldelta. Новый стабильный релиз 5.22 ожидается в мае.

Комментарии

Дальше →  

Завершился Берлинский Perl QA-хакатон 2015

Темы:

Perl QA-хакатон — это ежегодное мероприятие, на котором собираются люди, так или иначе занимающиеся вопросами обеспечением качества Perl-кода: тестирование, пакетирование, CPAN и связанные системы. В этом году хакатон проводился с 16 по 19 апреля в Берлине. В нём приняли участие более 30 известных Perl-хакеров, в том числе Рикардо Сигнес, Тацухико Миягава, Дэвид Голден, Лион Тиммерманс, Питэр Рэббитсон.

perlqah2015

Комментарии

Дальше →  

Поддержка бета-версии Юникод 8.0.0 в Perl

Темы:

Карл Уильямсон реализовал поддержку бета-версии стандарта Юникод 8.0.0 для Perl. Поскольку на данный момент в разрабатываемой ветке blead объявлен фриз и новые фичи не принимаются, то пока реализация доступна лишь в выделенной ветке smoke-me/khw-uni8.

emoji-diversity

Напомним, что финальная версия стандарта Юникод 8.0.0 ожидается в июне 2015 года. Среди новшеств новой версии можно отметить поддержку тонов кожи для emoji-символов, где изображены люди, поддержку нового символа национальной валюты — грузинского лари и множество других новых символов.

Комментарии

 

Выпущен Perl 5.21.10

Темы:

Вышел очередной релиз Perl ветки 5.21 для разработчиков. Новый релиз содержит изменения в порядка 170 000 строках исходного кода, не считая изменений в автогенерируемых файлах. Полный список изменений можно прочесть в perldelta. Это предпоследний релиз в ветке 5.21, следующий релиз ожидается 20 апреля, после чего в мае должен выйти новый стабильный релиз 5.22.

Комментарии

Дальше →  

Дискуссия о статусе фатальных предупреждений

Темы:

В рассылке perl5-porters активно обсуждается проблема фатальных предупреждений. Как известно, при использовании конструкции

use warnings FATAL => 'all';

меняется поведение программы, которая теперь генерирует исключение после вывода предупреждений. Есть по крайне мере два серьёзных основания объявить использование фатальных предупреждений нерекомендуемой практикой.

Комментарии

Дальше →  

AnyEvent сломан на Strawberry Perl 5.20

Темы:

В конце прошлой недели рассылка perl5-porters опять наполнились проклятиями Марка Леманна из-за очередной поломки обратной совместимости в Perl5. Как выяснилось AnyEvent оказался сломан на платформе Windows из-за несовместимых изменений, который произошли в версии 5.19.4.

Комментарии

Дальше →  

В Perl 5.22 не попадёт новый Test-Simple

Темы:

Как сообщил Chad Granum, чтобы не создавать спешки и суеты с тестированием обновлённого Test-Simple, в состав Perl 5.22 войдёт проверенная стабильная версия 1.001014. Релиз 1.301001, который содержит значительную переработку архитектуры тестирования и новое модернизированное API, попадёт в разрабатываемую версию Perl уже после релиза Perl 5.22.

Основой нового Test-Simple станет Test::Stream, который станет собирать события всех процессов и тредов теста в одном месте. Раньше все методы, такие как ok, diag, note просто генерировали TAP-вывод, теперь же все подобные события поступают в Test::Stream, позволяя перенаправлять вывод в произвольные файловые дескрипторы в нужной кодировке, выполнять различные хуки до того, как состояние теста обновится. Упростится создание субтестов, вложенных тестов, а также создание собственных тестовых функций, которые теперь получат правильный контекст и не поломают TAP-вывод. Появится возможность легко проводить отладку тестов с выводом стека вызовов в точках, где происходит ошибка.

Комментарии

 

Выпущен Strawberry Perl 5.20.2.1

Темы:

Хорошая новость для пользователей Windows: выпущен релиз дистрибутива Perl для Windows Strawberry Perl 5.20.2.1.

Доступны msi-пакеты для установки: 32-битной и 64-битной версии.

Новые версии содержат обновлённый стабильный релиз Perl 5.20.2. Кроме того были обновлены сопутствуюище версии библиотек, компилятора gcc. Полная информация о релизах соотвественно 32 и 64.

К сожалению, msi-пакеты не подписаны, поэтому проверяйте sha1 отпечаток.

Комментарии

 

Ускорение сигнатуры функции в Perl

Темы:

Функции с экспериментальной поддержкой сигнатур, которые появились в Perl 5.20 работали медленнее, чем обычные функции. Например, если сравнить функции plain и sig, то функции с сигнатурой потребуется выполнить на 60% больше инструкций:

sub plain {
    my ($a, $b, $c) = @_;
    ...
}

sub sig ($a, $b, $c) {
    ...
}

Дейв Митчелл провёл большую работу по оптимизации сигнатур и, в частности, по присвоению значений по умолчанию, например:

sub foo ($a, $b, $c = 1) {
    ...
}

В результате этой работы появилась новая операция OP_SIGNATURE, которая призвана заменить множество отдельных операций по присвоению значений параметров. Далее чуть подробнее о том, что это даёт.

Комментарии

Дальше →  

Вышел Perl 5.21.9

Темы:

Вышел десятый релиз Perl ветки 5.21 для разработчиков. Новый релиз содержит изменения в порядка 160 000 строках исходного кода, не считая изменений в автогенерируемых файлах. Как обычно, полный список изменений содержится в perldelta. Далее обзор наиболее заметных изменений.

Комментарии

Дальше →  

Проблемы со сборкой Perl 5 с помощью GCC 5

Темы:

RedHat, стоящий на острие разработки, провёл тестовую пересборку всех пакетов в Fedora Rawhide с помощью новейшей версии компилятора GCC 5. По результатам пересборки выявились некоторые пакеты, которые этого не пережили, в том числе и Perl 5.20.1.

Как выяснил Petr Pisar, это произошло вследствие изменений в выводе препроцессора, из-за чего перестал правильно генерироваться Errno.pm. Патч уже доступен, хотя, скорее всего, он уже не успевает попасть в грядущий релиз Perl 5.20.2.

Комментарии