Выпуск 28. Июнь 2015

Полный список изменений в Perl 5.22.0 | Содержание | Интервью с Рене Беккером

Обзор CPAN за май 2015 г.

Рубрика с обзором интересных новинок CPAN за прошедший месяц

Статистика

  • Новых дистрибутивов — 179
  • Новых выпусков — 730

Новые модули

Yandex::Metrika

Yandex::Metrika — это модуль для доступа к одноимённому API Яндекса с использованием OAuth-авторизации. API-вызовы соответствуют методам объекта Yandex::Metrika, полный их список есть в документации Яндекс.Метрики.

Cache::Reddit

Cache::Reddit — это довольно забавная идея использовать в качестве кеша новостной сайт reddit. Данные сериализуются с помощью Storable и постятся как текстовый пост на субреддите, задаваемого в переменной окружения reddit_subreddit. Извлекаются данные путём поиска, поэтому сложность метода O(n), зато удаление происходит за постоянное время O(1).

pluskeys

Прагма pluskeys — это ещё один подход к созданию атрибутов для объектов, по подобию fields.

package Some::Package;
use pluskeys qw(
    NAME
    SURNAME
    AGE
);

...

if ( $self->{+NAME} =~ /Larry/ ) { ... }

В данном примере прагма pluskeys просто создаёт константы NAME, SURNAME и AGE, которые можно использовать как ключи атрибутов объекта. По специальному соглашению используется знак +, чтобы парсер Perl понял, что это константа, а не строка. Такой подход позволяет избежать опечаток.

HTTP::Tinyish

HTTP::Tinyish — это обёртка для модулей HTTP-клиентов LWP, HTTP::Tiny, а также программ curl и wget. Модуль основан на коде из App::cpanminus и может быть полезен в ограниченных окружениях, когда поддержка https отсутствует во встроенной HTTP-библиотеке.

Crypt::NaCl::Sodium

Crypt::NaCl::Sodium — это обёртка к современной криптографической библиотеке libsodium для (де)шифрования, создания и проверок подписи, хеширования и прочих операций. API совместимо с библиотекой NaCl.

Sub::Disable

Модуль Sub::Disable позволяет удалять методы и подпрограммы из скомпилированного кода. Например:

use Sub::Disable 'debug';

sub debug { warn "DEBUG INFO: @_" }

__PACKAGE__->debug(some_heavy_debug()); # no-op
debug(even_more(), heavier_debug());    # no-op

В процессе работы вызов метода/подпрограммы debug() превращается в пустую операцию вместе со всеми возможно тяжёлыми вычислениями в её аргументах. Это бывает полезно, чтобы отладочный код не замедлял работу приложения в рабочем окружении.

JSV

JSV — это реализация валидатора JSON-схемы, позволяющая проверять структуры данных, пересылаемых в формате JSON.

Disque

Disque — это Perl-клиент для Disque, распределённой системы очереди заданий. Модуль использует Redis.

Обновлённые модули

Hash::Ordered 0.09

Обновлён модуль Hash::Ordered, который позволяет создавать упорядоченные хеши. В новых релизах улучшена производительность при удалении из хеша с большим числом элементов, а также при извлечении элементов.

Marpa::R2 3.000000

Вышел новый мажорный релиз парсера Marpa::R2. Единственное изменение в релизе — это исправление проблемы со странным поведением вызова метода $recce->value() в случае, если передавался blessed аргумент. Поскольку чей-то код мог использовать подобную особенность, то изменение ломало обратную совместимость. По этой причине и состоялся мажорный релиз.

Clustericious 1.00

Состоялся первый мажорный релиз Clustericious — веб-фреймворка для создания RESTful-сервисов, работающих в составе кластера, где каждый сервис выполняет только одну задачу и делает это идеально. Релиз содержит небольшое обновление документации и очевидно был предназначен только для того, чтобы зафиксировать стабильное состояния фреймворка.

Mail::GPG 1.0.9

После длительного перерыва обновился модуль Mail::GPG для работы с зашифрованными или заверенными цифровой подписью письмами. В новой версии появилась поддержка GnuPG 2.x.

Protocol::HTTP2 1.00

Вышла первая мажорная версия реализации новой версии протокола интернета HTTP2 Protocol::HTTP2. Выпуск приурочен к выходу официальной спецификации протокола RFC 7540.

XML::WBXML 0.09

Обновился модуль XML::WBXML, предназначенный для конвертации между форматами XML и WBXML. Модуль поменял майнтейнера, теперь это Михаил Иванов, который написал интересный пост о том, как это произошло.

Data::Printer 0.36

Вышел новый релиз модуля Data::Printer, который позволяет легко и быстро получить красивый вывод с подсветкой на терминал различных переменных, объектов и других структур данных. В новой версии появилась функция np(), которая вместо печати вывода на экран возвращает строку. В свою очередь, p() теперь всегда печатает свой вывод и возвращает параметр, который был передан функции. Это несовместимое изменение, будьте внимательны при обновлении.

Владимир Леттиев


Полный список изменений в Perl 5.22.0 | Содержание | Интервью с Рене Беккером
Нас уже 1393. Больше подписчиков — лучше выпуски!

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