lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Hi folks

I am happy to announce the new formal release,, of the
OpenResty web platform based on NGINX and Lua:

Both the (portable) source code distribution and the Win32 binary
distribution are provided there.

Special thanks go to all our contributors and users around the globe.

This is the first OpenResty formal version based on the NGINX 1.9.7 core.

One highlight of this version is the reduction of in-pool memory
allocations in the cosocket implementation to support long-running
requests (like C2000K in a single box, as tested by one of our team members).

Also we include various small features like,
ngx.worker.count(), ngx.timer.pending_count(),
ngx.timer.running_count(), ngx.redirect(uri, 307), and etc.

Changes since the last (formal) release,

 *   upgraded the Nginx core to 1.9.7.

     *   see the changes here: <>

 *   "./configure": now we automatically set the environment
     "MACOSX_DEPLOYMENT_TARGET" to the current Mac OS X version
     (unless the environment is already set) to ensure the LuaJIT
     build uses the current versions of the system libraries. thanks
     bsyk for the report.

 *   win32: use Windows line breaks in the "resty" script file of the
     binary distribution.

 *   win32: upgraded pcre to 8.38 and openssl to 1.0.2e.

 *   win32: enabled ngx_http_realip_module, ngx_http_addition_module
     ngx_http_sub_module, and ngx_http_stub_status_module in the
     win32 binary package by default.

 *   upgraded the ngx_lua module to 0.9.20.

     *   feature: added new API functions ngx.worker.count() and for returning the total count of nginx
         worker processes and the ordinal number (0, 1, 2, and etc)
         of the current worker. thanks YuanSheng Wang for the patch.
         also added pure C API for them.

     *   feature: added new API functions ngx.timer.pending_count()
         and ngx.timer.running_count(). thanks Simon Eskildsen for
         the patch.

     *   feature: added new config directive
         access_by_lua_no_postpone. thanks Delta Yeh for the patch.

     *   feature: added new constant "ngx.HTTP_TEMPORARY_REDIRECT"
         (307) and support for 307 in ngx.redirect(). thanks RocFang
         for the patch.

     *   feature: added new API function ngx.req.is_internal() for
         testing if the current request is an internal request.
         thanks Ruoshan Huang for the patch.

     *   feature: added many more HTTP status constants as
         "ngx.HTTP_XXX". thanks Vadim A. Misbakh-Soloviov for the

     *   bugfix: bogus "nginx.conf" parse failure "Lua code block
         missing the "}" character" might happen when there are many
         Lua code blocks inlined. thanks Andreas Lubbe for the

     *   bugfix: bogus "subrequests cycle" errors might occur with
         nginx 1.9.5+ due to the recent changes in the nginx core.

     *   bugfix: ngx.req.get_uri_args/ngx.req.get_post_args: avoided
         allocating a zero-size buffer in the nginx memory pool since
         it might cause problems. thanks Chuanwen Chen for the report
         and patch.

     *   bugfix: modifying the built-in header "X-Forwarded-For" via
         ngx.req.set_header() or ngx.req.clear_header() might not
         take effect in some parts of the nginx core (like
         $proxy_add_x_forwarded_for). thanks aviramc for the patch.

     *   bugfix: we lacked detailed context info in error messages
         due to use of disabled Lua API in body_filter_by_lua*.
         thanks Dejiang Zhu for the patch.

     *   bugfix: fixed a potential data alignment issue in the
         ngx.var setter API.

     *   bugfix: we had data alignment issues in the subrequest API
         which can explode on systems like ARM. thanks Stefan Parvu
         for providing the test environment.

     *   bugfix: there was a data alignment issue in the
         tcpsock:setkeepalive() implementation which might lead to
         crashes on ARM systems. thanks Stefan Parvu for the report.

     *   bugfix: fixed C compiler warnings "comparison between signed
         and unsigned integer expressions" on Windows.

     *   optimize: avoided allocating in the nginx request memory
         pool in stream-typed cosockets' receive*() methods. thanks
         Lourival Vieira Neto for the patch.

     *   optimize: reduced memory allocations in stream-typed
         cosockets. thanks Dejiang Zhu for the patch.

         *   avoided allocating the host name buffer when getting
             peers from the connection pool.

         *   recycled the stream cosockets' request cleanup records.

     *   doc: documented the minimum size threshold in
         lua_shared_dict. thanks mlr3000 for the original patch.

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

     *   Makefile: added support for relative paths in "LUA_LIB_DIR".

     *   minor code adjustments from Aapo Talvensaari.

 *   upgraded the ngx_headers_more module to 0.29.

     *   bugfix: changing the built-in header "X-Forwarded-For" via
         more_set_input_headers or more_clear_input_headers might not
         take effect in some parts of the nginx core (like

 *   upgraded the lua-resty-redis library to 0.22.

     *   tweaked Makefile to allow relative paths in "LUA_LIB_DIR"
         when "DESTDIR" is not specified.

     *   optimize: moved string concatenation for the Redis request
         construction onto the C land (taking advantage of the
         feature that cosockets' send method accepts a table of
         strings). thanks Dejiang Zhu for the patch.

     *   optimize: minor optimizations from Aapo Talvensaari.

 *   upgraded resty-cli to 0.05.

     *   bugfix: resty: nginx might report the error "The system
         cannot find the file specified" in "CreateFile()" on Windows
         XP. thanks cover_eye for the report.

 *   upgraded LuaJIT to v2.1-20151219:

     *   Makefile: ensure we always install the symbolic link for the
         "luajit" file.

     *   imported Mike Pall's latest changes:

         *   FFI: Fix SPLIT pass for CONV i64.u64.

         *   x64 LJ_GC64: Fix stack growth in vararg function setup.

         *   DynASM/x86: Add rdpmc instruction.

         *   OSX: Switch to Clang as the default compiler.

         *   iOS: Disable os.execute() when building for iOS >= 8.0.

         *   x86/x64: Disassemble AVX AVX2 instructions.

         *   DynASM/x86: Add AVX and AVX2 opcodes.

         *   DynASM/x86: Add AES-NI opcodes.

         *   DynASM/x86: Restrict shld/shrd to operands with same

         *   DynASM/x86: Fix some SSE instruction templates.

         *   Fix pairs() recording.

         *   FFI: Fix ipairs() recording.

         *   Drop marks from replayed instructions when sinking.

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 platform
by bundling the standard Nginx core, Lua/LuaJIT, 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:


And Merry Christmas if you celebrate it.

Best regards,