Hi everyone, the second release candidate of uWSGI 1.3 is available.

This release contains a lot of optimizations and an infinite series of
code refactoring (we had functions with more than 400 lines written 3
years ago...).

A couple of plugins and features have been added, see below.

Changelog 1.3-rc2 (20120901)

* the mongrel2 response generator now uses the new uwsgi_buffer structure
for storing headers. This will generate a single zeromq message for all of
the headers.

* uwsgi.cache_get on remote server for non-existent keys no more spit out
useless errors

* NEW PLUGIN: router_http (compiled-in by default)

works in the same way of the uwsgi one but forward requests to an http
server. The uwsgi original request is translated to an http proxy request
(adding specific headers like X-Forwarded-For)

* NEW OPTIONS for config logic : --if-opt --if-not-opt

works like --if-env but check for a previously defined uWSGI option

* NEW FEATURE: --if-env (and --if-opt) can compare values:

Example:

if-env = USER=root
    http-socket = :80
endif =

* NEW OPTION/FEATURE: --spooler-external <path>

You can map spooler tasks to the directory managed by an external spooler.

You could abuse that feature for building a centralized (per-server) spooler
where multiple apps can write.

As the --spooler option, you can have all of the --spooler-external
options, and you can mix them with --spooler one.

An example of mixing them would be having a 'local spooler' for
app-specific tasks and a series of 'external spoolers' for services
supplied by your ISP (A company may want to serve predefined spoolers for
things like image processing or video encoding)

* removed (broken) option --regexp-mount. If you want to map specific
request to specific apps, use the internal routing subsystem.

* NEW FEATURE: added cpu affinity to FreeBSD systems

works like the Linux one, if you have 4 processors and want to map each of
them to one of your 4 workers, use --cpu-affinity 1, while if you want to
map 2 core for 2 processes use --cpu-affinity 2

* various solaris/illumos/openindiana fixes

* INTERNAL CHANGE: fully-shared requests structures

From now on, the master has access to the whole memory used for storing
requests in each worker. That means (in the future) a whole new series of
real-time statistics (no work has been done in that area as it requires
dealing with tons of race conditions, and currently i have no idea on how
to manage them)

* NEW INFRASTRUCTURE: modular clocks

uWSGI 1.3 can now use multiple clock sources (you can create new clock
sources using plugins).

Currently there are 3 plugins available:

unix (uses time() and gettimeofday())
realtime (uses clock_gettime with CLOCK_REALTIME)
monotonic (uses clock_gettime with CLOCK_MONOTONIC)

the 'unix' one is the default.

Embedded-system developers can easily create new clocks optimized for
their platforms. Check the simplicity of the monotonic plugin:

http://projects.unbit.it/uwsgi/browser/plugins/clock_monotonic/clock_monotonic.c

* added support for Lua tables in the lua plugin (by Aaron B.)

* fixed fastcgi support for chunks bigger than 64k

* improvements in the gevent graceful reload subsystem

* NEW PLUGIN: router_rewrite

A stripped-down version of Apache mod_rewrite, its main purpose is dealing
with php apps requiring rewrite rules (commonly placed in .htaccess files)

* NEW PLUGIN: cheaper_busyness (by Łukasz Mierzwa)

This is an extremely advanced cheaper algorithm (cheaper algorithms are
used for adaptive process spawning) targeted at big deployments where you
want always the maximum possibile performances while having the minimum
amount of required workers.

We are lucky, as Łukasz wrote documentation for it:

http://projects.unbit.it/uwsgi/wiki/CheaperBusyness

* NEW OPTIONS: --list-*

You can list features loaded in your instance using --list-XXX options,
use --help to get the full list of them.

For example --list-plugins will print al of the available/loaded plugins
as well --list-routers will print all of the available routers.

* json output in stats is now human readable

* improved weighted round robin in fastrouter

* errors on request body (like the client not seding the whole body) now
reports the amount of datas received and the amount of expected datas.

* fixed linux sendfile() for files bigger than 2GB


You can download it from:

http://projects.unbit.it/downloads/uwsgi-1.3-rc2.tar.gz

Thanks for testing it

-- 
Roberto De Ioris
http://unbit.it
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to