[dancer-users] Dancer2 0.200000 is finally out!

Damien Krotkine dkrotkine at gmail.com
Thu Jun 2 08:56:40 BST 2016

On Tue, May 31, 2016, at 22:22, Sawyer X wrote:
> The long awaited new version of Dancer2[1] 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[2] 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[3].
> 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. :)
As fun as it was to hack again on Dancer, my minuscule contribution
didn't deserve such a mention, especially with regard to the huge amount
of (sometimes grunt) work that has been done by the other teammates.
Well done !
> 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 once.
> *New core plugin
> A beautiful gem that was a result of the second Dancer Conference
> (DancerConf[4]), Dancer2::Plugin::SendAs[5] 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[6] and Dancer2[7] 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[8] versions, a breakage that we marked as a
> mandatory high-priority issue.
> *A bit faster
> We've internally moved to Type::Tiny[9] which will automatically load
> Type::Tiny::XS[10], making your program faster.
> We also moved from Class::Load[11] to Module::Runtime[12] 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[13] log.
> *Onwards
> 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.
> _________________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users


   1. https://metacpan.org/pod/Dancer2
   2. https://metacpan.org/pod/Moo
   3. https://github.com/PerlDancer/Dancer2/issues/1078
   4. http://perl.dance/
   5. https://metacpan.org/pod/Dancer2::Plugin::SendAs
   6. https://metacpan.org/pod/Dancer
   7. https://metacpan.org/pod/Dancer2
   8. https://metacpan.org/pod/Plack
   9. https://metacpan.org/pod/Type::Tiny
  10. https://metacpan.org/pod/Type::Tiny::XS
  11. https://metacpan.org/pod/Class::Load
  12. https://metacpan.org/pod/Module::Refresh
  13. https://metacpan.org/changes/distribution/Dancer2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20160602/2718f996/attachment.html>

More information about the dancer-users mailing list