Выпуск 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 | Содержание | Интервью с Дмитрием Шаматриным
Нас уже 1393. Больше подписчиков — лучше выпуски!

Комментарии к статье