[ANN] OpenResty 220.127.116.11 released
Yichun Zhang (agentzh)
agentzh at gmail.com
Fri Dec 25 06:39:15 UTC 2015
I am happy to announce the new formal release, 18.104.22.168, 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.id(),
ngx.timer.running_count(), ngx.redirect(uri, 307), and etc.
Changes since the last (formal) release, 22.214.171.124:
* upgraded the Nginx core to 1.9.7.
* see the changes here: <http://nginx.org/en/CHANGES>
* "./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
* 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
ngx.worker.id() 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
* 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
* 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
* 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.
More information about the nginx