Mojolicious 7.0 released: Perl real-time web framework
I’m excited to announce the release of Mojolicious 7.0 (Doughnut).
While the community around Mojolicious keeps growing, you might be surprised to hear that the distribution itself has actually been shrinking. This is a very good thing, even with all the features we added over the years, we’ve managed to reduce the code size from 11247 lines in 2010, to 8490 lines today.
As you can see, it’s not a new trend, we put a lot of emphasis on iterative improvements, and that includes finding more efficient solutions to already solved problems. At the same time the number of tests has grown with every release, and we have now reached a very comfortable test coverage score of 95% with 11245 tests.
With every release so far, we’ve also seen significant performance improvements. This is once again the case in 7.0, even though it keeps getting harder to find opportunities for optimizations. And especially ones that would show up on the “requests per second” benchmarks we run regularly.
Additionally, we’ve refactored a few internals, to make sure that our built-in HTTP and WebSocket servers can scale efficiently with large numbers of CPU cores, which have become much more commonly available.
While the main focus this year has been on stability, there are also a few new features, here’s a list of the highlights:
- Named variables in all templates: Mojo::Template now supports named variables natively. (example)
- HTTP methods: An “_method” query parameter can now be used to override the request method. (example)
- SNI: Now also on the server-side. (example)
- Windows: Full support for Ubuntu on Windows, including zero downtime software upgrades.
- Validation filters: Parameters can now be filtered before validation. (example)
- WebSocket subprotocols: We now support WebSocket subprotocol negotiation. (example)
- Minion: Our little job queue got much faster and now has support for parallel processing, multiple named queues, retrying failed jobs automatically and job dependencies.
- Code of conduct: Diversity matters a lot to us, and therefore we have decided to adopt a code of conduct.
And as usual there is a lot more to discover, see Changes on GitHub for the full list of improvements.
P.S.: We now have stickers.
Have fun!