Марк Леманн создал форк 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 QA-хакатон 2015

Темы:

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

perlqah2015

Комментарии

Дальше →  

Выпущен Perl 5.21.11

Темы:

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

Комментарии

Дальше →  

Поддержка бета-версии Юникод 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.

Комментарии

 

В библиотеке libc Apple использовался Perl для реализации wordexp

Темы:

HackerNews сегодня повторил уже мелькавшую новость о том, что по крайне мере до 2011 года в реализации функции wordexp() в библиотеке libc Apple использовался Perl, как внешняя программа, производящая разбор аргументов и собирающая их в строку с разделителем нуль-символом \0:

char *cmd = "/usr/bin/perl -e 'print join(chr(0), @ARGV), chr(0)' -- ";

Оригинальный исходный код можно увидеть здесь.

Комментарии

 

Расширенный тип границ в регулярных выражениях

Темы:

Карл Уильямсон работает над реализацией выражения \b{...}, как расширенного варианта \b для задания типа границ в регулярных выражениях.

В Perl 5.22 появятся три варианта таких конструкций:

  1. \b{gcb} — граница кластера графемы (кластер графемы, это две или более кодовых точек образующих один символ, например , состоящий из латинской g и знака двух точек)
  2. \b{cb} — граница предложений. Будет срабатывать там, где по правилам Юникода происходит разделение предложений. Правда предложение Mr. Jones всё равно будет считаться двумя предложениями.
  3. \b{wb} — граница слова.

Кроме того Юникод определяет и перенос строки и его можно реализовать как \b{lb}, но на CPAN уже есть Unicode::LineBreak.

Простое выражение \b определяет границу между символами \w и \W. Хотя большинство новичков почему-то считают, что это граница между \s и \S. Есть мысль реализовать такое как \b{space}, но на самом деле скорее всего имеется ввиду \b{wb}, который действительно хорошо ищет границы для естественных языков, например, он правильно выделит слово don't в предложении ... don't., включив апостроф, но исключив точку.

В этой связи Карл предлагает задать новый флаг для прагмы re

use re "/w"

который бы по умолчанию рассматривал обычный \b как \b{wb} в своей области определения.

Комментарии