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 > [email protected] > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
Links: 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
_______________________________________________ dancer-users mailing list [email protected] http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
