Dancer2 0.200000 is finally out!
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 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.
Wow... this a huge release... :) Congratulations to all the team, really amazing stuff! On Tue, May 31, 2016 at 9:22 PM, Sawyer X <xsawyerx@gmail.com> 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?
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@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
-- Pedro Melo @pedromelo http://www.simplicidade.org/ xmpp:melo@simplicidade.org mailto:melo@simplicidade.org
Thx to team. Really impressed Z Sent from my Samsung Galaxy smartphone. -------- Original message -------- From: Pedro Melo <melo@simplicidade.org> Date: 01/06/2016 05:02 (GMT+00:00) To: Perl Dancer users mailing list <dancer-users@dancer.pm> Subject: Re: [dancer-users] Dancer2 0.200000 is finally out! Wow... this a huge release... :) Congratulations to all the team, really amazing stuff! On Tue, May 31, 2016 at 9:22 PM, Sawyer X <xsawyerx@gmail.com<mailto:xsawyerx@gmail.com>> 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? 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@dancer.pm<mailto:dancer-users@dancer.pm> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users -- Pedro Melo @pedromelo http://www.simplicidade.org/ xmpp:melo@simplicidade.org<mailto:xmpp%3Amelo@simplicidade.org> mailto:melo@simplicidade.org<mailto:melo@simplicidade.org>
Congratulations, an effort worth... Dancer 3 probably :) BTW, is it Module::Runtime <https://metacpan.org/pod/Module::Runtime> or Module::Refresh <https://metacpan.org/pod/Module::Refresh>? The latter is linked but the former is named. Ciao, Flavio. 2016-05-31 22:22 GMT+02:00 Sawyer X <xsawyerx@gmail.com>:
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 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@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
On Tue, 31 May 2016 22:22:03 +0200 Sawyer X <xsawyerx@gmail.com> wrote:
The long awaited new version of Dancer2 <https://metacpan.org/pod/Dancer2> is finally on its way to CPAN mirror near you! [...] In short: A new plugin system, reworked from scratch, that is still (mostly) backwards compatible.
Absolutely fantastic work, well done all. I wish I was able to say I helped with it... hopefully I'll have some more time to hack on Dancer (1 & 2!) soon, once my month-old daughter is a bit less of a handful, and my wife has recovered from the birth, and I finish the mountains of DIY on my to-do list! I think it's especially awesome the work the team went to in reaching out to help plugin authors with any changes required - kudos!
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@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/.
On Tue, 31 May 2016 22:22:03 +0200 Sawyer X <xsawyerx@gmail.com> 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?
In short: A new plugin system, reworked from scratch, that is still (mostly) backwards compatible.
Thanks for this release, everybody! And congratulations and good luck in the future. Regards, Shlomi Fish -- ----------------------------------------------------------------- Shlomi Fish http://www.shlomifish.org/ First stop for Perl beginners - http://perl-begin.org/ He who reinvents the wheel, will understand much better how a wheel works. Please reply to list if it's a mailing list post - http://shlom.in/reply .
Congratulations to team! This is awesome. On Wed, Jun 1, 2016 at 1:56 PM, Shlomi Fish <shlomif@shlomifish.org> wrote:
On Tue, 31 May 2016 22:22:03 +0200 Sawyer X <xsawyerx@gmail.com> 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?
In short: A new plugin system, reworked from scratch, that is still (mostly) backwards compatible.
Thanks for this release, everybody! And congratulations and good luck in the future.
Regards,
Shlomi Fish
-- ----------------------------------------------------------------- Shlomi Fish http://www.shlomifish.org/ First stop for Perl beginners - http://perl-begin.org/
He who reinvents the wheel, will understand much better how a wheel works.
Please reply to list if it's a mailing list post - http://shlom.in/reply . _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
-- *Kadir BeyazlıComputer Engineer* *GSM : +90 535 821 50 00*
Dancer maintainers, Is Dancer2 now recommended for "production" usage over Dancer1? I could never find a clear statement about it. The perldancer.org has a Dancer2 download button, yet its code examples says "use Dancer". No statement about it on the cpan pages either, or I apologize if there is. I think it should be right at the front, so new users pick right one. Good to see Dancer2 being improved and robustified. Anyone know a Dancer2 based project that successfully integrated the Stripe or Braintree payment systems? Niels L On Tue, 2016-05-31 at 22:22 +0200, 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?
In short: A new plugin system, reworked from scratch, that is still (mostly) backwards compatible.
On 06/01/2016 04:28 PM, Niels Larsen wrote:
Dancer maintainers,
Is Dancer2 now recommended for "production" usage over Dancer1? I could never find a clear statement about it. The perldancer.org has a Dancer2 download button, yet its code examples says "use Dancer". No statement about it on the cpan pages either, or I apologize if there is. I think it should be right at the front, so new users pick right one. Good to see Dancer2 being improved and robustified.
For my purposes, the plugin revamp killed the last roadblock to "production ready". So yes, Dancer2 is recommended. You are pointing out correctly that the website and Dancer1 POD needs to be updated to reflect this.
Anyone know a Dancer2 based project that successfully integrated the Stripe or Braintree payment systems?
Niels L
Well, I wrote https://github.com/interchange/Business-OnlinePayment-Braintree which is used by a number of people, so please drop me a line if you need help in this regards. Regards Racke
On Tue, 2016-05-31 at 22:22 +0200, 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?
In short: A new plugin system, reworked from scratch, that is still (mostly) backwards compatible.
_______________________________________________ dancer-users mailing list dancer-users@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/.
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
On Tue, May 31, 2016, at 22:22, Sawyer X wrote: *
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@dancer.pm 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
participants (10)
-
Damien Krotkine -
David Precious -
Flavio Poletti -
Kadir Beyazlı -
Niels Larsen -
Pedro Melo -
Sawyer X -
Shlomi Fish -
Stefan Hornburg (Racke) -
Zahir Lalani