我們很高興宣佈基於 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_ITERNBC_JLOOP 的跟蹤連線。
    • 修正了 math.floor()math.ceil()
    • 從 Mike Pall 維護的上游 https://github.com/luajit/luajit 倉庫同步了大量修改。
  • 修復了遇到無效 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 討論。

公眾號

歡迎關注我們的微信公眾號

我們的微信公眾號