После более полугода разработки, состоялся выпуск 10.45 библиотеки PERL-совместимых регулярных выражений PCRE2, написанной на языке C и распространяемой по лицензии BSD. Это сравнительно большой выпуск, включающий в себя новые функции, некоторые исправления ошибок и несколько изменений, имеющих небольшое влияние на обратную совместимость.
Версия 10.45 – это первый выпуск, подготовленный новыми сопровождающими проекта, которые благодарят Филипа Хейзела, создателя и сопровождающего проектов PCRE и PCRE2.
Если исключить документацию, автоматически генерируемые файлы и инструментарий для формирования самого релиза, в новой версии изменено 190000 строк в 1300 файлах .pm, .t, .c и .h.
GNU parallel — утилита командной строки, позволяющая выполнять задачи на одном или нескольких компьютерах параллельно.
В прошлом году я нашел старую резервную копию с самой первой версией Parallel. В архиве не было исполняемого сценария, тем не менее остался временный файл от emacs (~parallel). Это обстоятельство позволило установить дату создания первой версии проекта: 6 января 2002г. На тот момент программа представляла из себя ~15 строк кода на Perl и она до сих пор запускается:
Восстановлен и немного обновлен сайт, где указаны самые актуальные группы (есть общая ТГ группа, есть специальные под поиск работы) и события в русскоязычной среде перловиков.
Полный список докладов с кратким текстовым описанием можно посмотреть по ссылке.
В списке выступлений есть видео, которые будут полезны программистам на любых языках. Любители скандалов и интриг могут посмотреть видео про перипетии, предварившие выход Perl 5.34. Также в наличии отличные видео, рассказывающие, что за зверь язык «Raku», с чем его едят и какие «киллер фичи» он поддерживает из коробки.
Вышел релиз библиотеки PCRE2 10.37. PCRE2 это вторая версия оригинальной библиотеки PCRE с несовместимым API.
Библиотека PCRE2 это набор функций, которые реализуют регулярные выражения и сопоставление с образцом (pattern matching), используя синтаксис и семантику схожие с Perl 5.
Основные изменения:
Из библиотеки libpcre2-posix удалены символы POSIX-функций, такие как regcomp и т.д., так как они вызывали проблемы у некоторых приложений. Патч pcre2-symbol-clash.patch принят в апстрим. Также обновлена версия ABI этой библиотеки.
С момента выхода Perl 5.32.0 прошло около десяти месяцев. Если исключить документацию, генерируемые автоматически файлы и инструментарий для формирования самого релиза, было изменено 150,000 строк в 1,300 .pm, .t, .c и .h-файлах.
У нас всегда были планы по портированию Mojolicious на другие языки, в оригинале на Perl6... Но мы знаем как всё обернулось. Тем временем, благодаря ES6, JavaScript стал действительно приятным инструментом и в экосистеме Node.js есть местечко для mojo.js.
В последующих твитах Себастьян упомянул пятнадцатикратное ускорение по сравнению с Perl-реализацией.
Напомню, что Mojolicious — мощный и современный веб-фреймворк написанный на языке программирования Perl, обладающий великолепной документацией, а инструментарий «Mojo», созданный в рамках проекта Mojolicious, успешно применяется самостоятельно в различных задачах.
Состоялся первый публичный релиз редактора метатегов электронных книг в форматах EPUB, FB2 и FB3 (поддержка AZW и MOBI в планах).
Программа является свободным программным обеспечением с общедоступными (открытыми) исходными кодами (FLOSS) и распространяется под лицензией GPLv3 или выше.
Поддерживаются системы GNU/Linux, UNIX, MS Windows, Apple macOS. Интерфейс реализован с помощью библиотеки wxWidgets, так что GUI родной для каждой ОС, например, используется GTK+ на GNU/Linux, MFC на Windows, Cocoa на macOS. В отличии от Qt или Java не осуществляется никакой эмуляции виджетов.
Программа была вдохновлена и написана под влиянием Ex Falso, популярного редактора метатегов для аудиофайлов. Большое спасибо его авторам! Использую его регулярно для своей музыкальной коллекции.
Язык реализации – Perl. Все модули (например, ZIP или XML) являются всего лишь привязками к динамическим библиотекам на Си, так что приложение работает быстро.
Один из виднейших членов сообщества Perl, многократно бывавший в роли pumpking'а, принял решение покинуть руководящий комитет и приостановить участие в разработке ядра интерпретатора Perl. Причиной стали «преследования, травля и попытки публично пристыдить», в том числе со стороны других разработчиков ядра (имеется ввиду Core team сообщества).
Страсти вокруг интерпретатора кипят не первый месяц, с момента анонса Perl7 и сломе обратной совместимости в сопутствующих новой версии изменениях.
Тем не менее, Sawyer X, намерен выпустить в мае версию 5.34, если другие разработчики и члены комитета не будут возражать.
Mojolicious – это фреймворк для веб-приложений реального времени, написанный Себастьяном Риделем, создателем фреймворка для веб-приложений Catalyst.
Для устранения уязвимости в версии 9.11 была сломана обратная совместимость. Необходимо обновиться!
Суть изменений в отключении автоматического определения форматов. Например, маршруты, которые раньше обрабатывали запросы «/foo» и «/foo.json», впредь будут отзываться только на «/foo». Доступные форматы необходимо явно перечислять.
Данная версия является результатом четырёх недель разработки с момента выхода 5.33.1. Изменения внесены 19 авторами в 260 файлов и равны примерно 11,000 строк кода.
Тем не менее, в perldelta обозначено только одно ключевое нововведение:
интерпретатор может быть собран с экспериментальным ключом -Dusedefaultstrict, который включает по умолчанию соответствующую прагму. Действие данной настройки не распространяется на однострочники.
В данный момент идут жаркие споры об изменении поведения по умолчанию для Perl7, что приведёт к нарушению обратной совместимости. Данный выпуск проливает свет на выбранный разработчиками интерпретатора курс.
Вчера вечером на «Perl and Raku Conference in the Cloud», Sawyer X анонсировал смену основной версии Perl с 5 на 7. Работы уже ведутся, новая версия выйдет в течение года. Большого количества изменений ждать не стоит, если коротко: Perl 7 это всё тот же Perl 5.32 с современными настройками по умолчанию. Вам больше не надо явно подключать возможности которые вы и так используете, их включат для вас!
Появилась возможность записывать операторы сравнения с одним приоритетом в виде цепочки:
if ( $x < $y <= $z ) {...}
Тоже самое что:
if ( $x < $y && $y <= $z ) {...}
Про данную особенность можно подробней почитать в perlop (раздел «Operator Precedence and Associativity»).
Буквенные обозначения утверждений в регулярных выражениях больше не являются экспериментальными. Пример: (*pla:pattern), подробнее в perlre.
Возможность ограничения проверяемого шаблона конкретной системой письма (подробнее «Script Runs» в perlre) больше не является экспериментальной.
Появилась возможность отключать непрямой вызов методов. Подробнее можно почитать в заметке Брайана Д Фоя.
Некоторые оптимизации:
Проверка подключения дополнительных возможностей (features) теперь происходит быстрее.
Существенно ускорены специальные случаи для сортировки (речь о {$a <=> $b} и {$b <=> $a} ).
Выбрал только некоторые вещи на свой вкус. Есть иные нововведения, несовместимые с прошлыми версиями изменения, обновления документации и закрытые проблемы безопасности. Предлагаю ознакомиться с полной perldelta по ссылке.
COVID-19 разогнал всех по домам, но как бы то ни было, у сообщества накопилось много интересных мыслей по Perl и Raku, которыми хочется поделиться.
Присоединяйся к трёхдневному мероприятию насыщенному интересными выступлениями!
Конференция будет проходить с 24 по 26 июня. Купившие билет в 10$, смогут смотреть живые выступления и задавать вопросы докладчикам. Для всех остальных, видеоотчёт будет доступен на ютуб совершенно бесплатно.
Доклады традиционно читают волонтёры и желающие могут поддержать альтруистов рублём.
Книга будет полезна программистам и системным администраторам. Для её чтения достаточно знать основы Perl. Освоив её, вы овладеете мощным и выразительным инструментом, который поможет упростить решение повседневных задач.
В книге освещены:
основы HTTP;
разбор JSON;
разбор XML и HTML;
селекторы CSS;
непосредственное выполнение HTTP-запросов, аутентификация и работа с cookie;
выполнение неблокирующих запросов;
обещания.
Написание однострочников и модуль ojo. Некоторые примеры:
% perl -Mojo -E 'g(shift)->save_to("test.html")' mojolicious.org
% mojo get https://www.mojolicious.org a attr href
Цена у книги более чем народная и я уже полистал ее. Мне очень понравилась. Материал излагается доступно и интересно. Много познавательных отступлений о том, почему то или иное средство реализовано именно так.
Брайан обещает обновлять учебник несколько раз в год и в данный момент работает над следующей книгой, посвящённой уже самому веб-фреймворку.
Mojolicious — современный веб-фреймворк на Perl. Mojo — дочерний проект по разработке набора инструментов для фреймворка. Модули семейства Mojo::* широко применяется и в сторонних проектах.
Пример кода:
use Mojo::Base -strict, -async;
async sub hello_p {
return 'Hello Mojo!';
}
hello_p()->then(sub { say @_ })->wait;
Ранее Perlfoundation выделяла грант на разработку модуля Future::AsyncAwait. Некоторое время спустя, основной разработчик Mojolicious (Себастьян Ридель) сообщал, что ведутся работы по реализации async/await.
Также добавлена экспериментальная поддержка метода all_settled для Mojo::Promise.