OpenResty 1.21.4.2 正式发布
我们很高兴宣布基于 NGINX 和 LuaJIT 的 OpenResty 新版本 1.21.4.2 正式发布,欢迎大家更新使用。
本次发布提供了源代码版本、Win32/Win64 二进制版,以及用于 Ubuntu、Debian、Fedora、CentOS、RHEL、Alpine、OpenSUSE、Amazon Linux、Rocky Linux、Oracle Linux 和 CBL Mariner 的预编译二进制 Linux 包。请至下载页面下载。
重点变更
新版本包含以下重要变更:
- LuaJIT
- 避免在 C 语言中对可能包含 INT*_MIN 的有符号整数进行取反,因为最近的 C 语言编译器 “利用 “了未定义的行为,这完全改变了类似
(k == -k)
这样的表达式的含义。 - 更正了记录
BC_VARG
时的堆栈检查。 - 修正了对源于
BC_ITERN
的BC_JLOOP
的跟踪连接。 - 修正了
math.floor()
和math.ceil()
。 - 从 Mike Pall 维护的上游 https://github.com/luajit/luajit 仓库同步了大量修改。
- 避免在 C 语言中对可能包含 INT*_MIN 的有符号整数进行取反,因为最近的 C 语言编译器 “利用 “了未定义的行为,这完全改变了类似
- 修复了遇到无效 IF-Match 请求头时使用释放后内存的错误。感谢 Michal Jeczalik Jr、Nishant Hooda 和 Kong Inc 报告此问题。
- 在
resty.core.time
中实现了monotonic_msec()
和monotonic_time()
。 - Apple Silicon FFI ABI 限制的解决方法。
- 用 FFI 重新实现了
tcpsock:sslhandshake
、coroutine wrapper 和ngx.req.is_internal
。 - SSL/TLS 支持口令保护的私钥。
- 修正了通过
ngx.req.raw_header
获取格式错误请求 headers 时的 segmentation fault。 - 修正了潜在的空指针解引用。
- lua-cjson 模块
empty_array
在 Apple 上不能工作,因为 cjson 没有比较 light userdata 地址和 masked 地址。由于我们在创建 lightuserdata 时使用了json_lightudata_mask
,所以在比较touserdata
的返回时也应该使用同样的掩码。
- headers-more-nginx-module 模块
- 修正了访问未初始化的指针时的崩溃问题。
- lua-resty-websocket 模块
- 增加了对 mtls 客户端证书的支持。
- lua-resty-memcached 模块
- 实现了
init_pipeline()
,commit_pipeline()
, 和cancel_pipeline()
。
- 实现了
完整变更日志
自上一个(正式)版本 1.21.4.1 以来的完整变更记录可以在 1.21.4.x 的变更日志 页面中浏览。
鸣谢
特别感谢我们所有的开发者和贡献者! 也感谢李俊龙和王家豪在发布这个版本时的帮助。
反馈
欢迎给本版本提供反馈。欢迎到 GitHub issues 创建新 issue 或者给我们的邮件列表之一发送邮件, 或者到我们的 bbs 讨论。
公众号
欢迎关注我们的微信公众号