The following notes are for users moving from 1.0, 1.2 and 1.4 to uWSGI 2.0.
Users of the 1.9 tree can skip this document as 2.0 is a “stabilized/freezed” 1.9.
uWSGI is now GPL2 + linking exception instead of plain GPL2.
This should address some legal issues with users compiling uWSGI as a library (libuwsgi.so) and loading non-GPL compatible plugins/libraries.
All of the I/O of the uWSGI stack (from the core to the plugins) is now fully non-blocking.
No area in the whole stack is allowed to block (except your app obviously), and plugins must use uWSGI’s I/O API.
When you load loop engines like gevent or Coro::AnyEvent, the uWSGI internals are patched to support their specific non-blocking hooks.
What does this mean for app developers?
Well, the most important aspect is that network congestions or kernel problems do not block your instances and badly behaving peers are closed if they do not unblock in the socket-timeout interval (default 4 seconds).
uWSGI 2.0 has support for pluggable protocols. The following protocols are supported and all of them have been updated for better performance:
uWSGI 2.0 introduces a blast of new ways for reloading instances.
See also
TheArtOfGracefulReloading
It is pretty fun (and easy) to write uWSGI plugins, but (funnily enough) the worst aspect was building them, as dealing with build profiles, cflags, ldflags and friends tend to lead to all sorts of bugs and crashes.
A simplified (and saner) build system for external plugins has been added. Now you only need to call the uwsgi binary you want to build the plugin for:
uwsgi --build-plugin <plugin>
where <plugin> is the directory where the plugin sources (and the uwsgiplugin.py file) are stored.
See also
while having the freedom of defining custom options in uWSGI config files is a handy features, sometimes typos will bring you lot of headaches.
Adding –strict to your instance options will instruct uWSGI config parser to raise an error when not-available options have been specified.
If you are in trouble and want to be sure you did not have written wrong options, add –strict and retry
Yes, you can now build and run uWSGI on Windows systems :(