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 コンパイラが未定義の動作を「利用」し、(k == -k) のような式の意味を完全に変えてしまうため、C 言語で INT*_MIN を含む可能性のある符号付き整数の否定を避けるようにしました。
    • BC_VARG の記録時のスタックチェックを修正しました。
    • BC_ITERN に由来する BC_JLOOP のトレースリンクを修正しました。
    • math.floor()math.ceil() を修正しました。
    • Mike Pall が管理する上流リポジトリ https://github.com/luajit/luajit から多数の変更を同期しました。
  • 無効な IF-Match リクエストヘッダーに遭遇した際に解放済みメモリを使用するエラーを修正しました。この問題を報告してくださった Michal Jeczalik Jr 氏、Nishant Hooda 氏、Kong Inc に感謝いたします。
  • resty.core.timemonotonic_msec()monotonic_time() を実装しました。
  • Apple Silicon FFI ABI の制限に対するワークアラウンドを実装しました。
  • tcpsock:sslhandshake、coroutine wrapper、ngx.req.is_internal を FFI を使用して再実装しました。
  • SSL/TLS でパスワード保護された秘密鍵のサポートを追加しました。
  • ngx.req.raw_header を通じて不正な形式のリクエストヘッダーを取得する際のセグメンテーションフォールトを修正しました。
  • 潜在的なヌルポインタ参照を修正しました。
  • lua-cjson モジュール
    • cjson が light userdata アドレスとマスクされたアドレスを比較していなかったため、empty_array が Apple 上で動作しませんでした。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 を作成するか、メーリングリストの1つにメールを送信するか、または フォーラム でディスカッションしていただければ幸いです。