[ANN] OpenResty released

Yichun Zhang (agentzh) agentzh at gmail.com
Sat Jun 7 23:17:50 UTC 2014

Hi folks!

I am happy to announce the new formal release,, of the OpenResty bundle:


Special thanks go to all our contributors for making this happen!

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

 *   upgraded the Nginx core to 1.7.0.

     *   see the changes here: <http://nginx.org/en/CHANGES>

 *   feature: bundled new Lua library, the lua-resty-lrucache library, which
     is also enabled by default. see
     https://github.com/openresty/lua-resty-lrucache#readme for more
     details. thanks Shuxin Yang for the help.

 *   upgraded LuaJIT to v2.1-20140607:

     *   imported Mike Pall's latest bug fixes and features:

         *   Fix frame traversal while searching for error function.

         *   Fix FOLD rule for STRREF of SNEW.

         *   FFI: Fix recording of indexing a struct pointer ctype
             object itself.

         *   FFI: Another fix for cdata equality comparisons.

         *   Fix FOLD rule for "string.sub(s, ...) == k".

         *   x86: Fix code generation for unused result of

         *   x64: Workaround for MSVC build issue.

         *   PPC: Fix red zone overflow in machine code generation.

         *   Fix compatibility issues with Illumos. Thanks to Theo

         *   Add PS Vita port. Thanks to Anton Stenmark.

     *   disabled trace stitching by default for now since it may
         trigger random lua stack corruptions when using with

     *   feature: jit.dump: output Lua source location after every

     *   feature: added internal memory-buffer-based trace
         entry/exit/start-recording event logging, mainly for
         debugging bugs in the JIT compiler. it requires
         "-DLUA_USE_TRACE_LOGS" when building.

     *   feature: save "g->jit_base" to "g->saved_jit_base" before
         "lj_err_throw" clears "g->jit_base" which makes it
         impossible to get Lua backtrace in such states.

 *   upgraded the lua-resty-core library to 0.0.7.

     *   feature: implemented ngx.req.set_header() (partial:
         table-typed values not yet supported) and
         ngx.req.clear_header() with FFI in the resty.core.request

     *   feature: implemented shdict:flush_all() with FFI in the

     *   feature: implemented ngx.req.set_method() with FFI in

     *   feature: implemented ngx.req.get_method() with FFI in

     *   feature: implemented ngx.time() with FFI in resty.core.time.

     *   feature: implemented ngx.req.start_time with FFI in

     *   feature: implemented ngx.now() with FFI in resty.core.time.

 *   upgraded the ngx_lua module to 0.9.8.

     *   bugfix: the ngx.ctx table might be released prematurely when
         ngx.exit() was used to generate the response header. thanks
         Monkey Zhang for the report. now we always release ngx.ctx
         in our request pool cleanup handler.

     *   bugfix: we did not call our coroutine cleanup handlers right
         after our coroutine completes (either successfully or
         unsuccessfully) otherwise segmentation fault might happen
         when the Lua VM throws out unexpected exceptions like
         "attempt to yield across C-call boundary". thanks Lipin
         Dmitriy for the report.

     *   bugfix: nginx does not guarentee the parent pointer of the
         rbtree root is meaningful, which could lead to inifinite
         loops when the ngx_lua module tried to abort pending timers
         prematurely (upon worker exit). thanks pengqi for the

     *   bugfix: ngx.req.set_method(): we incorrectly modified
         "r->method" when the method ID was wrong.

     *   bugfix: rewrite_by_lua* and access_by_lua* will now
         terminate the current request if the response header has
         already been sent (via calls like ngx.say and
         ngx.send_headers) at that point. thanks yaronli and Sophos
         for the report.

     *   bugfix: issues in the error handling for pure C API
         functions for shared dict. thanks Xiaochen Wang.

     *   feature: now we save the original pattern string pointer
         value into our "ngx_http_lua_regex_t" C struct, to help
         runtime regex profiling and debugging.

     *   feature: allow use of 3rd-party pcre bindings in
         init_by_lua*. thanks ikokostya for the feature request.

     *   feature: added pure C API functions to support the new
         FFI-based Lua API implemented in the lua-resty-core library.

     *   feature: make use of the new shm API in nginx 1.5.13+ to
         suppress the "no memory" error logging when the shared
         dictionaries run out of memory.

     *   feature: added C macro "NGX_LUA_ABORT_AT_PANIC" to allow
         generating a core dump when the Lua VM panics.

 *   upgraded the ngx_srcache module to 0.27.

     *   bugfix: we used to skip all the output header and body
         filters run before our filters (which unfortunately bypassed
         the standard ngx_http_not_modified_filter_module, for
         example). thanks Lloyd Zhou for the report.

     *   feature: added new config directive srcache_store_ranges for
         storing 206 Partial Content responses generated by the
         standard ngx_http_range_filter_module.

 *   bugfix: updated the dtrace patch because systemtap 2.5 no longer
     accepts the "-xnolib" option in its dtrace utility.

 *   removed our bundled version of "ngx_http_auth_request_module"
     because recent versions of the nginx core already have it.
     thanks LazyZhu for the report.

 *   bugfix: applied our patch for the nginx core to fix the long
     standing memory fragmentation issue for blocks larger than the
     page size in the nginx slab allocator:
thanks Shuxin Yang for the help.

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


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


We have run extensive testing on our Amazon EC2 test cluster and
ensured that all the components (including the Nginx core) play well
together. The latest test report can always be found here:



More information about the nginx mailing list