OpenResty® Scalable Web Platform by Extending NGINX with Lua

OpenResty XRay

Advanced observability built for OpenResty and more

×

limited time offer

Request TRIAL today and receive a diagnostic REPORT
Learn more
New! OpenResty 1.29.2.3 is now released!
New! OpenResty 1.27.1.2 is now released!
New! New blog post OpenResty XRay Version 26.2.1. Now Available is published.
New! New blog post What is OpenResty Edge is published.
New! New blog post Introduction to OpenResty XRay is published.

ChangeLog for 1.21.4.x

Johnny Wang , 21 Jul 2024 (created 13 May 2022)

Version 1.21.4.4 - 19 Jul 2024

  • upgraded LuaJIT to v2.1-20230410.1.
    • bugfix: disable hash computation optimization because of the possibility of severe degradation (CVE-2024-39702). This issue originates from the OpenResty LuaJIT branch. Thanks Zhongwei Yao from Kong INC. for reporting the issue, and thanks lijunlong for the patch.

Version 1.21.4.3 - 7 Nov 2023

  • bugfix: applied the patch for security advisory to NGINX cores. (CVE-2023-44487).

Version 1.21.4.2 - 19 Jul 2023

  • win32/win64: upgraded zlib to 1.2.13.

  • win32/win64: upgraded OpenSSL to 1.1.1t.

  • upgraded lua-nginx-module to v0.10.25

    • bugfix: used after free when encountering invalid http IF-Match header. Thanks lijunlong for the patch.
    • bugfix: ssl_client_hello_by_lua generating chunk cache key and chunk name. Thanks willmafh for the patch.
    • bugfix: cosocket did not exit when worker_shutdown_timeout handler is called. Thanks lijunlong for the patch.
    • feature: implement HTTP 3.0 support for ngx.req.http_version(). Thanks Yu.Zhu for the patch.
    • bugfix: fix receiveuntil rest bytes count. Thanks ZongRun for the patch.
    • bugfix: add a timed recycling child process as a last resort. Thanks lijunlong for the patch.
    • feature: add new FFI API ngx_http_lua_ffi_msec. Thanks lijunlong for the patch.
    • bugfix: did not wakeup coroutine when worker thread finished. Thanks kingluo for the patch.
    • feature: add ngx_http_lua_ffi_worker_pids to get all workers pid map. Thanks attenuation for the patch.
    • bugfix: run_worker_thread arg is self-reference. Thanks fesily for the patch.
    • feature: introduced new API tcpsock:bind(). Thanks lijunlong for the patch.
    • feature: add shdict APIs into worker thread. Thanks jinhua luo for the patch.
    • bugfix: set flags for Darwin arm64. Thanks lijunlong for the patch.
    • bugfix: improved handling of multiple headers changed in nginx 1.23.0. Thanks Hiroaki Nakamura for the patch.
    • change: increased the maximum size to 65536 for the udp datagram. Thanks lijunlong for the patch.
    • optimize: destroy pipe proc when freeing the request. Thanks lijunlong for the patch.
    • optimize: add error log when closing the pipe failed. Thanks lijunlong for the patch.
    • bugfix: fix potential null pointer dereference found by Coverity. Thanks Ilya Shipitsin for the patch.
    • optimize: fixed dead code found by Coverity. Thanks Ilya Shipitsin for the patch.
    • feature: in content_by_lua_file, return 503 for file read error. Thanks jizhuozhi for the patch.
    • bugfix: Apple Silicon FFI ABI limitation workaround. Thanks Chrono for the patch.
    • bugfix: failed to compile when nginx https is disabled. Thanks lijunlong for the patch.
    • feature: add server_rewrite_by_lua*. Thanks xiaobiaozhao for the patch.
    • cosocket: add function tcpsock:setclientcert, reimplemented tcpsock:sslhandshake with FFI. Thanks Datong Sun for the patch.
    • optimize: use ngx_hash_t to optimize the built-in header look-up process for ngx.header.HEADER. Thanks lijunlong for the patch.
    • feature: add FFI implementation for ngx.arg getter. Thanks 罗泽轩 for the patch.
    • bugfix: fixed size of the array when initialized in the init_worker_by* phase. Thanks Jiahao Wang for the patch.
    • bugfix: ambiguous error message 'connection in dubious state' when connection is closed. Thanks lijunlong for the patch.
    • bugfix: passing the wrong chunkname argument to luaL_loadbuffer. Thanks lijunlong for the patch.
    • optimize: change lua chunkname to config filename and line number for {init,header_filter,body_filter}_by_lua_block and so on. Thanks lijunlong for the patch.
    • change: the error message should use the first line rather than the last line of the code block when loading lua code block fails. Thanks lijunlong for the patch.
    • bugfix: segment fault when get header via ngx.req.raw_header with malformed requests. Thanks Gordon McKinney for the patch.
    • change: remove useless code for get old_cpath. Thanks Tinglong Yang for the patch.
    • bugfix: ngx.run_worker_thread injected API into the wrong table. Thanks jinhua luo for the patch.
    • feature: add API to fetch raw nginx SSL pointer of the downstream request. Thanks James Callahan for the patch.
    • feature: SSL/TLS: support for passphrase protected key. Thanks lijunlong for the patch.
    • feature: expose the 'Last-Modified' response header as ngx.header["Last-Modified"]. Thanks lijunlong for the patch.
    • bugfix: posted event handler was called after event memory was freed. Thanks lijunlong for the patch.
    • optimize: don't calculate hash when clearing the request header. Thanks spacewander for the patch.
    • feature: check the number of parameters for ngx.thread.wait. Thanks tan jinhua for the patch.
    • change: use nil instead of false when lpush & rpush overflow. Thanks yang.yang for the patch.
    • feature: prevent calling ngx.exit() with invalid values. Thanks Thibault Charbonnier for the patch.
    • feature: added FFI-based function ngx_http_lua_ffi_req_is_internal. Thanks chronolaw for the patch.
    • feature: added http const HTTP_NOT_IMPLEMENTED. Thanks Landon Manning for the patch.
  • upgraded stream-lua-nginx-module to v0.0.12

    • feature: introduced new API ngx_stream_lua_ffi_monotonic_msec. Thanks lijunlong for the patch.
    • feature: add CONTEXT_YIELDABLE constant to stream subsys. Thanks 罗泽轩 for the patch.
    • bugfix: wrong size for the pending timers. Thanks lijunlong for the patch.
    • feature: add ngx_stream_lua_ffi_worker_pids to get all workers pid map. Thanks attenuation for the patch.
    • bugfix: Apple Silicon FFI ABI limitation workaround. Thanks Chrono for the patch.
    • feature: SSL/TLS supports passphrase protected private key. Thanks lijunlong for the patch.
    • bugfix: posted event handler was called after event memory was freed. Thanks lijunlong for the patch.
  • upgraded lua-resty-core to v0.1.27

    • optimize: avoid NYI in the get_string_buf function. Thanks Jiahao Wang for the patch.
    • feature: implemented monotonic_msec() and monotonic_time() in resty.core.time. Thanks lijunlong for the patch.
    • bugfix: get ngx_lua_version before 'not ngx.config'. Thanks willmafh for the patch.
    • feature: add ngx.worker.pids to get all workers pid map. Thanks attenuation for the patch.
    • optimize: destroy pipe when freeing request. Thanks lijunlong for the patch.
    • optimize: localize pcall function in base.lua to improve performance. Thanks Chrono for the patch.
    • feature: implemented get_supported_versions() in clienthello phase. Thanks Attenuation for the patch.
    • bugfix: Apple Silicon FFI ABI limitation workaround. Thanks Chrono for the patch.
    • bugfix: did not get the correct error message for when require module. Thanks lijunlong for the patch.
    • feature: added support for ssl_server_rewrite_by_lua. Thanks lijunlong for the patch.
    • cosocket: add function tcpsock:setclientcert, reimplemented tcpsock:sslhandshake with FFI. Thanks Datong Sun for the patch.
    • feature: provide a way to reuse table in ngx.req.get_uri_args. Thanks 罗泽轩 for the patch.
    • feature: add FFI implementation for ngx.arg getter. Thanks 罗泽轩 for the patch.
    • optimize: localize bit.bor in clienthello.lua to improve performance. Thanks Chrono for the patch.
    • optimize: reimplemented the coroutine wrapper using the FFI API. Thanks lijunlong for the patch.
    • feature: support passphrase protected private key. Thanks lijunlong for the patch.
    • feature: reimplemented ngx.req.is_internal with LuaJIT FFI. Thanks chronolaw for the patch.
    • optimize: removed the extra return. Thanks lijunlong for the patch.
  • upgraded luajit2 to v2.1-20230119

    • Avoid negation of signed integers in C that may hold INT*_MIN.
    • Correct fix for stack check when recording BC_VARG.
    • Disable FMA by default. Use -Ofma or jit.opt.start("+fma") to enable.
    • FFI: Fix dangling reference to CType. Improve checks.
    • ARM64: Fix code generation for IR_SLOAD with typecheck + conversion.
    • Avoid assertion in case of stack overflow from stitched trace.
    • Ensure correct stack top for OOM error message.
    • ARM64: Fix IR_SLOAD assembly.
    • Fix trace join to BC_JLOOP originating from BC_ITERN.
    • bugfix: fix math.floor() and math.ceil(). Thanks Aditya Bisht for the patch.
    • Add -F option to override filename in jit.bcsave (luajit -b).
    • Patch luajit.pc with INSTALL_INC, if customized.
    • LJ_GC64: Fix lua_concat().
    • Prevent use of RTLD_DEFAULT when NO_RTLD_DEFAULT is defined.
    • Improve GC estimation for userdata with attached managed memory.
    • Add missing GC steps to string buffer methods.
    • x86/x64: Limit VLOAD fusion to simple cases.
    • OSX/iOS/ARM64: Fix generation of Mach-O object files.
    • Prevent trace start at BC_ITERL after compiled BC_ITERN.
    • ARM64: Allow building with unwinding disabled.
    • FFI: Fix sizeof expression in C parser for reference types.
    • FFI: Fix ffi.alignof() for reference types.
    • FFI: Allow ffi.metatype() for typedefs with attributes.
    • OSX/iOS/ARM64: Fix bytecode embedding in Mach-O object file.
    • LJ_GC64: Fix IR_VARG offset for fixed number of results.
    • x86/x64: Fix math.ceil(-0.9) result sign.
    • Make embedded bytecode readable and forward-compatible.
    • Update console build instructions.
    • Avoid zero-sized arrays in jit_State.
    • Don't use jit_State during build with JIT disabled.
    • DynASM/ARM64: Fix LSL/BFI* encoding with variable registers.
    • Fix ITERN loop detection when hook checks are enabled.
    • Prevent C compiler undefined-behavior optimization.
    • Fix alias analysis for table length forwarding.
    • Fix loop initialization in table.foreach().
    • LJ_GC64: Fix HREFK optimization.
    • Fix recording of __concat metamethod.
    • Cleanup of system and architecture support docs.
  • upgraded resty-cli to v0.29

    • change: save the original ngx.exit to ngx.orig_exit. Thanks lijunlong for the patch.
  • upgraded lua-cjson to 2.1.0.11

    • bugfix: empty_array can not work on Apple because cjson did not compare light userdata address with masked address. Thanks Datong Sun for the patch.
    • bugfix: windows luarocks doesn't export cjson.safe. Thanks momoterraw for the patch.
  • upgraded headers-more-nginx-module to v0.34

    • bugfix: nginx crash when accessing uninitialized pointer. Thanks lijunlong for the patch.
    • bugfix: update handling of multiple headers changed in nginx 1.23.0. Thanks Hiroaki Nakamura for the patch.
    • bugfix: fixed build error with nginx >= 1.23.0. Thanks somni for the patch.
  • upgraded lua-resty-upstream-healthcheck to v0.07

    • change: improved healthcheck status for prometheus. Thanks Jonas Badstübner for the patch.
    • bugfix: opts.host has not been assigned to ctx. Thanks yueziii for the patch.
    • feature: allowing check on different port. Thanks Franck Lombardi for the patch.
    • feature: add HTTPS health check. Thanks Yannic Rieger for the patch.
    • feature: add prometheus metrics format status. Thanks Yannic Bastian Rieger for the patch.
  • upgraded opm to v0.0.7

    • change: web: show the package installation command in the package details page. Thanks guisheng zhou for the patch.
    • bugfix: 'install_dir' should not be /usr/local/openresty/site but /usr/local/openresty/bin. Thanks lijunlong for the patch.
    • feature: web: support github login and deferred deletion. Thanks xlibor for the patch.
  • upgraded ngx_devel_kit to v0.3.2

    • change: fixed a typo in ndk_upstream_list.c. Thanks lijunlong for the patch.
  • upgraded lua-resty-lock to v0.09

    • optimize: return setmetatable is NYI. Thanks lijunlong for the patch.
  • upgraded srcache-nginx-module to v0.33

    • bugfix: update handling of cache_control changed in nginx 1.23.0. Thanks Hiroaki Nakamura for the patch.
    • change: add status code 307, 308 to the default value of srcache_store_statuses. Thanks Jérémy Lal for the patch.
  • upgraded lua-resty-websocket to v0.10

    • feature: add mtls client cert support. Thanks Qi for the patch.
    • optimize: localize some ngx.* API to improve performance. Thanks Chrono for the patch.
    • bugfix: default to port 443 for wss urls. Thanks John Regan for the patch.
  • upgraded lua-resty-lrucache to v0.13

    • optimize: remove NYI call in lurcache. Thanks lijunlong for the patch.
  • upgraded lua-resty-upload to v0.11

    • feature: add an option to preserve body. Thanks Suika for the patch.
  • upgraded lua-resty-memcached to v0.17

    • optimize: return setmetatable is NYI which can not be jit compiled. Thanks lijunlong for the patch.
    • optimize: reuse the cmd_tab to minimize the gc. Thanks lijunlong for the patch.
    • feature: implemented {init,commit,cancel}_pipeline(). Thanks syz for the patch.
    • feature: add support for connecting over TLS. Thanks Alessandro Ghedini for the patch.
  • upgraded echo-nginx-module to v0.63

    • optimize: fix potential null pointer dereference found by Coverity. Thanks Ilya Shipitsin for the patch.
    • bugfix: fix potential null pointer dereference found by Coverity. Thanks Ilya Shipitsin for the patch.
    • bugfix: fix minor issue found by Coverity in src/ngx_http_echo_subrequest.c. Thanks Ilya Shipitsin for the patch.
  • upgraded drizzle-nginx-module to v0.1.12

    • bugfix: fix potential null pointer dereference found by Coverity. Thanks Ilya Shipitsin for the patch.

