I am happy to announce the new formal release, 220.127.116.11, of the OpenResty
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, 18.104.22.168:
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,
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
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
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: