Cutelyst v4 - 10 years 🎉

Cutelyst the Qt web framework is now at v4.0.0 just a bit later for it's 10th anniversary.

With 2.5k commits it has been steadly improving, and in production for many high traffic applications. With this release we say good bye to our old Qt5 friend, also dropped uWSGI support, clearsilver and Grantlee were also removed, many methods now take a QStringView and Cutelyst::Header class was heavly refactored to allow usage of QByteArrayView, and stopped storing QStrings internally in a QHash, they are QByteArray inside a vector.

Before, all headers were uppercased and dashes replaced with underscores, this was quite some work, so that when searching the string had to be converted to this format to be searcheable, this had the advantage of allowing the use of QHash and in templates you could c.request.header.CONTENT_TYPE. Turns out both cases aren't so important, speed is more important for the wider use cases.

With these changes Cutelyst managed to get 10 - 15% faster on TechEmpower benchmarks, which is great as we are still well positioned as a full stack framework there.

https://github.com/cutelyst/cutelyst/releases/tag/v4.0.0

Have fun, Merry Christmas and Happy New Year!

Cutelyst v3.5 relicensed as BSD-3-Clause

Cutelyst the Qt Web framework just got a new license, the more permissive BSD-3-Clause. Back in 2013 when I started the project the LGPL was a perfectly fine license as software on servers can be closed as long they are not AGPL, thus it was permissive enough for the web and REST backends use-cases I had in mind.

Fast-forward almost 10 years and I have used for a few of projects where it was embedded into another application, and I realized that there might be users with commercial Qt license that would like to use it but can't due the current license.

Hesitate no more! It's amazing how much nicer it is to implement client-server applications using HTTP/REST APIs all with Qt/C++, and when real time is needed WebSockets is also there to the rescue.

Since Ubuntu 22.04 has Qt 5.15 and 6.2 releases, for the next releases 5.15.2 will be the new minimum as I want to increase the QStringView usage eventually doing a major version update.

*UPDATE: This release includes a QtWidgets example application showing how to use Cutelyst::Server embedded into a GUI application.

https://github.com/cutelyst/cutelyst/releases/tag/v3.5.0

Cutelyst 3.2 and ASql 0.50 are out!

Cutelyst the Qt Web Framework got a new release, Yes, I fotgot to make a post about Cutelyst 3.1, so to sum up:

  • Support for SSl::Ec
  • Faster parsing of application/x-www-form-urlencoded body
  • Cutelee v6 support
  • Fix server usage without --reuse-port (added SO_REUSEADDR)
  • Documentation fixes
  • Increased usage of std::shared_ptr

ASql the async Qt SQL library also got an update, it's API is rather stable now, main changes were:

  • Fix memory leak on ACache
  • Proper std::shared_ptr usage
  • Postgres driver is now a separate library ASql::Pg
  • Paved the way to have multiple drivers (yes MySQL is planned)

As always have fun and a happy new year!

Cutelee 6 released

Cutelee is templating engine forked from Grantlee. This major release was created to support both Qt5 and Qt6, it was not an easy port due Qt6 changes to QVariant, we got some patches for this port, and I finished the remaining issues.

It differs from Grantlee in which it already has support for more Django template tags, a few performance optimizations, and most importantly to me is the ability to extend without the hassled of creating a plugin and have it installed in some magical place. You can just register it with the engine and be done with it.

Enjoy https://github.com/cutelyst/cutelee/releases/tag/v6.0.0

Cutelyst 3 is out!

Cutelyst, the C++/Qt web framework just got a new major release.

Under the hood it now has both Qt5 and Qt6 support, but because of this a few things had to be changed, the most important one was QMap usage as a multi-key container had to be changed to QMultiMap, if you used ParamsMultiMap types or auto when assigning there's probably little to do, one major exception is that if you still use Grantlee it might not work well, but Cutelee is there with fixes and is almost ported to Qt6.

Another API changes were on the authentication classes that have some friendly methods for QString passwords, WSGI module is now called Cutelyst::Server, it allows you to embed Cutelyst on other applications or have it as a stand alone executable, allowing for better LTO as you can get all stuff compiled as static libraries.

For the future I'm leaning towards increasing minimum version to Qt 5.12 (sadly means LGPLv2 for Qt5.6 will be gone) to start using QStringView where possible.

https://github.com/cutelyst/cutelyst/releases/tag/v3.0.0