OpenResty Scalable Web Platform by Extending NGINX with Lua

ChangeLog 1.7.0

Yichun Zhang , 07 Jun 2014 (created 01 Jun 2014)

Version 1.7.0.1 - 7 June 2014

  • upgraded the Nginx core to 1.7.0.
  • feature: bundled new Lua library, 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: https://github.com/openresty/luajit2/tags
    • imported Mike Pall's latest bug fixes and other changes:
      • 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 math.random().
      • x64: Workaround for MSVC build issue.
      • PPC: Fix red zone overflow in machine code generation.
      • Fix compatibility issues with Illumos. Thanks to Theo Schlossnagle.
      • 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 ngx_lua.
    • feature: jit.dump: output Lua source location after every BC.
    • 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 Lua Resty Core Library to 0.0.7.
  • upgraded Lua Nginx 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 Lua Nginx Module tried to abort pending timers prematurely (upon worker exit). thanks pengqi for the report.
    • 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 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 Srcache Nginx 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: http://mailman.nginx.org/pipermail/nginx-devel/2014-May/005316.html thanks Shuxin Yang for the help. See ChangeLog 1.5.12 for change log for OpenResty 1.5.12.x.