4.13. 動的プログラミング言語、Web サーバー、およびデータベースサーバー
nodejs:18
モジュールストリームに完全に対応しました。
以前はテクノロジープレビューとして利用できた nodejs:18
モジュールストリームは、RHSA-2022:8832 アドバイザリーのリリースで完全に対応しています。nodejs:18
モジュールストリームでは、LTS (Long Term Support) バージョンの Node.js 18.12
が提供されるようになりました。
RHEL 9.1 に含まれる Node.js 18
は、Node.js 16
のバグ修正およびセキュリティー修正と共に多くの新機能を提供します。
主な変更点は、以下のとおりです。
-
V8
エンジンがバージョン 10.2 にアップグレードされました。 -
npm
パッケージマネージャーがバージョン 8.19.2 にアップグレードされました。 -
Node.js
が実験的な新しいfetch
API を提供するようになりました。 -
Node.js
は、新しい実験的なnode:test
モジュールを提供するようになりました。これにより、Test Anything Protocol (TAP) 形式で結果を報告するテストの作成が容易になります。 -
Node.js
は、IPv4 よりも IPv6 アドレスを優先するようになりました。
nodejs:18
モジュールストリームをインストールするには、以下を使用します。
# dnf module install nodejs:18
(BZ#2083072)
新しいモジュールストリーム: php:8.1
RHEL 9.1 は、PHP 8.1
を新しい php:8.1
モジュールストリームとして追加します。
PHP 8.1
では、以下が可能です。
- 列挙 (Enums) 機能を使用して、可能な値の離散数の 1 つに制限されるカスタム型を定義します。
-
初期化後のプロパティー変更を防ぐために、
readonly
修飾子を使用してプロパティーを宣言します。 - ファイバー、フルスタック、中断可能な機能を使用します。
php:8.1
モジュールストリームをインストールするには、以下を実行します。
# dnf module install php:8.1
RHEL 9 での PHP の使用方法の詳細は、Using the PHP scripting language を参照してください。
(BZ#2070040)
新しいモジュールストリーム: ruby:3.1
RHEL 9.1 では、新しい ruby:3.1.2
モジュールストリームに Ruby 3.1
が導入されました。このバージョンでは、RHEL 9.0 で配布される Ruby 3.0
に対するパフォーマンスの向上、バグおよびセキュリティー修正、および新機能が数多く追加されました。
主な機能拡張は、次のとおりです。
-
Interactive Ruby
(IRB) ユーティリティーは、オートコンプリート機能とドキュメントダイアログを提供するようになりました。 -
lib/debug.rb
を置き換える新しいdebug
gem は、パフォーマンスを改善し、リモートデバッグとマルチプロセス/マルチスレッドデバッグをサポートします。 -
error_highlight
gem は、バックトレースでエラーの詳細な場所を提供するようになりました。 - ハッシュリテラルデータ型とキーワード引数の値を省略できるようになりました。
-
ピン Operator (
^
) がパターンマッチングで式を受け入れるようになりました。 - 1 行のパターンマッチングで括弧を省略できるようになりました。
- 新しい実験的なインプロセス Just-in-Time (JIT) コンパイラーである YJIT が、AMD および Intel 64 ビットアーキテクチャーで利用可能になりました。
-
TypeProf For IDE
ユーティリティーが導入されました。これは、IDE 内のRuby
コード用の実験的な静的型分析ツールです。
Method Based Just-in-Time Compiler (MJIT) では、以下の通りパフォーマンスが改善されました。
-
Rails
のようなワークロードでは、デフォルトの最大 JIT キャッシュ値が 100 から 10000 に増加しました。 -
クラスイベントの
TracePoint
が有効になっている場合、JIT を使用してコンパイルされたコードがキャンセルされなくなりました。
その他の主な変更点は次の通りです。
-
tracer.rb
ファイルが削除されました。 -
バージョン 4.0 以降、
Psych
YAML パーサーはデフォルトでsafe_load
メソッドを使用します。
ruby:3.1
モジュールストリームをインストールするには、以下を使用します。
# dnf module install ruby:3.1
(BZ#2063773)
httpd
がバージョン 2.4.53 にリベースされました
Apache HTTP Server がバージョン 2.4.53 に更新されました。これは、RHEL 9.0 で配布されたバージョン 2.4.51 に対するバグ修正、機能拡張、およびセキュリティー修正を提供します。
mod_proxy
および mod_proxy_connect
モジュールの主な変更点は次のとおりです。
-
mod_proxy
: コントローラー名の長さ制限が増加しました。 -
mod_proxy
: バックエンドとフロントエンドのタイムアウトを選択的に設定できるようになりました。 -
mod_proxy
:SetEnv proxy-nohalfclose
パラメーターを設定して、TCP 接続のリダイレクトを無効にできるようになりました。 -
mod_proxy
およびmod_proxy_connect
: クライアントに送信した後にステータスコードを変更することは禁止されています。
さらに、LDAP インジェクションの脆弱性を防ぐのに役立つ新しい ldap
関数が式 API に追加されました。
httpd
設定の LimitRequestBody
ディレクティブのデフォルトが新しくなりました
CVE-2022-29404 を修正するために、Apache HTTP Server の LimitRequestBody
ディレクティブのデフォルト値が 0
(無制限) から 1 GiB に変更されました。
LimitRequestBody
の値が httpd
設定ファイルで明示的に指定されていないシステムでは、httpd
パッケージを更新すると、LimitRequestBody
がデフォルト値の 1 GiB に設定されます。その結果、HTTP 要求本文の合計サイズがデフォルトの制限である 1 GiB を超える場合、httpd
は 413 Request Entity Too Large
エラーコードを返します。
HTTP 要求メッセージ本文の新しいデフォルトの許容サイズがユースケースに不十分な場合は、それぞれのコンテキスト (サーバー、ディレクトリーごと、ファイルごと、または場所ごと) 内で httpd
設定ファイルを更新し、適切な制限をバイト単位で設定します。たとえば、新しい制限を 2 GiB に設定するには、次を使用します。
LimitRequestBody 2147483648
すでに LimitRequestBody
ディレクティブで明示的な値を使用するように設定されているシステムは、この変更の影響を受けません。
(BZ#2128016)
新規パッケージ: httpd-core
RHEL 9.1 以降では、基本的な httpd
機能のみを必要とするシナリオ (コンテナーなど) で Apache HTTP Server の依存関係を制限するために、すべての必須ファイルを含む httpd
バイナリーファイルが新しい httpd-core
パッケージに移動されました。
httpd
パッケージは、mod_systemd
、mod_brotli
、ドキュメントなど、systemd
関連のファイルを提供するようになりました。
この変更により、httpd
パッケージは httpd
Module Magic Number (MMN) 値を提供しなくなりました。代わりに、httpd-core
パッケージが httpd-mmn
値を提供するようになりました。その結果、httpd
パッケージから httpd-mmn
を取得することはできなくなりました。
インストールされた httpd
バイナリーの httpd-mmn
値を取得するには、httpd-devel
パッケージの一部である apxs
バイナリーを使用できます。httpd-mmn
値を取得するには、次のコマンドを使用します。
# apxs -q HTTPD_MMN 20120211
(BZ#2065677)
pcre2
がバージョン 10.40 にリベースされました
Perl 互換正規表現ライブラリー v2 を提供する pcre2
パッケージがバージョン 10.40 に更新されました。
今回の更新では、Perl 5.32
のそれぞれの変更に従って、lookaround アサーションでの \K
エスケープシーケンスの使用が禁止されました。以前の動作に依存している場合は、PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK
オプションを使用できます。このオプションが設定されている場合、\K
はポジティブアサーション内でのみ受け入れられ、ネガティブアサーションでは無視されることに注意してください。