Выпуск 34. Декабрь 2015
← Использование Rust из Perl | Содержание | Интервью с Дмитрием Шаматриным →Обзор CPAN за ноябрь 2015 г.
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
Статистика
- Новых дистрибутивов — 154
- Новых выпусков — 778
Новые модули
HTTP::Cookies::PhantomJS
HTTP::Cookies::PhantomJS — расширение для HTTP::Cookies, которое позволяет использовать файлы с куками формата, которые применяются в веб-скрапере PhantomJS. Это бывает полезно, когда куки устанавливаются в результате работы js-кода на стороне клиента при загрузке ресурса в PhantomJS, а последующие ресурсы можно загрузить, используя полученные куки, с помощью более легковесного веб-клиента, например, LWP::UserAgent.
GCCJIT
GCCJIT — это обвязка к библиотеке libgccjit, которая позволяет на лету формировать и компилировать код в машинные инструкции.
Locale::TextDomain::OO::Extract::Xslate
Locale::TextDomain::OO::Extract::Xslate позволяет извлекать строки для перевода из шаблонов Text::Xslate для последующего использования в Locale::TextDomain::OO.
DOM::Tiny
DOM::Tiny — это минималистичный HTML/XML DOM-парсер с поддержкой CSS-селекторов.
my $dom = DOM::Tiny->new(<<EOF);
<div>
<p id="a">Test</p>
<p id="b">123</p>
</div>
EOF
say $dom->at('#b')->text; # 123
$dom->find('div p')->last->append('<p id="c">456</p>');
say $dom->at('#c')->text; # 456
App::remarkpl
App::remarkpl — это утилита, позволяющая запустить локальный веб-сервер на основе Mojolicious для отображения презентаций на основе remark. В качестве параметра указывается путь к файлу с презентации в формате Markdown, после запуска презентация может быть открыта в браузере по адресу localhost:3000
Devel::Trepan::Deparse
Devel::Trepan::Deparse — это плагин для отладчика Devel::Trepan, который добавляет две новые команды: deparse и deval. Команда deparse позволяет показать какой код будет выполняться в следующей инструкции, что бывает полезно, когда отладчик остановился на строке, в которой несколько операций и не ясно какая из них будет выполняться на следующем шаге:
if ( grep { $_ eq 'foo' } @bar ) {...}
выражение внутри if или уже блок кода grep для какого-то текущего значения @bar? Команда deparse покажет какая именно операция будет выполняться следующей:
: deparse
# code to be run next...
$_
# contained in...
$_ eq 'foo'
Mail::DKIM::Iterator
Модуль Mail::DKIM::Iterator позволяет организовать проверку DKIM-записей в почтовых сообщениях и добавлять DKIM-подпись к ним. Основное отличие от Mail::DKIM — это возможность организовать неблокирующуюся потоковую обработку писем.
Unix::Pledge
Недавно появившийся в OpenBSD системный вызов pledge(2) теперь можно использовать в perl-программах, которые будут работать на этой платформе, с помощью модуля Unix::Pledge. Модуль позволяет наложить ограничения на процесс, например, запретить чтение или запись файлов, с указанием списка файлов-исключений.
Perl6::Export
Perl6::Export реализует Perl 6 роль is export для Perl 5 модулей, позволяя изящно экспортировать функции модуля. Например, сравнение с Exporter:
package My::Module; | package My::Module;
use Exporter; | use Perl6::Export;
|
our @EXPORT = qw(foo bar); | sub foo is export(:MANDATORY);
| sub bar is export(:MANDATORY);
|
our @EXPORT_OK = qw(baz); | sub baz is export(:DEFAULT :qux);
our %EXPORT_TAGS = |
qw(qux => [qw(baz)]); |
Pg::Reindex
Индексы Postgresql должны периодически пересоздаваться для достижения оптимальной производительности. Например, это можно сделать с помощью команды REINDEX, но в этом случае потребуется эксклюзивная блокировка всей таблицы.
Модуль Pg::Reindex выполняет создание индекса с помощью CREATE INDEX CONCURRENTLY, который может выполняться без блокировки. Затем он начинает транзакцию, в которой удаляет старый индекс и переименовывает новый. Таким образом достигается пересоздание индекса без длительной блокировки.
Обновлённые модули
Sereal 3.010
Вышло обновление (де)сериализатора Sereal. В новых выпусках исправлено множество багов, включая несколько случаев краха десериализатора, которые были обнаружены при тестирование с помощью фазера AFL.
JSON::Validator 0.63
Модуль JSON::Validator позволяет проводить проверку данных в формате JSON на соответствие JSON-схеме. В новой версии удалена поддержка использования модулей YAML и YAML::Tiny для загрузки JSON-схемы в формате yaml (поддерживаются только YAML::XS и YAML::Syck). Связано это с тем, что YAML и YAML::Tiny в некоторых случаях некорректно выполняют разбор формата yaml.
PathTools 3.60
Вышло обновление дистрибутива PathTools, включающий модули для работы с путями на различных поддерживаемых в Perl платформах. В новой версии включён модуль File::Spec::AmigaOS для поддержки платформы AmigaOS.
MIME-Types 2.12
В новой версии дистрибутива MIME-Types обновлена база данных MIME-типов, в соответствии с текущим состоянием в IANA. Требования к версии Perl снижены до 5.6.
utf8::all 0.017
Прагма utf8::all тотально включает UTF-8: для исходного кода программы, перекодирует открываемые файлы и аргументы, переданные в командной строке, разрешает использование последовательностей \N{...} для задания юникод-символов по их имени и т.д. В новой версии появилась возможность отключать эффект прагмы, с помощью no utf8::all.
PDL 2.015
Вышел новый релиз PDL — модуля для работы научных вычислений и отображения данных. Как указано в журнале изменений — это отполированный релиз с исправлением всех замечаний обнаруженных в предыдущей версии с улучшенной поддержкой 64-битных целых.
perl 5.23.5
Вышла новая версия Perl 5.23.5 для разработчиков. В новом релизе проведена оптимизация, которая ускорила выполнение арифметических операций, таких как сложение, вычитание и умножение. Кроме того, теперь быстрее стали работать операции ++ и --. Исправлено несколько ошибок с крахом интерпретатора, например, в функции pack: perl -e 'pack "WH200000", \0'
App::perlbrew 0.74
Обновился менеджер Perl-инсталляций perlbrew. В новой версии появилась поддержка переменной окружения PERLBREW_LIB_PREFIX, которая позволяет добавить каталог с библиотеками, имеющей приоритет над локальными каталогами библиотек perlbrew (т.е. ./lib:$PERL5LIB). Теперь при загрузке файлов будет отдаваться предпочтение https-ресурсам и обязательно проверяться их сертификат.
podlators 4.00
Вышел новый мажорный релиз утилит для конвертирования POD-файлов. Теперь все входящие в дистрибутив модули используют единую версию. Релиз содержит большое количество исправлений, накопившихся с последнего релиза, вышедшего два года назад.
← Использование Rust из Perl | Содержание | Интервью с Дмитрием Шаматриным →