Version 1.21.4.1 - 18 May 2022

  • upgraded the nginx core to 1.21.4.

  • win32/win64: upgraded zlib to 1.2.12.

  • win32/win64: upgraded OpenSSL to 1.1.1n.

  • feature: allow to be compiled with LibreSSL 3.0+. Thanks spacewander for the patch.

  • feature: add lua_ssl_conf_command directive for setting arbitrary OpenSSL configuration parameter particularly the TLSv1.3 ciphersuites. Thanks Zhefeng Chen for the patch.

  • feature: implemented the ssl_client_hello_by_lua* api for controlling the NGINX downstream SSL handshake dynamically with Lua. Thanks Zhefeng Chen for the patch.

  • feature: the number connections of privileged agent can be set by enable_privileged_agent(connections). Thanks wangyao for the patch.

  • feature: implemented the new ngx.run_worker_thread API to run Lua function in a seperated worker thread. Thanks kingluo for the patch.

  • upgraded lua-nginx-module to 0.10.21

    • bugfix: ngx.pipe waits until timeout because child process forgot to close pipe after dup2. Thanks Junlong Li for the patch.
    • bugfix: posted event handler was called after event memory was freed. Thanks Junlong Li for the patch.
    • bugfix: prevent illegal memory access in ngx_http_lua_util.c. Thanks Jiahao Wang for the patch.
    • optimize: removed superfluous code from shdict_store. Thanks Odin Hultgren Van Der Horst for the patch.
    • bugfix: fix nginx crash caused by a bad format specifier. Thanks balus for the patch.
    • bugfix: fixed memcpy param overlap detected by asan. Thanks pengyanfeng for the patch.
    • bugfix: fix possible null pointer dereference found by Coverity. Thanks doujiang24 for the patch.
    • bugfix: we should use luaL_typename() with lua stack index. Thanks balus for the patch.
    • bugfix: fixed potential leak on memory allocation errors. we have to clean just created SSL context manually, thus appropriate call added. Thanks nandsky for the patch.
    • bugfix: nginx crash when resolve an not exist domain in thread create by ngx.thread.spawn. Thanks lijunlong for the patch.
    • bugfix: should reset the value_len to 0 when reuse the expired list type key in shared dict. Thanks ngtee8 for the patch.
    • change: do not need to create the Lua request ctx data table from C. Thanks doujiang for the patch.
    • bugfix: we should ignore match limit in DFA mode. Thanks Jianyong Chen for the patch.
    • bugfix: buffer bloat and CPU 100% when download large file was filtered by body_filter_by_lua. Thanks lijunlong for the patch.
    • bugfix: fixed missing 'const' qualifier causing compilation failure on freebsd. Thanks Jiahao Wang for the patch.
    • bugfix: should not allow to create timer in the exit process phase. Thanks Jinhua Tan for the patch.
    • feature: support environ in ngx.pipe on mac. Thanks tzssangglass for the patch.
  • upgraded stream-lua-nginx-module to 0.0.11

    • bugfix: compilation failed when building without --with-stream_ssl_module. Thanks vislee for the patch.
    • bugfix: we should use luaL_typename() with lua stack index. Thanks Jianyong Chen for the patch.
    • bugfix: fixed possible null pointer dereference found by Coverity. Thanks Ilya Shipitsin for the patch.
    • bugfix: nginx crash when resolve an not exist domain. Thanks lijunlong for the patch.
    • bugfix: should reset the value_len to 0 when reuse the expired list type key in shared dict. Thanks ngtee8 for the patch.
    • bugfix: we should ignore match limit in DFA mode. Thanks balus for the patch.
    • bugfix: some lua configurations (i.e. lua_ssl_trusted_certificate) were missing in the init_worker phase. Thanks doujiang for the patch.
    • bugfix: failed to start when non-ssl server configured with ssl_certificate_by_lua* directive. Thanks Zhefeng Chen for the patch.
    • bugfix: old coroutine APIs were used in the preread and ssl_cert phase. Thanks Zhefeng Chen for the patch.
  • upgraded lua-resty-core to 0.1.23

    • bugfix: ngx.re.sub/gsub may incorrectly dropped the last character. Thanks Jianyong Chen for the patch.
    • optimize: use a new upvalue table for the ctxs holder to make LuaJIT JIT compiler happy to generate more efficient machine code. Thanks doujiang for the patch.
  • upgraded lua-resty-websocket to 0.09

    • bugfix: should abort when status code is invalid in wb:send_close(server). Thanks Gerrard-YNWA for the patch.
  • upgraded lua-resty-redis to 0.30

    • feature: add a surface to support redis module. Thanks spacewander for the patch.
  • upgraded lua-resty-limit-traffic to 0.08

    • optimize: resty.limit.conn call dict:incr with init_ttl argument. Thanks WindMGC for the patch.
  • upgraded lua-resty-mysql to 0.25

    • bugfix: fallback to default auth plugin if server doesn't have CLIENT_PLUGIN_AUTH capability. Thanks Wangchong Zhou for the patch.
  • upgraded set-misc-nginx-module to 0.33

    • feature: added url safe base64 encoding/decoding. Thanks Pavel for the patch.
    • bugfix: fix a possible resource leak of fd when exception occur. Thanks Hai Shi for the patch.
    • feature: added new directive set_hmac_sha256. Thanks erankor for the patch.
  • upgraded encrypted-session-nginx-module to 0.09

    • optimize: make it compatible with boringssl. Thanks lijunlong for the patch.
  • upgraded lua-resty-string to 0.15

    • feature: added an optional len parameter for resty.md5.update(). Thanks lijunlong for the patch.
    • feature: add enable_padding option for aes. Thanks beimingfish for the patch.
    • optimize: speed up string.to_hex by reusing hex buf. Thanks jinjiezhao for the patch.
  • upgraded lua-cjson to 2.1.0.10

    • bugfix: fixed bugs suspected by cppcheck: shift signed 32-bit value by 31 bits and uninitialized variable. Thanks Jiahao Wang for the patch.
    • bugfix: fixed a possible division by zero bugs found by cppcheck. Thanks Jiahao Wang for the patch.
    • feature: support lua 5.2+.
  • upgraded luajit2 to 2.1-20220411

    • Add missing check for LJ_KEYINDEX in ITERN recording.
    • DynASM/ARM64: Fix NOP instruction for aligment.
    • Fix soft-float IR_POW splitting.
    • Fix BC_UCLO insertion for returns.
    • Fix string buffer COW handling.
    • Fix command-line argv handling.
    • Always exit after machine code page protection change fails.
    • Fix FOLD rule for BUFHDR append with intervening buffer use.
    • Fix compiled error handling for buffer methods.
    • FFI: Ensure library is loaded before de-serializing FFI types.
    • Fix HREFK forwarding vs. table.clear().
    • Fix FOLD rule for BUFHDR append.
    • Fix tonumber("-0") in dual-number mode.
    • Limit work done in SINK pass.
    • Fix ABC FOLD rule with constants.
    • Windows: Fix binary output of jit.bcsave to stdout.
    • Fix FOLD rule for x-0.
    • ARM64: Fix pcall() error case.
    • refactor: removed duplicated table entries. Thanks lijunlong for the patch.
    • OSX/ARM64: Fix external unwinding.
    • Fix interaction of profiler and ITERN recording.
    • Fix compilation of multi-result call to next().
    • ARM64: Fix IR_HREF code generation.
    • MIPS64: Fix soft-float IR_TOSTR.
    • MIPS: Fix register allocation in assembly of HREF.
    • Windows/x64: Document MSVC flags for C++ exception interoperability.
    • FFI: Ensure returned string is alive in ffi.typeinfo().
    • bugfix: fixed merge error which was introduced by commit 63dee93f4e. Thanks lijunlong for the patch.
    • OSX/ARM64: Disable unwind info.
    • Fix stack allocation after on-trace stack check.
    • Fix ITERN blacklisting.
    • Ensure ITERN forward progress on interpreter bailout.
    • ARM64: Reorder interpreter stack frame and fix unwinding.
    • Don't bail out to interpreter to JLOOP originating from ITERN.
    • FFI: Don't load PC from non-function object in FFI continuation.
    • FFI: Fix missing cts->L initialization in argv2ctype().
    • OSX/ARM64: Disable external unwinding for now.
    • Compile table traversals: next(), pairs(), BC_ISNEXT/BC_ITERN. This work sponsored by OpenResty INC.
    • Use IR_HIOP for generalized two-register returns.
    • Refactor table traversal.
    • ARM: Fix symbol display in trace disassembly.
    • Refactor IR_TMPREF generation.
    • Refactor IR_VLOAD to take an offset.
    • MIPS: Fix trace linking.
    • feature: implemented string.buffer library.
    • Consider slots used by upvalues in use-def analysis.
    • Prevent loop in snap_usedef().
    • Fix io.close().
    • Fix minilua vararg stack handling.
    • Avoid out-of-range number of results when compiling select(k, ...).
    • Fix error message in lj_lib_checkintrange().
    • Fix IRXLOAD_* mode bits description.
    • Add IRCONV_NONE for pass-through INT to I64/U64 type change.
    • Fix jit.dump() output for IR_CONV.
    • Change: Resolve luaL_newstate() return NULL in ppc64le issue. Thanks ManirajDeivendran for the patch.
    • Disable unreliable assertion for external frame unwinding.
    • Flush and close output file after profiling run.
    • Avoid conflict between 64 bit lightuserdata and ITERN key.
    • Change: Resolve compilation error in ppc Thanks Maniraj Deivendran for the patch.
    • bugfix: disabled the assertion since it might be a false alarm on fedora aarch64.
    • feature: added the trace entry and normal exit events in the GC64 interpreter. Thanks doujiang24 for the patch.
    • Throw any errors before stack changes in trace stitching.
    • DynASM/x86: Add missing escape in pattern.
    • DynASM/ARM64: Fix LSL/BFI* encoding with variable shifts.
    • Fix MinGW static build.
    • Fix dependencies.
    • Fix IR_BUFHDR assembly.
    • FFI: Support FFI numbers in string.format() and buf:putf().
    • ARM64: More improvements to the generation of immediates.
    • Abstract out on-demand loading of FFI library.
    • FFI: Fix dangling reference to CType.
    • PPC/PS3: Fix BC_ADD*/BC_SUB*.
    • Fix use-def analysis for vararg functions.
    • Fix use-def analysis for BC_VARG.
    • DynASM/ARM64: Fix ADRP encoding with absolute address.
    • Fix compiler warnings.
    • DynASM/ARM64: Add .long expr. Add .quad/.addr expr + refs.
    • DynASM/x86: Fix x64 .aword refs. Add .qword, .quad, .addr and .long.
    • FFI/ARM64/OSX: Fix vararg call handling.
    • Prevent compile of __concat with tailcall to fast function.
    • Fix IR_RENAME snapshot number. Follow-up fix for a32aeadc.
    • DynASM: Fix global label references
    • DynASM/ARM64: Add VREG support.
    • Fix build with busybox grep.
    • NetBSD: Use PROT_MPROTECT() and disable getentropy().
    • Allow disabling the serializer.
    • BSD: Fix build with BSD grep.
    • Fix .bat file builds.
    • OSX: Fix build by hardcoding external frame unwinding.
    • Reorganize lightuserdata interning code.
    • Upgrade docs to HTML5. It's about time.
    • FFI: Handle zero-fill of struct-of-NYI.
    • ARM64: Improve generation of immediates.
    • Detect inconsistent renames even in the presence of sunk values.
    • Handle on-trace OOM errors from helper functions.
    • Use weak guards for on-trace allocations.
    • PPC: Fix GG_State loads.
    • MIPS: Fix handling of long-range spare jumps.
    • Cleanup and enable external unwinding for more platforms.
    • Remove specific version numbers from the docs.
    • iOS: Don't use getentropy() since it's disallowed in the App Store.
    • Linux/ARM64: Make mremap() non-moving due to VA space woes.