Выпуск 20. Октябрь 2014
← Введение в Rose::DB::Object | Содержание | Интервью с Леоном Тиммермансом →Обзор CPAN за сентябрь 2014 г.
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
Статистика
- Новых дистрибутивов — 237
- Новых выпусков — 1044
Новые модули
Проект Clownfish разрабатывается в рамках поискового движка Lucy, и представляет собой реализацию объектной системы для языка C. Одноимённый Perl-модуль Clownfish является симбиотическим байндингом, связывая объектную системы языка Perl с Clownfish, позволяя получать доступ к объектам Clownfish как к обычным объектам Perl, наследовать, расширять и затем использовать в Clownfish.
Утилита mssh
позволяет выполнять команды через ssh-соединения одновременно (или последовательно) на нескольких хостах.
Ещё один представитель модулей для генерации SQL-запросов. Интерфейс модуля оправдывает своё название, позволяя достаточно гибко строить весьма сложные запросы. Документация модуля содержит большое число примеров.
Модуль Scalar::Watcher
позволяет отслеживать изменение скалярной переменной, вызывая указанную пользователем функцию:
my $a = 123;
when_modified $a, sub { print "catch $_[0]\n" };
$a = 456; # напечатает 'catch 456'
Фреймворк для автоматизации задач администрирования Rex
обзавёлся веб-интерфейсом Rex::JobControl
. Веб-интерфейс создан на основе фреймворка Mojolicious и сервера задач Minion.
Object::Util
— набор полезных функций для работы с объектами. Идея интерфейса заимствована из Safe::Isa
, но набор функций значительно шире и интереснее.
$foo->$_isa("Class");
В данном примере метод $_isa
аналогичен стандартному isa
: он проверяет, является ли $foo
объектом класса Class
, с тем лишь отличием, что если $foo не является объектом, то вместо исключения возвращается undef
.
Утилита cpanmw
является обёрткой для cpanm
и делает симпатичную подсветку вывода, если терминал поддерживает цвета. Подсветка работает в том числе и на платформе Windows.
Net::DNS::Native
неблокирующийся ДНС-резолвер, который использует вызов getaddrinfo
вашей системной библиотеки. Разрешение имени происходит в выделенной нити, позволяя основной нити программы выполнять свою работу.
Mesos
— это обвязка к разделяемой библиотеке Mesos проекта Apache для управления кластером серверов. Модуль позволяет создавать распределённые приложения (фреймворки), запускающие задачи на динамическом пуле серверов, управляемом Apache Mesos с поддержкой изоляции и выделения ресурсов.
Модуль Plugin::Loader
позволяет просто и безопасно решать задачу по поиску и загрузке модулей-плагинов. Данная задача, наверно, один из самых распространённых случаев использования строкового eval
неискушёнными разработчиками.
Обновлённые модули
- Mango 1.14
Новый релиз неблокирующегося драйвера MongoDB Mango
по всей видимости стал последним. Себастьян Ридель объявил, что в связи с тем, что разработка актуального драйвера требует высоких трудозатрат, а каждый релиз MongoDB ломает обратную совместимость, разработка Mango
прекращена. Почти сразу появился форк проекта, но пока неясно, станет ли он преемником.
- HTTP::Tiny 0.50
В новом релизе лёгкого веб-клиента HTTP::Tiny
исправлена работа keep_alive
при создании нового процесса/нити в программе.
- DBIx::Class 0.082800
Новый релиз DBIx::Class
со множеством исправлений ошибок.
- MaxMind::DB::Reader 1.000000
Вышел первый мажорный релиз MaxMind::DB::Reader
для работы с базами данных геолокации IP-адресов MaxMind. Параллельно выпущена и XS-версия модуля, работающая в 100 раз быстрее.
- Template::Tooolkit 2.26
Новый релиз популярного шаблонизатора Template::Tooolkit
теперь поддерживает контурные теги (outline tags %%
), позволяя избавиться от нагромождения скобок:
%% IF some.list.size
<ul>
%% FOREACH item IN some.list
<li>[% item.html %]</li>
%% END
</ul>
%% END
- Data::Dumper 2.154
Обновление для модуля Data::Dumper
содержит исправление ошибки безопасности CVE-2014-4330, при разборе глубоко вложенной структуры происходили расходование всего пространства стека и крах приложения. Теперь модуль содержит переменную Maxrecurse
, которая по умолчанию ограничивает максимальный уровень рекурсии значением в 1000.
← Введение в Rose::DB::Object | Содержание | Интервью с Леоном Тиммермансом →