[dancer-users] Dancer2 0.200000 is finally out!
Stefan Hornburg (Racke)
racke at linuxia.de
Wed Jun 1 10:51:11 BST 2016
On 05/31/2016 10:22 PM, Sawyer X wrote:
> 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?
It really took a while to get there - I remember when I tried to wrap my head around the plugin problem on
the ACT hackathon in Lyon back in 2014 :-).
I'm confident we found a good solution, otherwise GH issues are open 24/7.
<plug>Time to celebrate that at the Perl Dancer Conference (https://www.perl.dance), we need more
participants, speakers and sponsors!</plug>
Regards
Racke
>
> 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 once.
>
> *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.
>
> *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
>
--
Please visit our 3rd Perl Dancer Conference 2016 in Vienna: https://www.perl.dance/.
More information about the dancer-users
mailing list