Hi folks,
I've just kicked out OpenResty 1.11.2.2 RC1 for testing:
https://openresty.org/download/openresty-1.11.2.2rc1.tar.gz
PGP for this source tarball:
https://openresty.org/download/openresty-1.11.2.2rc1.tar.gz.asc
Win32 version:
https://openresty.org/download/openresty-1.11.2.2rc1-win32.zip
PGP for the Win32 zip file:
https://openresty.org/download/openresty-1.11.2.2rc1-win32.zip.asc
The highlights of this release are:
1. Includes new package management tool, opm, for community
contributed OpenResty packages (only Lua libraries for now, may add
support for dynamic nginx C modules in the future as well). See below
for more details on opm:
https://github.com/openresty/opm#readme
https://opm.openresty.org/
We maintain our own central package server at opm.openresty.org. As of
this writing, we already have 97 successful uploads across 67 distinct
package names from 22 contributors. Come on, OPM authors!
2. The memory footprint of nginx worker processes is now much smaller
(as compared to the previous few OpenResty releases) after traffic
peak (via the new lua_malloc_trim directive of ngx_http_lua_module).
See
https://github.com/openresty/lua-nginx-module#lua_malloc_trim
3. Includes new Lua library lua-resty-limit-traffic, which is the
Lua-land equivalent of nginx's ngx_limit_conn and ngx_limit_req
modules, but much more flexible and can be used in any request or
timer contexts that can yield. See below for more details:
https://github.com/openresty/lua-resty-limit-traffic#readme
4. Cosockets can now set different timeout threshold values for
connect, send, and read at the same time:
https://github.com/openresty/lua-nginx-module#tcpsocksettimeouts
5. New split() API function that supports Perl-compatible regexes in
the new ngx.re Lua module.
Complete change logs since the last (formal) release, 1.11.2.1:
* feature: added new command-line utility, opm, for managing
community contributed OpenResty packages.
* win32: upgraded OpenSSL to 1.0.2j.
* win32: enabled http v2, http addition, http gzip static, http
sub, and several other standard nginx modules by default.
* updated the help text of "./configure --help" to sync with the
new nginx 1.11.2 core.
* "make install": now we also create directories
"<prefix>/site/pod/" and "<prefix>/site/manifest/".
* doc: updated README-win32.md to reflect recent changes.
* added new component, lua-resty-limit-traffic, which is enabled
by default and can be explicitly disabled via the
"--without-lua_resty_limit_traffic" option of the "./configure"
script during build.
* upgraded ngx_lua to 0.10.7.
* feature: added a new api function
"tcpsock:settimeouts(connect_timeout, send_timeout,
read_timeout)". thanks Dejiang Zhu for the patch.
* feature: added public C API for 3rd-party NGINX C modules to
register their own shm-based data structures for the Lua
land usage (that is, to create custom siblings to
lua_shared_dict). thanks helloyi and Dejiang Zhu for the
patches.
* feature, bugfix: added new config directive "lua_malloc_trim
N" to periodically call malloc_trim(1) every "N" requests
when "malloc_trim()" is available. by default,
"lua_malloc_trim 1000" is configured. this should fix the
glibc oddity of holding too much freed memory when it fails
to use "brk()" to allocate memory in the data segment.
thanks Shuxin Yang for the proposal.
* bugfix: segmentation faults might happen when ngx.exec() was
fed with unsafe URIs. thanks Jayce LiuChuan for the patch.
* bugfix: ngx.req.set_header(): skips setting multi-value
headers for bad requests to avoid segfaults. thanks Emil
Stolarsky for the patch.
* change: ssl_session_fetch_by_lua* and
ssl_session_store_by_lua* are now only allowed in the "http
{}" context. use of these session hooks in the "server {}"
scope did not make much sense since server name dispatch
happens *after* ssl session resumption anyway. thanks
Dejiang Zhu for the patch.
* optimize: optimized the lua_shared_dict node struct memory
layout which can save 8 bytes for every key-value pair on
64-bit systems, for example.
* doc: log level constants are also available in init_by_lua*
and init_worker_by_lua* contexts. thanks kraml for the
report and detailyang for the patch.
* doc: documented the support of 307 status argument value in
ngx.redirect().
* doc: use "*_by_lua_block {}" in all the configuration
examples. thanks pj.vegan for the patch.
* doc: documented how to easily test the
ssl_session_fetch_by_lua* and ssl_session_store_by_lua*
locally with a modern web browser.
* upgraded lua-resty-core to 0.1.9.
* feature: implemented the split() method in the ngx.re
module.
* optimize: resty.core.shdict: removed one unused top-level
Lua variable.
* upgraded ngx_headers_more to 0.32.
* bugfix: more_set_input_headers: skips setting multi-value
headers for bad requests to avoid segfaults.
* upgraded lua-resty-redis to 0.26.
* optimize: hmset: use "select" to avoid creating temporary
Lua tables and to be more friendly to LuaJIT's JIT compiler.
thanks spacewander for the patch.
* upgraded lua-resty-dns to 0.18.
* optimize: removed unused local Lua variables. thanks Thijs
Schreijer for the patch.
* change: stops seeding the random generator. This is user's
responsibility now. thanks Thijs Schreijer for the patch.
* upgraded lua-resty-mysql to 0.17.
* bugfix: fixed the Lua exception "attempt to perform
arithmetic on local len (a boolean value)". thanks Dmitry
Kuzmin for the report.
* doc: renamed the "errno" return value to "errcode" for
consistency. thanks Soojin Nam for the patch.
* upgraded lua-resty-websocket to 0.06.
* optimize: minor code optimizations and cleanups from Aapo
Talvensaari.
* doc: fixed copy&paste mistakes found by rock59.
* upgraded lua-resty-upload to 0.10.
* feature: the "new()" method now accepts an optional 2nd arg
to configure the max line size.
* optimize: use the $http_content_type nginx built-in variable
instead of "ngx.req.get_headers()["content-type"]". thanks
Soojin Nam for the patch.
* optimize: minor optimization from Will Bond.
* optimize: various minor optimizations and cleanups from
Soojin Nam, Will Bond, Aapo Talvensaari, and hamza.
* upgraded resty-cli to 0.14.
* feature: resty: forwarded more UNIX signals. thanks
Zekai.Zheng for the patch.
* feature: restydoc: added new option "-r DIR" for specifying
a custom root directory.
* feature: restydoc: added support for comment syntax, "#
...", in the "resty.index" file.
* bugfix: resty: literal single quotes led to nginx
configuration errors in -e option values. thanks spacewander
for the report.
* bugfix: restydoc-index: we did not ignore POD files in the
output directory if they are also inside the input
directory.
* upgraded LuaJIT to v2.1-20161104:
https://github.com/openresty/luajit2/tags
* imported Mike Pall's latest changes:
* LJ_GC64: Fix HREF for pointers.
* LJ_FR2: Fix slot 1 handling.
* Fix GC step size calculation.
* LJ_GC64: Fix "jit.on/off".
* Fix "-jp=a" mode for builtins.
* ARM: Fix BLX encoding for Thumb interworking calls.
* Initialize uv->immutable for upvalues of loaded chunks.
* Windows/x86: Add MSVC flags for debug build with
exception interop.
* Fix exit status for "luajit -b".
* Must preserve "J->fold.ins" (fins) around call to
"lj_ir_ksimd()".
* Emit bytecode in .c/.h files with unsigned char type.
* Set arg table before evaluating "LUA_INIT" and "-e"
chunks.
* Fix for cdata vs. non-cdata arithmetics/comparisons.
* Fix unused vars etc. in internal Lua files.
* Properly clean up state before restart of trace
assembly.
* Drop leftover regs in 'for' iterator assignment, too.
* MIPS: Support MIPS16 interlinking.
* x64/LJ_GC64: Fix code generation for IR_KNULL call
argument.
* Fix PHI remarking in SINK pass.
* LJ_GC64: Set correct nil value when clearing a cdata
finalizer.
* LJ_GC64: Ensure all IR slot fields are initialized.
* LJ_GC64: Allow optional use of the system memory
allocator.
* Fix Valgrind suppressions.
* Don't try to record outermost "pcall()" return to lower
frame.
* MIPS: Fix build failures and warnings.
* Proper fix for LJ_GC64 changes to "asm_href()".
* MIPS64, part 1: Add MIPS64 support to interpreter.
* DynASM/MIPS: Add missing MIPS64 instructions.
* x64/LJ_GC64: Fix "__call" metamethod for tailcall.
* Fix collateral damage from LJ_GC64 changes to
asm_href().
* Use MAP_TRYFIXED for the probing memory allocator, if
available.
* x86: Don't spill an explicit REF_BASE in the IR.
* x64/LJ_GC64: Add missing backend support and enable JIT
compilation.
* LJ_FR2: Add support for trace recording and snapshots.
* Embed 64 bit constants directly in the IR, using two
slots.
* Simplify GCtrace * reference embedding for trace
stitching.
* Make the IR immovable after assembly.
* Add guard for obscure aliasing between open upvalues and
SSA slots.
* Workaround for MinGW headers lacking some exception
definitions.
* Remove assumption that lj_math_random_step() doesn't
clobber FPRs.
Feedback welcome!
Thanks!
Best regards,
-agentzh