[ANN] OpenResty released

Yichun Zhang (agentzh) agentzh at gmail.com
Wed Feb 4 22:22:58 UTC 2015

Hi folks!

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


The highlights of this release are

1. the SSL/TLS support in the websocket client of lua-resty-websocket.

2. an enhanced version of "resty" command-line utility supporting user
command-line arguments and some more handy options.

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

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

 *   bundled the "resty" command-line utility (version 0.01) from the
     resty-cli project: https://github.com/openresty/resty-cli

     *   bugfix: the resty utility could not start when the nginx was
         built with "./configure --conf-path=PATH" where "PATH" was
         not "conf/nginx.conf". thanks Zhengyi Lai for the report.

     *   feature: added support for user-supplied arguments which the
         user Lua scripts can access via the global Lua table "arg",
         just as in the "lua" and "luajit" command-line utilities.
         thanks Guanlan Dai for the patch.

     *   feature: added new command-line option "--nginx=PATH" to
         allow the user to explicitly specify the underlying nginx
         executable being invoked by this script. thanks Guanlan Dai
         for the patch.

     *   feature: added support for multiple "-I" options to specify
         more than one user library search paths. thanks Guanlan Dai
         for the patch.

     *   feature: print out resty's own version number when the -V
         option is specified.

     *   feature: resty: added new options "--valgrind" and

 *   upgraded the ngx_set_misc module to 0.28.

     *   feature: added the set_base32_alphabet config directive to
         allow the user to specify the alphabet used for base32
         encoding/decoding. thanks Vladislav Manchev for the patch.

     *   bugfix: set_quote_sql_str: we incorrectly escaped 0x1a to
         "\z" instead of "\Z".

     *   change: the old set_misc_base32_padding directive is now
         deprecated; use set_base32_padding instead.

 *   upgraded the ngx_lua module to 0.9.14.

     *   bugfix: ngx.re.gsub/ngx.re.sub incorrectly swallowed the
         character right after a 0-width match that happens to be the
         last match. thanks Guanlan Dai for the patch.

     *   bugfix: tcpsock:setkeepalive(): we did not check "NULL"
         connection pointers properly, which might lead to
         segmentation faults. thanks Yang Yue for the report.

     *   bugfix: ngx.quote_str_str() incorrectly escaped "\026" to
         "\z" while "\Z" is expected. thanks laodouya for the
         original patch.

     *   bugfix: ngx.timer.at: fixed a small memory leak in case of
         running out of memory (which should be extremely rare

     *   optimize: minor optimizations in timers.

     *   feature: added the Lua global variable "__ngx_cycle" which
         is a lightuserdata holding the current "ngx_cycle_t"
         pointer, which may simplify some FFI-based Lua extensions.

     *   doc: added a warning for the "share_all_vars" option for

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

     *   bugfix: resty.core.regex: data corruptions might happen when
         recursively calling ngx.re.gsub via the user replacement
         function argument because of incorrect reusing a globally
         shared captures Lua table. thanks James Hurst for the

     *   bugfix: ngx.re.gsub: garbage might get injected into gsub
         result when "ngx.*" API functions are called inside the user
         callback function for the replacement. thanks James Hurst
         for the report.

     *   feature: resty.core.base: added the "FFI_BUSY" constant for

 *   upgraded the lua-resty-lrucache library to 0.04.

     *   bugfix: resty.lrucache.pureffi: set(): it did not update to
         the new value at all if the key had an existing value
         (either stale or not). thanks Shuxin Yang for the patch.

 *   upgraded the lua-resty-websocket library to 0.05.

     *   feature: resty.websocket.client: added support for SSL/TLS
         connections (i.e., the "wss://" scheme). thanks Vladislav
         Manchev for the patch.

     *   doc: mentioned the bitop library dependency when using the
         standard Lua 5.1 interpreter (this is not needed for LuaJIT
         because it is already built in). thanks Laurent Arnoud for
         the patch.

 *   upgraded LuaJIT to v2.1-20150120:

     *   imported Mike Pall's latest changes:

         *   bugfix: don't compile "IR_RETF" after "CALLT" to ff with
             side effects.

         *   bugfix: fix "BC_UCLO"/"BC_JMP" join optimization in Lua

         *   bugfix: fix corner case in string to number conversion.

         *   bugfix: x86: fix argument checks for "ipairs()"

         *   bugfix: gracefully handle "lua_error()" for a suspended

         *   x86/x64: Drop internal x87 math functions. Use libm

         *   x86/x64: Call external symbols directly from interpreter
             code. (except for ELF/x86 PIC, where it's easier to use

         *   ARM: Minor interpreter optimization.

         *   x86: Minor interpreter optimization.

         *   PPC/e500: Drop support for this architecture.

         *   MIPS: Fix excess stack growth in interpreter.

         *   PPC: Fix excess stack growth in interpreter.

         *   ARM: Fix excess stack growth in interpreter.

         *   ARM: Fix write barrier check in "BC_USETS".

         *   ARM64: Add build infrastructure and initial port of

         *   OpenBSD/x86: Better executable memory allocation for
             W^X mode.

 *   bugfix: the "ngx_http_redis" module failed to compile when the
     "ngx_gzip" module was disabled. thanks anod221 for the report.

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, 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 we have always been running the latest OpenResty in CloudFlare's
global CDN network for years.


More information about the nginx mailing list