This is yet another big step for Cutelyst, this release bring several important fixes to the last version, and stabilizes the API a bit more. So far I have successfully deployed 3 commercial applications build on top of Cutelyst + Grantlee5, and the result is great.
If you don’t know Cutelyst yet it’s a Web Framework allowing you to build web applications using Qt, for more info check (this blog and) our website/wiki which is still work in progress: http://cutelyst.org or join #cutelyst on freenode
This release brings the following improvements:
- Further speed improvements by simplifying several code paths and improving the dispatcher logic was an overall of 15% speedup
- Added an API to enable Grantlee template caching which greatly improve speed when using Grantlee templating
- Improved Query and Body parameters to allow for properly dealing with posts that contains the same field id multiple times
- REST API – Since 0.1.0 I was asked about supporting REST, and since I needed it for another project that I got involved the support landed early, the behavior is the same as Catalyst::Action::REST which allows you to easily add a foo_DELETE method which will get automatically called if the request method is DELETE for example.
- Added a Credential HTTP plugin to handle Basic HTTP (and in future Digest) authentication
- Added support for Authenticate and ProxyAuthenticate basic parsing on the Headers class
- Finished Context::uriFor() methods that allows for easily building an URI.
- Added a method to do a DNS PTR lookup to get the hostname of the client
- Added a C_PATH to more easily set the matching part of the path (thanks to Dan Vrátil)
- Fixed a few memory leaks
- Fixed a crash if the body wasn’t set
- Fixed uWSGI body buffered device
- And a lot of other misbehaviors found on post release…
For the next release I hope to be able to port the Catalyst tutorial to the Cutelyst equivalent, and finish a few other API changes.
As before the API is unstable but don’t be afraid of playing with it, most changes will simply require a rebuild of your application.