I am happy to announce the new development version of ngx_openresty,
Special thanks go to all our contributors and users for helping make this
Below is the complete change log for this release, as compared to the last
(devel) release, 18.104.22.168:
* upgraded LuaNginxModule to 0.7.7.
* feature: added ngx.req.start_time() to return the request
starting time in seconds (the milliseconds part is the
decimal part just as in ngx.now). thanks Matthieu Tourne for
* feature: setting ngx.status or calling ngx.exit(N) (where "N
>= 300") after sending out response headers no longer yields
a Lua exception but only leaves an error message in the
error.log file, which is useful for Lua land debugging.
thanks Matthieu Tourne for requesting this.
* feature: the user can now call ngx.exit(444) to abort
pending subrequests in other "light threads" from within a
* feature: added new dtrace static probe
* bugfix: ngx.location.capture and ngx.location.capture_multi
might hang infinitely because the parent request might not
be waken up right after the first time the "post_subrequest"
callback was called.
* bugfix: the "light thread" object created by
ngx.thread.spawn() or ngx.on_abort() might be prematurely
collected by the Lua GC because we did not correctly
register its coroutine object into the Lua regsitry table.
this bug may crash the Lua VM and Nginx workers under load.
thanks Zhu Dejiang for reporting this issue.
* bugfix: ngx.thread.wait() might hang infinitely when more
than 4 user "light threads" are created in the same request
handler due to the incorrect use of "ngx_array_t" for
"ngx_list_t". thanks Junwei Shi for reporting this issue.
* bugfix: when a user coroutine or user "light thread" dies
with an error, our Lua backtrace dumper written in C may
access one of its dead parent threads (if any) which could
lead to segmentation faults.
* bugfix: ngx.exit(N) incorrectly threw out Lua exceptions
when "N" was 408, 499, or 444 and the response header was
already sent. thanks Kindy Lin for reporting this issue.
* bugfix: when the user callback function registered by
ngx.on_abort() discarded the client abort event, the request
would be aborted by force when the next client abort event
* bugfix: an English typo in the error message for
* applied slab_alloc_no_memory_as_info.patch to lower the log
level of the error message "ngx_slab_alloc() failed: no memory"
from "crit" to "info".
* bugfix: the upstream_pipelining patch introduced a regression
that when "upstream_next" is in action, Nginx might hang. thanks
Kindy Lin for reporting this issue.
* bugfix: include the latest chagnes in the LuaJIT 2.0 git
repository (up to git commit 2ad9834d).
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 been running extensive testing on our Amazon EC2 test cluster and
ensure that all the components (including the Nginx core) play well
together. The latest test report can always be found here: