Выпуск 21. Ноябрь 2014
← Еще немного об асинхронном программировании на Anyevent | Содержание | Интервью с Еленой Большаковой →Обзор CPAN за октябрь 2014 г.
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
Статистика
- Новых дистрибутивов — 242
- Новых выпусков — 899
Новые модули
Модуль Proc::Fork::Control
представляет ещё один простой подход к созданию и управлению дочерними процессами. Модуль также позволяет контролировать максимальное количество создаваемых процессов и имеет встроенную процедуру для демонизации процессов.
Себастьян Ридель представил новый модуль Mojo::Pg
для работы с базой данных PostgreSQL в веб-приложениях на фреймворке Mojolicious. Сам по себе модуль является тонкой надстройкой к DBD::Pg
, которая автоматически контролирует все соединения с базой данных, кэшируя их для повторного использования, а также производит сброс соединений, если форкается новый процесс, позволяя прозрачно работать с одним объектом модуля во всех процессах.
Mojo::Pg
позволяет выполнять как блокирующиеся, так и асинхронные запросы к базе данных, с тем лишь ограничением, что запросы выполняются последовательно в рамках одного соединения.
Net::DNS_A
— это обёртка к функции стандартной библиотеки C getaddrinfo_a
, которая является асинхронным аналогом функции getaddrinfo
. Модуль позволяет выполнять асинхронное разрешение DNS-имён.
Authen::SCRAM
— это реализация современного стандарта RFC5802 SCRAM — механизма хранения данных и протокола аутентификации посредством пароля.
Более легковесная реализация спецификации SPORE для описания REST API интерфейсов. В отличие от Net::HTTP::Spore
, не имеет зависимости от Moose
и возвращает результаты в виде объекта на базе стандартного класса HTTP::Response
.
Реализация структуры данных BK-дерева для выполнения поиска с неточным соответствием. Подобная структура часто используется для проверки правописания слов по словарю.
use Tree::BK;
use utf8;
my $tree = Tree::BK->new();
$tree->insert_all(qw(Валя Вася Варя Катя Маша));
$tree->find('Ваня', 1); # Валя, Вася, Варя
$tree->find('Ваня', 2); # Валя, Вася, Варя, Катя
Модуль Panda::Lib
является коллекцией оптимизированных высокоскоростных функций, подходящих для использования как в Perl-, так и в XS-коде. В основном это функции для работы с хэшами и массивами: объединение, клонирование, сравнение.
Обновлённые модули
- perl 5.18.4
Выпущен четвёртый релиз исправлений для предпоследней стабильной ветки perl-5.18. Релиз 5.18.3 был выпущен с ошибкой и просуществовал лишь несколько часов. В новом релизе исправлено несколько ошибок, в том числе ошибка сегментации памяти в Digest::SHA
и утечка памяти на платформе Win32 при использовании system
или обратных кавычек.
- Mojo::Redis 1.00
Первый и последний мажорный релиз модуля для работы с Redis в веб-приложениях Mojolicious Mojo::Redis
объявляет модуль устаревшим и рекомендует переходить на на Mojo::Redis2
.
- ExtUtils::MakeMaker 7.00
Вышел новый мажорный релиз самой старой и по-прежнему популярной системы для сборки перл-модулей EUMM. Релиз содержит множество исправлений, например, наконец-то появилась возможность указывать каталог для инсталляции, имя которого содержит пробелы, поддерживаются опции в кодировке UTF-8, а также файлы и каталоги с символами в кодировке UTF-8. На платформе Windows появилась поддержка для GNU Make.
- autovivification 0.13
Обновлён модуль прагмы autovivification
, позволяющий отключать автовивификацию в вашем коде. Автор обращает внимание, на то, что требуется тщательно протестировать этот релиз, поскольку потенциально возможно зависание на этапе компиляции. Новая версия должна заметно снизить общее замедление на этапе компиляции, которое вносит использование данной прагмы.
- JSON::PP 2.27300
Новый релиз модуля JSON::PP
содержит исправление ошибки при разборе JSON на старых версиях perl ≤ 5.8.6.
- Panda::Export 2.1.0
Panda::Export
— это альтернатива для модуля Exporter, написанная на C, которая позволяет на порядок ускорить импорт констант и функций в процессе компиляции. В новом релизе добавлена поддержка создания констант списком и увеличена скорость создания и импорта констант.
- Mojolicious 5.56
В этом месяце традиционно вышло множество релизов веб-фреймворка Mojolicious
, включающие множество различных изменений и улучшений. Важным стоит отметить релиз 5.48, в котором было сделано исправление серьёзной уязвимости, позволяющей проводить инъекцию параметров. Всё это привело к поломке обратной совместимости: методы, которые раньше возвращали разные результаты в зависимости от контекста, теперь разделены, например, params/all_params, cookie/all_cookies и т.д. Подробности об атаке можно почитать здесь
В отличие от Mojolicious, другие фреймворки ограничились менее радикальными мерами: в Dancer добавили метод param_array
, а Catalyst ограничился упоминанием в документации, что метод params
устарел и требует осторожного использования.
- Syntax::Feature::Try 1.00
Вышел первый мажорный релиз реализации оператора try/catch/finally для Perl. В отличие от многих других реализаций он может обрабатывать ошибки по их ISA, поддерживает несколько catch-блоков и реализован на основе keyword/parser API (требует perl ≥ 5.14), не требует обязательной точки с запятой после завершающей фигурной скобки. В новом релизе была добавлена поддержка субтипов Moose::Util::TypeConstraints
при обработке в catch.
- IO::Socket::SSL 2.002
Новый мажорный релиз IO::Socket::SSL
можно было смело переименовать в IO::Socket::TLS
поскольку поддержка последней версии протокола SSL 3.0 по умолчанию отключена. Это связано с публикацией информации об уязвимости в протоколе SSL 3.0 — POODLE. Также по умолчанию подключаются опции для улучшения PFS в протоколах шифрования.
- CSS::Sass 3.0.1
Новый мажорный релиз байндинга к библиотеке libsass для компиляции .sass/.scss-файлов. Новая версия соответствует последней мажорной версии библиотеки libsass.
- Web::Scraper 0.38
Неожиданно после двухлетнего перерыва обновился модуль для разбора HTML-страниц с помощью XPath-выражений Web::Scraper
. В обновлённой версии включены давно забытые в баг-трекере улучшения в документации и фильтры на основе регулярных выражений. Молодец, Миягава, лучше поздно, чем никогда.
← Еще немного об асинхронном программировании на Anyevent | Содержание | Интервью с Еленой Большаковой →