OpenResty 1.7.7.2 released

Hi folks!

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

http://openresty.org/#Download

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 (1.7.7.1):

  • bundled the “resty” command-line utility (version 0.01) from the
    resty-cli project: GitHub - openresty/resty-cli: Fancy command-line utilities for OpenResty

    • 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
      “–valgrind-opts=OPTS”.

  • 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
      though).

    • 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
      ngx.location.capture*.

  • 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
      report.

    • 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
      “NGX_BUSY”.

  • 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:
    Tags · openresty/luajit2 · GitHub

    • 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
        parser.

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

      • bugfix: x86: fix argument checks for “ipairs()”
        iterator.

      • bugfix: gracefully handle “lua_error()” for a suspended
        coroutine.

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

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

      • 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
        interpreter.

      • 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:

http://openresty.org/#ChangeLog1007007

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:

http://openresty.org/

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:

http://qa.openresty.org

And we have always been running the latest OpenResty in CloudFlare’s
global CDN network for years.

Enjoy!
-agentzh

​There are many great new features.
Why “lua” has not been updated ???

“lua 5.3” output only “lua 5.1” supported the cause ??​

2015-02-05 0:22 GMT+02:00 Yichun Z. (agentzh) [email protected]:

Hello!

On Thu, Feb 5, 2015 at 12:47 AM, Batuhan Göksu wrote:

There are many great new features.
Why “lua” has not been updated ???

By default, OpenResty uses LuaJIT, which is actively updated upon
almost every new OpenResty release.

The bundled standard Lua interpreter is only used when you explicitly
disable LuaJIT by configuring with the --with-lua51 option (default
off). And yeah, we can only use the standard Lua interpreter in its
official 5.1 release series because Lua 5.2 and 5.3 are incompatible
languages than 5.1 and have incompatible ABI and API as well. See the
following comment for more details (it was about Lua 5.2 but also
applied equally well to Lua 5.3 and beyond):

https://github.com/openresty/lua-nginx-module/issues/343#issuecomment-36442169

FWIW, LuaJIT implements the Lua 5.1 language as well as some
compatible Lua 5.2 features which can be enabled by the user by
specifying the

--with-luajit-xcflags='-DLUAJIT_ENABLE_LUA52COMPAT'

./configure option while building OpenResty.

Regards,
-agentzh