Hi everyone,

I haven't written about our last releases because I was a bit stressed for time. Allow me to apologize for that.

We have just released a new version of Dancer2 and I think it's time to share the work we've done recently and where we're going with the next releases.

Big changes in 0.166000:

Menno Blom (@b10m) discovered a problem with the interaction of set and hooks (GH #1013). This turned up being a race condition which is now fixed. Thanks, Menno!

Alberto Simões (@ambs) discovered a problem with returning 0 as the response content. Working with Russell Jenkins (@veryrusty), they have fixed it.

Andy Beverley (@abeverley) discovered a problem with dynamic include paths in the Template::Toolkit template engine. Russell Jenkins jumped in to help and they fixed the problem! Thanks, Andy, for all the help on researching this!

We somehow ended up being incompatible with 5.8. Our policy is to continue supporting it until we can't. Peter Mottram (@SysPete) worked on sorting this out blazingly fast. We're now compatible again!

Defining routes with DSL now returns the route objects created. This is still experimental but it's available and seems good. Take into account oddities such as get() routes returning two objects - one for "GET" and one for "HEAD". If we were to ever serve the HEAD routes through a middleware (which we did and then removed, for speed's sake), this might change. So, experimental and all that. :) It was mainly added to allow us to implement GH #33.

Older changes:

We have released a few versions who did not receive a proper announcement and I would like to go over the bigger issues:

Bas Bloemsaat fixed a problem in forward with a post body re-reading the body filehandle. (GH #1040)

Mickey Nasriachi made sure the before_serializer is always called, as it should, when a serializer is set.

Thanks to additional work by Mickey Nasriachi, the before_serializer hook can now change the content! (via @_ ).

We finally added Hash::MultiValue parameter keywords: route_parameters , query_parameters , and body_parameters . Please use them! We intend to discourage the param and params keywords.

Dmitrii Tcyganov fixed an error that was triggered when a before hook would set the content.

Dancer2 is a heck of a lot faster now!

I want to take a moment to thank the following people for all the work in these versions (in no particular order): Gabor Szabo, Kadir, Vernon, Achilles Kars, Patrick Zimmermann, Andy Beverley, Tina Müller, Dmitrii Tcyganov, A. Sinan Unur, Nick Tonkin, Sébastien Deseille, @girlwithglasses, Nuno Carvalho, Bas Bloemsaat, Mohammad S Anwar, Theo van Hoesel, gertvanoss, Jonathan Scott Duff, and Menno Blom, and thanks to all the core team, especially those involved in this release: Russell Jenkins, Mickey Nasriachi, Alberto Simões, Jason A. Crome, Peter Mottram, and Stefan @racke Hornburg.

Future?

We finished (!) the new plugin system. Yanick Champoux has moved from focusing on maintaining Dancer 1 to working on Dancer 2. Big thank you to David Precious for taking on Dancer 1 maintenance. Yanick has then worked on rewriting the plugin system. It is now available on a branch.

We're working tirelessly on making sure plugins continue to work using the old syntax while we start deprecating it in favor of the new system. We intend to throw a lot of warnings (which we will consider reducing) and keep some form of compatibility for a while.

In order to reduce the change shock, we're going through as many plugins as possible, trying to smooth them over before having to move to the new plugin system. The ticket to track the current status of it is:

https://github.com/PerlDancer/Dancer2/issues/1078

What do you think should be our next major focus? Would you like to help? Let us know!

Have a pleasant dancing experience, And thanks for being an awesome community,

Sawyer X and the Dancer Core Team. <3