После трёх месяцев разработки представлен очередной релиз наиболее полной на сегодняшний день реализации языка Perl 6 — Rakudo Star 2015.06. Помимо компилятора Rakudo, виртуальной машины MoarVM и базового окружения nqp (Not Quite Perl) пакет программ Rakudo Star содержит набор модулей, портированных на Perl 6, и полностью пригоден как для знакомства с языком, так и для разработки приложений.
Наиболее значимые изменения:
улучшенная поддержка Unicode (NFC, NFD, NFG, Uni);
значительное ускорение: до 25% для строковых операций Str.codes/chars/uc/lc/tc/tclc/ord/flip;
добавлены нативные массивы целых чисел и типы bit и byte.
Анонс рязанского Perl-воркшопа — 2015, Андрей Шитов.
Рязанский Perl Workshop 2015 — бесплатная конференция, посвященная языку программирования Perl, которая впервые проводится в Рязани.
Рефакторинг Legacy, Наталья Савенкова.
Рефакторинг устаревшего кода в примерах.
Что нового в Perl 5.22, Андрей Шитов.
Краткий обзор наиболее заметных изменений в свежем стабильном релизе перла.
Обзор CPAN за май 2015 г., Владимир Леттиев.
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
Интервью с Рене Беккером, Вячеслав Тихановский.
Рене Беккер (Renée Bäcker) — немецкий Perl-программист, выпускал журнал $foo, активно участвует в немецком Perl-сообществе.
Марк Леманн, также известный как schmorp, создатель библиотеки libev, AnyEvent и Coro, объявил о создании форка Perl под названием «stableperl».
Как известно, Марк постоянно конфликтовал с разработчиками Perl5 из-за регулярных нарушений обратной совместимости в новых релизах, а релиз Perl 5.22.0, который привёл к неработоспособности Coro, очевидно, стал последней каплей.
По словам Марка, Stableperl — это попытка восстановления стабильности и совместимости до уровня, о котором говорит официальная документация Perl. Сам форк рассматривается как замена стандартному Perl, который будет поддерживаться и после окончания обычного времени поддержки. В нём исправлены наиболее заметные ошибки, которые текущие разработчики Perl5 «отказываются» исправлять: в первую очередь производительность хеша и порча данных в фазе глобального деструктора. Также stableperl рассматривается как защита от дальнейших поломок, которые могут допустить текущие разработчики Perl5.
Установив stableperl можно продолжать использовать CPAN, а также использовать модули, которые будут специально разработаны под stableperl. Форк не будет принимать патчи, которые нарушают обратную совместимость, т.е. там не будет новых возможностей и фич, основная цель — совместимость со стандартным Perl.
Первый релиз stableperl-5.22.0-1.001.
Его основные отличия от Perl 5.22:
Удалены изменения, которые запрещают модификацию публичных структур Perl (EXT_MGVTBL и PadlistNAMES). Они использовались в модуле Coro.
Функция хеша заменена на FNV-1A. Это достаточно простой и быстрый алгоритм для функции хеширования и даёт прирост ~40%.
Удалён флаг -fstack-protect, который невозможно было переопределить пользователю. Он не работает на всех платформах и может создать проблемы.
Отладка приложений на AnyEvent, Владимир Леттиев.
Отладка асинхронных приложений часто затруднена из-за нелинейного характера выполняемого кода, когда ошибки проявляются под нагрузкой или в каких-то исключительных трудновоспроизводимых ситуациях. Привычные инструменты могут быть неудобны и неинформативны. Если приложение построено на основе AnyEvent, то для него уже существуют готовые рецепты отладки.
Метаоператоры в Perl 6, Андрей Шитов.
Рассмотрены доступные в языке метаоператоры — операторы, расширяющие синтаксические возможности языка, используя другие операторы
- Анонс конференции YAPC::Russia 2015,
YAPC::Russia — ежегодная конференция, посвященная языку программирования Perl и его сообществу, которая проводится в Москве (под названием May Perl), Киеве (під назвою Perl Mova) и Санкт-Петербурге.
- Работа с WebSocket в Perl, Вячеслав Тихановский
Рассмотрены несколько подоходов при работе с технологией WebSocket из Perl
- Промисы в Perl 6, Андрей Шитов
Вторая часть обзора возможностей Perl 6 для параллельных и конкуррентных вычислений
- Грамматики в Perl 6, Андрей Шитов
В этой статье рассказано об одной из наиболее мощных возможностей Perl 6 — грамматиках
- Обзор CPAN за март 2015 г., Владимир Леттиев
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
- Интервью с Виктором Турским, Вячеслав Тихановский
Виктор Турский (koorchik) — украинский Perl-программист, сооснователь компании WebbyLab
Fuzzing-тестирование perl-интерпретатора с помощью afl, Владимир Леттиев Закончились новогодние каникулы. Кто-то ездил отдыхать в жаркие страны, кто-то смотрел телевизор и не вылезал из-за(под) стола. Но были и те, кому было интересно провести бесчеловечные эксперименты с Perl. Об одном таком эксперименте и пойдёт речь.
Каналы в Perl 6, Андрей Шитов Первая часть обзора возможностей Perl 6 для параллельных и конкуррентных вычислений
Использование TLS в Perl, Владимир Леттиев Ликбез по криптографии и практика применения TLS (Transport Layer Security — безопасность транспортного уровня) в Perl
Интервью с Рикардо Сигнесом (Ricardo Signes), Вячеслав Тихановский Рикардо Сигнес (Ricardo Signes) — американский Perl-программист, в настоящее время pumpking, ответственный за выпуск релизов perl
Несколько часов назад состоялся релиз новой мажорной версии языка программирования Perl. Разработка Perl 5.20.0 заняла примерно 12 месяцев с момента выпуска Perl 5.18.0 и содержит около 470 000 строк изменений в 2 900 файлах от 124 авторов.
В этой версии достаточно много новшеств:
Subroutine signatures
То, чего многие так ждали, а другие возражали привычным «ненужно»
sub foo($bar, $baz) {
print "\$bar=$bar, \$baz=$baz"
}
Таким образом теперь можно определять параметры функции в скобках после её имени. Есть и возможность задать значение по умолчанию
sub bar($foo, $baz=10) {
print '$foo+$baz=', $foo+$baz
}
О других особенностях новой экспериментальной возможности можно прочитать в perldoc perlsub. Стоит отметить, что старый механизм получения параметров функции из @_ также остаётся в силе.
Новый синтаксис для получения среза ключей-значений/индексов-значений для хешей/массивов
%hash{...} и %array[...] соответственно
%h = (blonk => 2, foo => 3, squink => 5, bar => 8);
%subset = %h{'foo', 'bar'}; # срез ключ-значения для хеша
# %subset теперь (foo => 3, bar => 8)
@a = "a".."z";
@list = %a[3,4,6]; # срез индекс-значения для массива
# @list теперь (3, "d", 4, "e", 6, "g")
Постфиксное разыменовывание
К старому доброму разыменовыванию ссылок, навроде @$foo и %$bar, был добавлен вариант постфиксного разыменовывания: $foo->@* и $bar->%* соответственно. Синтаксис для других типов ссылок можно посмотреть в perldoc perlref
Механизм копирования при записи (copy-on-write) для строк
Теперь при присвоении переменной значения другой строковой переменной не создаётся копии буфера вплоть до тех пор, пока значение одной из переменных не будет изменено. Это увеличивает скорость присвоения и снижает потребление памяти. Теперь не потребуется передавать в функцию строковую переменную по ссылке, чтобы увеличить производительность.
pfm — консольный (curses) файловый менеджер, написан на языке Perl и основан на PFM.COM для MS-DOS (созданный Paul Culley и Henk de Heer). Разрешение на использование названия было любезно предоставлено авторами PFM.COM.
Распространяется под лицензией GPLv2.
Особенности данного файлового менеджера:
Вызов команд одним или двумя нажатиями на клавиши.
Цветные имена файлов в соответствии с их расширением или типом.
Режим выбора одного и нескольких файлов.
Многоуровневая сортировка.
Использование старых меток и новых меток для выполнения нескольких команд в той же группе файлов.
Поддержка закладок для каталогов.
Можно как угодно настроить менеджер через его конфигурационный файл.
Поддерживает историю командной строки и автозавершение команд посредством использования библиотеки readline.
Интеграция с инструментами: Subversion, CVS, Bazaar, Mercurial and git.
С 12 по 14 августа 2013 года в Киеве впервые пройдет международная конференция YAPC::Europe, посвященная языку Perl.
YAPC::Europe появилась в 2000 году и до этого проводилась в Лондоне, Амстердаме, Мюнхене, Париже, Белфасте, Браге (Португалия), Бирмингеме, Вене, Копенгагене, Лиссабоне, Пизе, Риге и Франкфурте. В этом году удалось привезти конференцию в Киев.
В конференции принимает участие автор перла Ларри Уолл.
На сегодня зарегистрировалось более 260 участников из 28(!) стран.
Тема конференции — «Будущий перл» (Future Perl), и речь пойдет о том, что ждет Perl в будущем, куда ему развиваться и какие версии ждать пользователям.
Конференция продлится три дня и пройдет в помещении в самом центре Киева. В дополнительной программе — предварительная встреча участников вечером накануне открытия, вечеринка после первого дня и круиз на корабле по Днепру во второй день.
Сегодня 05.18 состоялся релиз Perl 5.18. Разработка заняла год с момента выпуска предыдущей стабильной версии, при участии 113 авторов.
Из видимых изменений можно отметить следующие:
Новый механизм для экспериментальных возможностей (features) Начиная с этого выпуска при использовании какой-либо экспериментальной возможности будет выдаваться предупреждение, избавиться от которого можно с помощью стандартного механизма «no warnings» (для чего была добавлена категория experimental)
no warnings "experimental::feature_name";
Также стоит отметить, что некоторые из уже привычных возможностей были перенесены в категорию экспериментальных, например оператор smartmatch. Полный список экспериментальных возможностей можно посмотреть в perlexperiment
Более строгая рандомизация хешей Отдельное внимание было уделено проблеме. известной как Hash Collision Complexity Attack. Несмотря на то, что возможность данной атаки была сведена к нулю начиная с perl 5.8.1 (25-е сентября 2003-го), разработчики пошли дальше (возможно, в связи с недавними событиями вокруг некоторых известных языков, применяемых в веб-разработке) и усовершенствовали механизм рандомизации хешей. Теперь порядок вывода одного и того же хеша отличается от запуска к запуску. Помимо этого каждый хеш имеет свой собственный порядок итерирования, поэтому порядок вывода двух хешей с одинаковыми значениями может отличаться. Также был добавлен ряд новых хеширующих функций, а выбрать конкретную можно на этапе компиляции интерпретатора perl.
Бинарные операции над символьными классами в регулярных выражениях Это экспериментальная возможность, позволяющая применять к символьным классам бинарные операторы, такие как: & (пересечение), + или | (объединение), - (вычитание), ^ (симметрическая разность). Так, например, можно получить все цифры Тайского или Лаосского написания:
/(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/
Подпрограммы с лексической областью видимости Появилась экспериментальная возможность создавать подпрограммы с лексической областью видимости (my sub foo {} или state sub foo {}) и алиасы с лексической областью видимости на подпрограммы текущего пакета (our sub foo {}).
Сегодня вышел новый мажорный релиз веб-фреймворка на Perl — Mojolicious. Кодовое имя этого релиза — «Top Hat».
Mojolicious — современный (M)VC веб-фреймворк. В нём отсутствует реализация моделей — выбор библиотеки для взаимодействия с базой данных Себастьян Ридел (Sebastian Riedel — основной разработчик фреймворка) оставил пользователю. Вместо этого он сконцентрировался на поддержке современных протоколов и подходов (подробнее).
уменьшено время простоя в Mojo::IOLoop, Mojo::Reactor::Poll;
удалены устаревшие методы build_form_tx, build_json_tx, post_form, post_json из Mojo::UserAgent, добавлена поддержка работы с данными, сжатыми при помощи gzip;
Вечером 20 мая, спустя год после публикации версии 5.14, состоялся релиз Perl версии 5.16.
Из изменений можно отметить следующие:
Поддерживаемая версия unicode обновлена до 6.1.
use VERSION теперь переводит интерпретатор в режим указанной версии. Например, указав use v5.14 в версии 5.16 мы получим поведение perl 5.14, а все features из других версий будут отключены.
Новое ключевое слово __SUB__, с помощью которого можно получить ссылку на текущую подпрограмму в области видимости самой подпрограммы. Теперь написание однострочников стало еще проще:
# вычислим факториал 10 в одну строку
my $fact = sub { $_[0]>0 ? $_[0] * __SUB__->($_[0]-1) : 1 }->(10)
Новая функция fc, производящая unicode casefolding над переданной строкой. Если ранее для сравнения не ASCII строк в разном регистре вы применяли lc() или uc(), то вы делали это неверно. Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE. Что после перевода в нижний регистр обоих вариантов приведет к сравнению «reichwaldstraße» и «reichwaldstrasse». В итоге сравнение закончится неудачей. Именно эту проблему решает функция fc().
12–13 мая в Киеве пройдет уже пятая по счету конференция YAPC::Russia — YAPC::Russia 2012 «May Perl + Perl Mova».
Эта конференция особенно привлекательна из-за участия известных Perl-деятелей: Tatsuhiko Miyagawa (Perl-хакер известный в первую очередь как автор спецификации PSGI. Автор более 170 модулей на CPAN) и Gabor Szabo (организатор еженедельных Perl-новостей Perlweekly, тренер Perl курсов, автор Padre).
Для участия в конференции необходимо зарегистрироваться. Участие бесплатное.
Предварительная программа конференции будет свёрстана позднее. Следите за официальным сайтом конференции!
Увидел свет четвёртый по счёту релиз виртуальной машины для динамических языков Parrot VM.
Согласно плану разработчиков, Parrot 4.0 - новый стабильный релиз, готовый к использованию и включению в дистрибутивы, поэтому основные изменения были направлены на исправление ошибок и улучшение документации.
Из наиболее важного:
Чистка API интерпретатора
Доработки в легковесных тредах и таймерах; улучшение документации по ним
Документация по всем когда-либо выпущенным версиям Parrot теперь доступна на http://parrot.github.com
По данным последнего исследования, представленного компанией W3Techs, использование Perl на веб-серверах упало ниже отметки одного процента. Когда-то самый популярный скриптовый язык занимает всего лишь пятое место по популярности, с долей в 0,997%.
Стал доступен 11-ый выпуск Yet Another Perl Podcast, подкаста о Perl на русском языке. Темы выпуска:
День рождения Ларри Уолла :)
Почему Perl?
Производительность пакетов ООП в Perl
Отчет о конференции BlackPerl 2011
Обзор вакансий и интересных CPAN модулей
Новая рубрика «Офтопик»
Пара слов о подкасте. Первый (пилотный) выпуск YAPP был залит на rpod 7 марта 2011. С тех пор подкаст выходит примерно раз в месяц. Четкого графика выпусков нет - все сильно зависит от наличия тем для обсуждения, настроения ведущих и других факторов.
Несмотря на то, что подкаст посвящен языку Perl и ведут его perl-программисты, он может быть интересен широкой аудитории - от системных администраторов, линуксоидов и сочувствующих до профессиональных программистов, использующих в своей работе язык, отличный от Perl.