Представлен второй стабильный релиз фреймворка Mojolicious, предназначенного для создания web-приложений на языке Perl с использованием парадигмы MVC (Model-View-Controller). Проект развивается автором популярного фреймворка Catalyst и позиционируется как попытка перевода на новый уровень средств web-разработки для языка Perl, учитывая прошлый опыт и адекватно поддерживая современные тенденции в web-разработке. С одной стороны Mojolicious достаточно прост в освоении (для незамысловатых проектов доступен упрощенный вариант Mojolicious::Lite), а с другой - построен на пике современных технологий, например, поддерживает WebSockets, Ajax, асинхронный ввод/вывод, RESTful-процедуры и т.п.
По заявлению основателя проекта, Mojolicious является попыткой возродить интерес к языку Perl среди разработчиков приложений, как было во времена появления модуля CGI. Пять лет назад в ответ на появление технологии Ajax был создан фреймворк Catalyst, в нынешнее время мир стоит на пороге революции технологий HTML5. Возможности браузеров возросли и ранее реализуемая на стороне сервера логика все больше переносится на клиентскую сторону. Появилось несколько принципиально новых подходов в работе web-приложений, таких как возможность организации полноценного двунаправленного обмена данными с сервером (WebSocket API), поддержка выполнения web-приложений в offline-режиме и более тесная интеграция JavaScript.
Изменения, отмеченные в версии Mojolicious 2.0:
- Требования к минимальной версии Perl увеличены с 5.8.7 до 5.10.1. Использование некоторых конструкций, появившихся в новых версиях Perl, позволило заметно увеличить производительность;
- Morbo - новый вариант самодостаточного встроенного в фреймворк web-сервера, идеально подходящего для использования в процессе разработки и отладки, так как он не требует перезапуска приложения после внесения изменений в код и может работать на любых платформах, включая Windows;
- Встроенный web-сервер Mojo::Server::Hypnotoad, реализующий prefork-модель обработки запросов и предназначенный для развертывания готовых проектов на Unix-системах, расширен в направлении упрощения настройки и адаптации его под свои нужды. Из возможностей Hypnotoad также отмечается поддержка обновления Mojolicious, Perl и системных библиотек на лету, без остановки обслуживания запросов. Кроме того, Hypnotoad может распознавать заголовки X-Forwarded-For, X-Forwarded-Host и X-Forwarded-HTTPS при работе в роли бэкенда;
- Использование высокопроизводительной библиотеки libev для обеспечения работы модулей обработки цикла событий (Event Loop) EV и AnyEvent;
- Многие объекты теперь генерируют события, которые могут быть использованы для расширения возможностей Mojolicious;
- Добавлен плагин Mount plugin для встраивания внешних Mojolicious-приложений в виде обработчиков заданных запросов;
- Расширены возможности приложений, создаваемых по упрощенной схеме с использованием Mojolicious::Lite. Добавлена поддержка группировки секций (блок group), в зависимости от области их использования (например, можно отделить обработчики для закрытого интерфейса администратора и публично доступных сервисов);
- Упрощенные средства тестирования приложений, использующих WebSocket.
- Поддержка коллекций, упрощающих получение и разбор контента с внешних сайтов;
Особенности Mojolicious:
- Поддержка из коробки: плагинов, шаблонов с возможностью вставки perl-операторов, подписанных cookies, I18N, полная поддержка unicode;
- Встроенные механизмы управления сессиями;
- Доступен отдельный фреймворк для тестирования web-приложений;
- Чистый, легко портируемый и объектно-ориентированный API;
- Пакет является самодостаточным и не требует для своей работы каких либо зависимостей, кроме Perl 5.10.1 (рекомендуется Perl 5.12+, кроме того некоторые опциональные функции могут потребовать установки дополнительных модулей из CPAN);
- Встроенная реализация клиента и сервера для HTTP 1.1 и WebSocket, с поддержкой TLS, Bonjour, IDNA, Comet (длительный пулинг), chunking и multipart;
- Несколько вариантов встроенного web-сервера: для тестирования, для промышленного использования для быстрого развертывания. Сервер поддерживает организацию асинхронного ввода/вывода, epoll, kqueue и UNIX domain sockets. В простейшем случае для развертывания web-проекта на базе Mojolicious достаточно наличия интерпретатора Perl. При этом фреймворк является многоплатформенным и поддерживает не только Unix-подобные ОС, но и Windows;
- Автоматическое определение доступности режимов CGI, FastCGI и PSGI;
- Встроенный парсер JSON и XML/HTML5 с поддержкой CSS3 селекторов.