[ANN] ngx_openresty devel version released

agentzh agentzh at gmail.com
Sat Jun 16 03:49:50 UTC 2012

Hi, folks!

After more than one week's active development, I'm happy to announce
that the new development version of ngx_openresty,, is now


Below is the change log for this release, as compared to the last release,

 *   upgraded LuaNginxModule to 0.5.0rc32.

     *   bugfix: header_filter_by_lua and its friend would leak
         memory when it is the only directive of LuaNginxModule
         configured in a location and the ngx.ctx API is also used

     *   bugfix: Lua global variables was dangerously shared by all
         the concurrent requests if the special "_G" table was used
         in all those *_by_lua and *_by_lua_file directives. thanks
         chaoslawful for the patches. but please also note that "_G"
         is still shared among all the requests if used in the
         context of Lua modules, just like all those Lua module level

     *   bugfix: the ngx.arg API was not usable within external Lua
         module files in set_by_lua or set_by_lua_file.

     *   bugfix: unexpected values on the Lua stack might be
         concatenated when generating tracebacks for Lua errors and
         the Lua VM would crash when there happened to be values on
         the Lua stack that could not be concatenated (like "nil").

     *   bugfix: the Lua main thread stack might leak when
         header_filter_by_lua or header_filter_by_lua_file are used.

     *   bugfix: the Lua VM might crash when calling the cosocket
         methods with a bad-typed "self" argument.

     *   bufix: fixed the directive context for set_by_lua and
         set_by_lua_file. they really work in the contexts "server",
         "server if", "location", and "location if". thanks Liu

     *   feature: added new directives log_by_lua and log_by_lua_file
         to support user Lua code running at the "log" request
         processing phase. thanks Matthieu Tourne for the patches.

     *   feature: added new directives body_filter_by_lua and
         body_filter_by_lua_file to allow the user implement nginx
         output body filters in pure Lua.

     *   feature: added support for loading Lua/LuaJIT raw bytecode
         files automatically in all those *_by_lua_file config
         directives. thanks jinglong and chaoslawful for the patches.
         benchmark results have shown that, for very big Lua-based
         web applications, bytecode loading gives an order of
         magnitude speedup at first requests that trigger the Lua
         code loading.

     *   feature: added new directive
         lua_transform_underscores_in_response_headers. thanks Kindy

     *   optimize: now we no longer register the "ndk" and "ngx" API
         for set_by_lua* and header_filter_by_lua* at config time
         rather than request time. this makes these directives 200+%

     *   optimize: eliminated unnecessary string concatenations when
         generating tracebacks for Lua errors.

     *   optimize: now we store the metatables for ngx.req.socket()
         and ngx.socket.tcp() objects into the Lua registry.

     *   optimize: changed the string keys to light userdata for
         various tracking tables (coroutines table, regex cache
         table, cosocket connection pool table, ngx.ctx table, and
         etc). This gives minor performance improvement from
         eliminating key hashing and etc. thanks Dirk Feytons.

     *   diagnosis: now we issue user-friendly error messages when
         the Nginx Lua APIs are used in the wrong configure directive
         contexts (e.g., using ngx.location.capture in set_by_lua).

     *   docs: fixed a typo: ngx.now returns time of the resolution
         of milliseconds, rather than microseconds. thanks Wang Xi.

     *   docs: added a note for installation with Lua 5.1 on ubuntu
         11.10. thanks Dan Sosedoff.

 *   updated nginx-1.0.15-poll_del_event_at_exit.patch. thanks Maxim

The HTML version of the change log with lots of useful hyper-links can
be browsed here:


Special thanks go to all our contributors and users for helping make this
happen :)

OpenResty (aka. ngx_openresty) is a full-fledged web application server by
bundling the standard Nginx core, lots of 3rd-party Nginx modules, as well
as most of their external dependencies. See OpenResty's homepage for more



More information about the nginx mailing list