Выпуск 13. Март 2014

Сигнатура функции в Perl 5.20 | Содержание | Интервью с Брено де Оливейра (Breno G. de Oliveira)

Обзор CPAN за февраль 2014 г.

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

В этом месяце замечена активность по исправлению некоторых базовых модулей для корректной работы на платформе Android (IO::Compress, DateTime, Module::Build и некоторые другие). Новый релиз Perl 5.19.9 для разработчиков включил поддержку нативных сигнатур функций. Известный модуль CGI ищет нового мейнтейнера.

Статистика

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

Новые модули

Модуль warnings::MaybeFatal позволяет сделать предупреждения фатальными только на этапе компиляции. Это может быть полезно, если требуется поймать возможные ошибки при запуске, но не прерывать работу программы, когда она уже запущена.

    use strict;
    use warnings qw(all);
    use warnings::MaybeFatal;

    # Неинициализированное значение при конкатенации строк
    # Предупреждение во время исполнения, поэтому нефатальное

    print undef . "string";

    # Бесполезное использование константы в пустом контексте
    # Предупреждение во время компиляции, поэтому фатальное

    42;

В полку валидаторов структур прибавление — модуль Data::DynamicValidator позволяет выполнять сложные проверки структур данных. Благодаря использованию динамических правил, возможен обход всех листьев ветки структуры или только части, удовлетворяющих определённым условиям.

Появился модуль для обработки и конвертирования языка разметки Nimble в html. Структурированный язык разметки Nimble в чём-то схож с Wiki и Markdown, но имеет ряд интересных возможностей. Например, макросы для создания сложных повторяющихся фрагментов, и метаданные документа, доступные как хеш с набором атрибутов на выходе парсера.

По аналогии с экзоскелетом, Exobrain, вероятно, означает внешний мозг. Данный проект является свободным аналогом сервиса IFTTT, позволяя автоматически реагировать на различные события (например, слать твиты друзьям, которые живут в городе, в который вы сейчас прибыли, используя данные Foursquare и Twitter).

Модуль Localizer — это новый фреймворк для создания локализации, отличающийся простотой интерфейса и реализации.

Raisin — это микро веб-фреймворк, ориентированный на создание RESTful API сервисов. По синтаксису DSL он напоминает фреймворк Grape из мира Ruby.

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

Небольшое косметическое изменение появилось в дистрибутиве XML-LibXML — все модули в его составе обзавелись прагмами use strict + use warnings. Лучше поздно, чем никогда.

Вышел новый мажорный релиз модуля Pod::Markdown для конвертирования документов формата POD в Markdown. В новой версии произошёл переход на Pod::Simple вместо Pod::Parser. Появились некоторые несовместимые изменения, в частности, встречаемые теги E<> теперь просто конвертируются в соответствующие UTF-8 символы, символы табуляции заменяются пробелами.

Документация новой версии включает упоминание о том, что модуль является устаревшим и рекомендует использовать Pod::Simple.

В новом perldoc был восстановлен флаг -U, который позволяет не сбрасывать привилегии программы в случае запуска от root. Опасно ли не сбрасывать привилегии программе, которая только читает код, вопрос отдельный, но иметь такую возможность иногда требуется.

Почти три года прошло с последнего стабильного релиза антиспам системы SpamAssassin. В новой версии появилась нативная поддержка IPv6, улучшена технология блокировки по DNS-именам и добавлена поддержка работы Байесовых фильтров с использованием бэкенда на Redis.

Обновился официальный клиент системы поиска и анализа Elasticsearch. Новая мажорная версия поддерживает новое API сервиса версии 1.0 и использует его по умолчанию. Для использования старой версии API 0.90.x необходимо явно указывать это в параметрах подключения.

Новый стабильный релиз веб-фреймворка Catalyst содержит ряд заметных изменений. Прежде всего это изменение в способе передаче данных ответа Plack-серверу. Раньше для этого всегда использовался потоковый интерфейс, теперь же, если тело ответа это простой скаляр, объект или файловый дескриптор, то он передаётся в Plack-сервер как есть. В некоторых случаях это может повысить скорость отдачи данных, корректно заработает chunked encoding, если сервер её поддерживает. Начата миграция части кода Catalyst на использование аналогичного по функционалу Plack Middleware.

В новом релизе Module::Runtime исправлено несколько ошибок. Одно из исправлений меняет логику работы use_module(), передавая значение version для проверки версии модуля, даже если оно имеет значение undef. Некоторые существующие системы могут быть завязаны на старом поведении, что неизбежно приведёт к их поломке при обновлении данного модуля. В частности, так оказался сломан Moose.

Данный релиз исправляет ошибку безопасности при работе с временными файлами. При открытии временного файла на запись существовала возможность переписать существующий файл пользователя при использовании атаки symlink race.

Moose был исправлен в связи с изменением поведения нового Module::Runtime.

Очередной экспериментальный релиз реализации метаобъектного протокола для базового Perl. В новом релизе присутствует множество внутренних улучшений. Также включены конфигурационные файлы для корректной подсветки синтаксиса в редакторах vim, emacs и textmate.

Новый релиз документации по секретным операторам в Perl содержит два новых оператора: Эббот и Костелло и Наклонившийся Эббот и Костелло.

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


Сигнатура функции в Perl 5.20 | Содержание | Интервью с Брено де Оливейра (Breno G. de Oliveira)
Нас уже 1393. Больше подписчиков — лучше выпуски!

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