4.9. 動的プログラミング言語、Web サーバー、およびデータベースサーバー
Python 3.12 が RHEL 8 で利用できるようになりました
RHEL 8.10 では、新しいパッケージ python3.12
とそのためにビルドされた一連のパッケージ、および ubi8/python-312
コンテナーイメージによって提供される Python 3.12 が導入されています。
以前にリリースされた Python 3.11 と比較しての主な機能拡張は次のとおりです。
-
Python では、ジェネリッククラスと関数に対して新しい
type
ステートメントと新しい型パラメーター構文が導入されています。 - フォーマットされた文字列リテラル (f-strings) が文法で形式化され、パーサーに直接統合できるようになりました。
- Python が、インタープリターごとに固有のグローバルインタープリターロック (GIL) を提供するようになりました。
- Python コードからバッファープロトコルを使用できるようになりました。
-
セキュリティーを強化するために、SHA1、SHA3、SHA2-384、SHA2-512、および MD5 暗号化アルゴリズムの組み込みの
hashlib
実装が、HACL* プロジェクトの正式に検証されたコードに置き換えられました。OpenSSL が組み込みの実装を提供しない場合は、フォールバックとして引き続き組み込みの実装を使用できます。 -
CPython
のディクショナリー、リスト、セットの内包表記がインライン化されました。これにより、内包表記の実行速度が大幅に向上します。 -
CPython
が Linuxperf
プロファイラーをサポートするようになりました。 -
CPython
が、サポート対象のプラットフォームでスタックオーバーフローの保護を提供するようになりました。
python3.12
スタックからパッケージをインストールするには、たとえば、以下を使用します。
# yum install python3.12 # yum install python3.12-pip
インタープリターを実行するには、たとえば、以下を使用します。
$ python3.12 $ python3.12 -m pip --help
詳細は、Python のインストールおよび使用 を参照してください。
Python 3.12 のサポート期間は、Red Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
メールアドレスの解析を制御するための Python の新しい環境変数
CVE-2023-27043 の問題を軽減するために、メールアドレスをより厳密に解析するための後方互換性のない変更が Python 3 に導入されました。
この更新では、新しい PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING
環境変数が導入されました。この変数を true
に設定すると、比較的厳密ではない以前の解析動作が、システム全体のデフォルトになります。
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true
ただし、該当する関数を個別に呼び出すと、より厳密な動作が有効になる可能性があります。
次の内容で /etc/python/email.cfg
設定ファイルを作成しても、同じ結果を得ることができます。
[email_addr_parsing] PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
詳細は、ナレッジベース記事 Mitigation of CVE-2023-27043 introducing stricter parsing of email addresses in Python を参照してください。
Jira:RHELDOCS-17369[1]
新しいモジュールストリーム: ruby:3.3
RHEL 8.10 では、新しい ruby:3.3
モジュールストリームに Ruby 3.3.0 が導入されました。このバージョンでは、RHEL 8.7 で配布される Ruby 3.1
に対するパフォーマンスの向上、バグおよびセキュリティー修正、および新機能がいくつか追加されました。
主な機能拡張は、次のとおりです。
-
Ripper
の代わりに新しいPrism
パーサーを使用できます。Prism
は、移植可能で、エラー耐性があり、メンテナンス性に優れた Ruby 言語の再帰下降パーサーです。 - Ruby の just-in-time (JIT) コンパイラー実装である YJIT は、もはや実験的機能ではなく、大幅なパフォーマンスの向上をもたらします。
-
Regexp
一致アルゴリズムが改善され、潜在的な正規表現サービス拒否 (ReDoS) の脆弱性の影響が軽減されました。 - 新しい実験的な RJIT (純粋な Ruby の JIT) コンパイラーが MJIT を置き換えます。実稼働環境では YJIT を使用してください。
- 新しい M:N スレッドスケジューラーが利用可能になりました。
その他の主な変更点:
-
今後は、
Bison
の代わりにLrama
LALR パーサージェネレーターを使用する必要があります。 - いくつかの非推奨のメソッドと定数が削除されました。
-
Racc
gem はデフォルトの gem からバンドルされた gem に昇格しました。
ruby:3.3
モジュールストリームをインストールするには、次のコマンドを使用します。
# yum module install ruby:3.3
以前の ruby
モジュールストリームからアップグレードするには、後続のストリームへの切り替え を参照してください。
Ruby 3.3 のサポート期間は、Red Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
Jira:RHEL-17090[1]
新しいモジュールストリーム: php:8.2
RHEL 8.10 では、PHP 8.2 が追加され、バージョン 8.0 に対するバグ修正と機能拡張がいくつか提供されています。
PHP 8.2
では、以下が可能です。
- 列挙 (Enums) 機能を使用して、可能な値の離散数の 1 つに制限されるカスタム型を定義します。
-
初期化後のプロパティー変更を防ぐために、
readonly
修飾子を使用してプロパティーを宣言します。 - ファイバー、フルスタック、割り込み可能な関数を使用します。
- 読み取り専用クラスを使用します。
- いくつかの新しいスタンドアロン型を宣言します。
-
新しい
Random
拡張機能を使用します。 - 特性の制約を定義します。
php:8.2
モジュールストリームをインストールするには、次のコマンドを使用します。
# yum module install php:8.2
以前のphp
ストリームからアップグレードする場合は、新しいストリームへの切り替え を参照してください。
RHEL 8 での PHP の使用方法の詳細は、PHP スクリプト言語の使用 を参照してください。
php
モジュールストリームのサポート期間の詳細は、Red Hat Enterprise Linux Application Streams のライフサイクル を参照してください。
Jira:RHEL-14705[1]
perl-DateTime-TimeZone
モジュールの name()
メソッドは、タイムゾーン名を返すようになりました。
perl-DateTime-TimeZone
モジュールがバージョン 2.62 に更新され、name()
メソッドによって返される値がタイムゾーンエイリアスからメインのタイムゾーン名に変更されました。
詳細と例は、ナレッジベースの記事 Change in the perl-DateTime-TimeZone API related to time zone name and alias を参照してください。
新しいモジュールストリーム: nginx:1.24
nginx 1.24 Web およびプロキシーサーバーが、nginx:1.24
モジュールストリームとして利用できるようになりました。この更新では、以前にリリースされたバージョン 1.22 に対するバグ修正、セキュリティー修正、新機能、および機能拡張がいくつか提供されます。
Transport Layer Security (TLS) に関連する新機能と変更点:
-
ssl_session_cache
ディレクティブで共有メモリーを使用する場合、TLS セッションチケットの暗号鍵が自動的にローテーションされるようになりました。 - Secure Sockets Layer (SSL) プロキシーを使用した設定でメモリー使用量が最適化されました。
-
resolver
ディレクティブのipv4=off
パラメーターを使用して、解決時に IPv4 アドレスの検索を無効にできるようになりました。 -
nginx は、PROXY v2 TLV プロトコルに表示される Type-Length-Value (TLV) フィールドの値を格納する
$proxy_protocol_tlv_*
変数をサポートするようになりました。 -
ngx_http_gzip_static_module
モジュールはバイト範囲をサポートするようになりました。
その他の変更点:
- ヘッダー行は、内部 API でリンクされたリストとして表されるようになりました。
-
nginx は、
ngx_http_perl_module
の$r->header_in()
メソッドと、$http_...
、$sent_http_...
、$sent_trailer_...
、$upstream_http_...
、および$upstream_trailer_...
変数の検索中に、FastCGI、SCGI、および uwsgi バックエンドに渡される同一の名前のヘッダー文字列を連結するようになりました。 - nginx は、リスニングソケットのプロトコルパラメーターが再定義されると警告を表示するようになりました。
- nginx は、クライアントによってパイプラインが使用された場合、接続を遅延して閉じるようになりました。
-
さまざまな SSL エラーのロギングレベルが、たとえば
Critical
からInformational
に引き下げられました。
nginx:1.24
ストリームをインストールするには、以下を実行します。
# yum module install nginx:1.24
以前の nginx
ストリームからアップグレードするには、新しいストリームに切り替えます。
詳細は、NGINX のセットアップと設定 を参照してください。
nginx
モジュールストリームのサポート期間については、Red Hat Enterprise Linux アプリケーションストリームのライフサイクル を参照してください。
Jira:RHEL-14714[1]
新しいモジュールストリーム: mariadb:10.11
MariaDB 10.11 が、新しいモジュールストリーム mariadb:10.11
として利用できるようになりました。以前に利用可能であったバージョン 10.5 に対する主な機能拡張は、以下のとおりです。
-
新しい
sys_schema
機能。 - アトミックデータ定義言語 (DDL) ステートメント。
-
新しい
GRANT ... TO PUBLIC
特権。 -
SUPER
特権とREAD ONLY ADMIN
特権の分離。 -
新しい
UUID
データベースデータ型。 - Secure Socket Layer (SSL) プロトコルのバージョン 3 のサポート。MariaDB サーバーの起動には、正しく設定された SSL が必要になりました。
-
natural_sort_key()
関数による自然なソート順序のサポート。 -
任意のテキストフォーマットのための新しい
SFORMAT
関数。 - UTF-8 文字セットと UCA-14 照合の変更。
-
/usr/share/
ディレクトリーで利用可能なsystemd
ソケットのアクティベーションファイル。アップストリームとは異なり、これらのファイルは RHEL のデフォルト設定の一部ではないことに注意してください。 -
MySQL
の代わりにMariaDB
文字列を含むエラーメッセージ。 - 中国語で利用可能なエラーメッセージ。
- デフォルトの logrotate ファイルへの変更。
-
MariaDB および MySQL クライアントの場合、コマンドラインで指定した接続プロパティー (例:
--port=3306
) によって、クライアントとサーバー間の通信のプロトコルタイプ (tcp
、socket
、pipe
、memory
など) が強制されるようになりました。
MariaDB 10.11 の変更点の詳細は、MariaDB 10.5 と MariaDB 10.11 の主な違い を参照してください。
MariaDB の詳細は、MariaDB の使用 を参照してください。
mariadb:10.11
ストリームをインストールするには、以下を使用します。
# yum module install mariadb:10.11
mariadb:10.5
モジュールストリームからアップグレードする場合は、MariaDB 10.5 から MariaDB 10.11 へのアップグレード を参照してください。
mariadb
モジュールストリームのサポート期間の詳細は、Red Hat Enterprise Linux Application Streams のライフサイクル を参照してください。
新しいモジュールストリーム: postgresql:16
RHEL 8.10 では、PostgreSQL 16 が導入され、バージョン 15 に対する新機能と機能拡張がいくつか提供されています。
主な機能拡張は、次のとおりです。
- 強化された一括ロードによりパフォーマンスが向上します。
-
libpq
ライブラリーが、接続レベルの負荷分散をサポートするようになりました。より効率的な負荷分散のために、新しいload_balance_hosts
オプションを使用できます。 -
カスタム設定ファイルを作成し、それを
pg_hba.conf
ファイルとpg_ident.conf
ファイルに追加できるようになりました。 -
PostgreSQL は、
pg_hba.conf
ファイル内のデータベースおよびロールエントリーに対する正規表現の一致をサポートするようになりました。
その他の変更点は次のとおりです。
-
PostgreSQL は
postmaster
バイナリーとともに配布されなくなりました。提供されているsystemd
ユニットファイル (systemctl start postgres
コマンド) を使用してpostgresql
サーバーを起動するユーザーは、この変更の影響を受けません。以前にpostmaster
バイナリーを介してpostgresql
サーバーを直接起動していた場合は、今後は代わりにpostgres
バイナリーを使用する必要があります。 - PostgreSQL は、パッケージで PDF 形式のドキュメントを提供しなくなりました。代わりに オンラインドキュメント を使用してください。
PostgreSQL の使用 も参照してください。
postgresql:16
ストリームをインストールするには、次のコマンドを使用します。
# yum module install postgresql:16
RHEL 8 内で以前の postgresql
ストリームからアップグレードする場合は 後続のストリームへの切り替え の説明に従い、PostgreSQL の RHEL 8 バージョンへの移行 で説明されているように PostgreSQL データを移行します。
postgresql
モジュールストリームのサポート期間は、Red Hat Enterprise Linux アプリケーションストリームのライフサイクル を参照してください。
Git がバージョン 2.43.0 にリベース
Git バージョン管理システムがバージョン 2.43.0 に更新され、以前にリリースされたバージョン 2.39 に対するバグ修正、機能拡張、およびパフォーマンス向上が実現しました。
主な機能拡張は、次のとおりです。
-
git check-attr
コマンドで新しい--source
オプションを使用して、現在の作業ディレクトリーではなく、提供されたツリー状のオブジェクトから.gitattributes
ファイルを読み取ることができるようになりました。 -
Git は、
WWW-Authenticate
レスポンスタイプヘッダーからの情報を認証情報ヘルパーに渡すことができるようになりました。 -
コミットが空の場合、
git format-patch
コマンドは空のファイルを作成する代わりに、コミットのヘッダーを含む出力ファイルを書き込むようになりました。 -
git blame --contents=<file> <revision> -- <path>
コマンドを使用して、<file>
の内容を起点として<revision>
に至る履歴を通じて、行の起源を検索できるようになりました。 -
git log --format
コマンドは、--decorate
オプションが提供する機能を拡張するためのさらなるカスタマイズ用に、%(decorate)
プレースホルダーを受け入れるようになりました。
Jira:RHEL-17103[1]
Git LFS がバージョン 3.4.1 にリベース
Git Large File Storage (LFS) エクステンションがバージョン 3.4.1 に更新されました。これにより、以前にリリースされたバージョン 3.2.0 に対するバグ修正、機能拡張、およびパフォーマンス向上が実現しました。
主な変更点は、以下のとおりです。
-
git lfs push
コマンドが、標準入力から参照とオブジェクト ID を読み取ることができるようになりました。 - Git LFS は、Git に依存せずに代替リモートを処理するようになりました。
-
Git LFS は、認証情報ヘルパーとして
WWW-Authenticate
レスポンスタイプヘッダーをサポートするようになりました。
Jira:RHEL-17102[1]
Python インタープリターのパフォーマンスが向上しました
RHEL 8 でサポートされているすべてのバージョンの Python が、アップストリームのデフォルトである -O3
最適化フラグを使用してコンパイルされるようになりました。その結果、Python アプリケーションとインタープリター自体のパフォーマンスが向上しました。
この変更は、次のアドバイザリーのリリースで利用可能です。
-
python3.12
- RHSA-2024:6961 -
python3.11
- RHSA-2024:6962 -
python3
- RHSA-2024:6975 -
python39
モジュール - RHSA-2024:5962
Jira:RHEL-49614[1], Jira:RHEL-49636, Jira:RHEL-49644, Jira:RHEL-49638