It's been a full 5 months since I released the 1.5 version of Mongrel2 so I'm very pleased to announce version 1.6 of Mongrel2 is ready. This release includes a ton of bug fixes and then new internal features that lay the foundation for some big changes to mongrel2 in the following releases.
You can grab the latest source .tar.bz2 at:
http://mongrel2.org/static/downloads/mongrel2-1.6.tar.bz2 (MD5: 4b7467c17dcd192e574d4d2c1455997c)
I've been running this release on my sites for a while, so it should be stable, but please report any bugs you find as a new bug ticket so we can fix them.
Well first off, there's a whole mess of bugs that piled up during the 5 months I didn't have time to hack on Mongrel2. Those are all fixed and there's only a few left that remain. The biggest bugs fixed were related to reloading the server and getting that tight, thanks to a few companies that are using Mongrel2 in various rapid deployment scenarios. I went so far as to run tests off twitter where I'd reload the mongrel2 server I used while people were slamming the server to see if it stayed up.
Mongrel2 is also updated to require the latest ZeroMQ 2.1.4 and now works with it very well. You should not use ZeroMQ 2.1.6 because of a bug in ZeroMQ for that release.
For features there's three big ones:
The three big features I want to do for 1.7 are:
Obviously we'll also be still cranking on the manual, fixing bugs, as the above gets implemented, so fill out a ticket if you've got a feature or join the [email protected] mailing list to talk about it.
I don't want to get too far ahead, but there is one big feature I'm planning for 1.8 that I thought I should mention.
Now that there's full TNetStrings support inside Mongrel2, it's very trivial to write simple RPC mechanisms to control the server. The current control port is basically doing this, and the end results are working great for automated deployment and management.
In 1.8 I want to do this with the configuration subsystem so that Mongrel2 can be configured from anything. I'll define a protocol that a "config server" has to follow which will simply be queries for things Mongrel2 needs to know as 0mq+tnetstrings messages. The config server then just replies with what that server needs. By default this will just be from the current SQLite3 database we use, but you'll be able to point mongrel2 at a different 0mq server to make it reconfigure.
With that in place I'll write a few config servers in Python as examples that configure mongrel2 using files, redis servers, couchdb, etc. to show how it can adapt to the management needs of a large scale automated deployment.
Should be fun.