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 討論。
公眾號
歡迎關注我們的微信公眾號