Mojolicious 6 has been released

Mojolicious 6 was released the other day, although the information was delayed a little. Mojolicious is a Perl web framework.

Mojolicious 6.0 released: Perl real-time web framework

I have translated the announcement of Mojolicious author Sebastian Riedel into Japanese.

Release report

We are delighted to announce the release of Mojolicious 6.0 (Clinking Beer Mugs). This is the first major release with new members on the core team. Welcome to Jan Henning Thorsen.

2015 may seem like the year of the 6.0 release, but it's still early and there's a lot to look forward to. The IETF has approved HTTP / 2. This, for better or for worse, may completely change the way we develop web applications.

You can't wait for the place where this leads us. We also have Mojoconf in New York this year. Preparations have already begun and we will soon be able to share the details.

Real-time web technology is becoming more and more mainstream, and while the community has matured, it continues to grow steadily. Even on Github, we were able to strengthen our position as the most starred Perl project.

The official documentation is visited by hundreds of users every day. The mailing list has more than 1000 subscribers. thank you everyone.

This year's main focus is on improving performance. All parts are much faster and more scalable. There are also some new feature additions. Below are the highlights of the features.

  • Nested helper. Helpers can now be nested in namespaces. For example, the built-in helper reply->asset.
  • Support for SOCKS 5 through IO::Socket::Socks.
  • Support for non-blocking name resolution through Net::DNS::Native.
  • New Mojo::DOM. The API has been completely redesigned. We also added support for case-sensitive attribute selectors. "Like" in [foo = ”bar” i].
  • Support for RFC 3339. Almost all new REST APIs use it.
  • Content negotiation. Content negotiation can be used with If-None-Match and If-Modified-Since.
  • IPv6 support everywhere: IO::Socket::IP has become so reliable that I've always used it.
  • Do not use wantarray(). It has been completely removed from the code to prevent security vulnerabilities.
  • Mojo::Pg and Minion: We have reached a stable 1.0 release. This has become a spin-off project.
  • If you want to know more, take a look at Changes on GitHub.

Mojolicious 6.0 Changes

have fun!

Pick up the part where compatibility is broken with Mojolicious 6

Mojolicious is one of Perl's web frameworks that supports non-blocking I / O so that it handles parallel HTTP requests optimally.

Mojolicious's compatibility is high overall, but for the future it allows for partial incompatibilities. So, don't upgrade Mojolicious to a new version all at once, but test it in your development environment before upgrading.

There are some parts of Mojolicious 6 that are out of compatibility, so I will write about those parts.


param method is no longer evaluated in list context.

The param method is no longer evaluated in list context. To prevent security vulnerabilities, all parts of the code that use wantarray have been removed.

Note that code like the following will no longer work as it used to.

my @params = $c->param('title');


param method no longer accepts array references.

The param method no longer accepts array references. Please note that the following description will no longer work as before.

my @params = $c->param(['title','author']);

It seems that some specification changes of the param method will affect a wide range, but since Web applications are an area where it is highly necessary to reduce security risks, I feel that this is unavoidable. If you think the above two codes may be used, please check them out.

Mojo::JSON object-oriented support is gone

Mojo::JSON object-oriented support is gone. If it is described as follows, please rewrite it as below.

# Old
use Mojo::JSON;

use Mojo::JSON'encode_json','decode_json';
encode_json ($foo);
decode_json ($foo);

render_static, render_not_found, render_exception are gone

The controller class render_static, render_not_found, render_exception are gone. Instead, write:

# Old


The bridge disappears and it becomes under.

Let's change the place where it says bridge to under.

# Old
$r->bridge(sub {...})

$r->under(sub {...});

The area around Mojo::DOM is not stable yet

The implementation around Mojo::DOM is not stable yet, so if you are using it, check the changes.

Associated Information