[dancer-users] Dancer2 0.200000 is finally out!

Sawyer X xsawyerx at gmail.com
Tue May 31 21:22:03 BST 2016

The long awaited new version of Dancer2 <https://metacpan.org/pod/Dancer2>
is finally on its way to CPAN mirror near you!

Why did it take so long, what's changed, and why the big bump in version?

In short: A new plugin system, reworked from scratch, that is still
(mostly) backwards compatible.

*The plugin system*
One of the sore points left in Dancer2 is its plugin architecture. The idea
was to have an easy, comfortable plugin system (similar to Dancer 1) but
much smarter. Unfortunately while the idea was there, and some of the code
was there, the goals were not fully achieved, due to tuit shortage.

This led to various problems with plugins, most notably, using plugins
within other plugins. This was beyond frustrating for several plugin
developers. The current system was simply insufficient. We decided to
finally tackle this. I have an entire story about that, but I'll leave it
for another time.

The new plugin system provides each plugin with its own instance, full Moo
<https://metacpan.org/pod/Moo> classes (use attributes, roles, other
plugins, whatever you want), full access to the internal objects (which, as
a plugin developer, you might as well use), and cleanly decouples it from
the user namespace. Despite it being object oriented, we still carefully
try and handle the old keyword-based interface that the previous plugin
system used. In places where it was not possible, we contacted the module
authors, and provided pull requests to implement the new parts. We even
collected statistics on which modules are supported, whether we submitted a
PR, whether it was merged, and whether a new release was made. You can see
this here <https://github.com/PerlDancer/Dancer2/issues/1078>.

The compatibility layer was incredibly involved and tasking and took
several good developers, and myself, to get it done. Damien Krotkine (dams)
even came back from semi-retirement just to help remove AUTOLOAD usage. He
was missed. :)

Peter Mottram has worked tirelessly to get everything running as smooth as
possible. He tracked everything, debugged, tested, submitted PRs, contacted
and worked with authors, and basically did the work of about 20 people at

*New core plugin*
A beautiful gem that was a result of the second Dancer Conference (
DancerConf <http://perl.dance/>), Dancer2::Plugin::SendAs
<https://metacpan.org/pod/Dancer2::Plugin::SendAs> is now in core! Most
people do not know about it. It allows you to override the serializer (or
the lack thereof) per response.

Well, that's not really true. The truth is that we introduced a stronger
version of it with more features!

*New keywords*
The original keyword spec for Dancer <https://metacpan.org/pod/Dancer> and
Dancer2 <https://metacpan.org/pod/Dancer2> included header and push_header.
This is only for response, not request. We now introduced variations
explicitly for request and response, namely request_header and
response_header (and more).

*Megasplat fix*
We fixed a problem with Megasplat, reported by Miyagawa-san.

*Plack support*
We support new Plack <https://metacpan.org/pod/Plack> versions, a breakage
that we marked as a mandatory high-priority issue.

*A bit faster*
We've internally moved to Type::Tiny <https://metacpan.org/pod/Type::Tiny>
which will automatically load Type::Tiny::XS
<https://metacpan.org/pod/Type::Tiny::XS>, making your program faster.

We also moved from Class::Load <https://metacpan.org/pod/Class::Load> to
Module::Runtime <https://metacpan.org/pod/Module::Refresh> to both reduce
dependencies and speed up the framework.

There had been quite a few more improvements and we would like to thank
everyone who helped make this release such a great one. You can view all
the changes in the Changes
<https://metacpan.org/changes/distribution/Dancer2> log.

Now that we got the new plugin architecture out of the way, we can start
concentrating on additional improvements and interesting changes. We will
introduce a completely reworked documentation, named routes (or route
aliases), and maybe a rainbow-colored pony which sneezes sunshine.

With much love, The Dancer Core Team.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20160531/3f415225/attachment.html>

More information about the dancer-users mailing list