6.13. 動的プログラミング言語、Web サーバー、およびデータベースサーバー
RHEL 10 の Python 3.12
Python 3.12 は RHEL 10 におけるデフォルトの Python 実装です。Python 3.12 は、BaseOS リポジトリーにあるモジュール以外の python3 RPM パッケージで配布され、通常はデフォルトでインストールされています。Python 3.12 は、RHEL 10 のライフサイクル全体でサポートされます。
追加バージョンの Python 3 は、AppStream リポジトリーを介してより短いライフサイクルで RPM パッケージとして配布され、並行してインストールできます。python コマンド (/usr/bin/python) や、pip などの他の Python 関連コマンドは、バージョンを指定せずに使用でき、デフォルトの Python 3.12 バージョンを指します。
以前にリリースされた Python 3.11 と比較しての主な機能拡張は次のとおりです。
-
Python では、ジェネリッククラスと関数に対して新しい
typeステートメントと新しい型パラメーター構文が導入されています。 - フォーマットされた文字列リテラル (f-strings) が文法で形式化され、パーサーに直接統合できるようになりました。
- Python が、インタープリターごとに固有のグローバルインタープリターロック (GIL) を提供するようになりました。
- Python コードからバッファープロトコルを使用できるようになりました。
-
CPythonのディクショナリー、リスト、セットの内包表記がインライン化されました。これにより、内包表記の実行速度が大幅に向上します。 -
CPythonが Linuxperfプロファイラーをサポートするようになりました。 -
CPythonが、サポート対象のプラットフォームでスタックオーバーフローの保護を提供するようになりました。 -
Python 3.12 は、アップストリームでデフォルトで使用されている GCC の
-O3最適化フラグを使用してコンパイルされています。その結果、Python アプリケーションとインタープリターのパフォーマンスが向上したことがわかります。
Python 3.12 スタックからパッケージをインストールするには、たとえば次のコマンドを使用できます。
dnf install python3 dnf install python3-pip
# dnf install python3
# dnf install python3-pip
インタープリターを実行するには、たとえば次のコマンドを使用できます。
python python3 python3 -m pip --help
$ python
$ python3
$ python3 -m pip --help
Jira:RHELDOCS-18402[1]、Jira:RHEL-45315
RHEL 10 で Perl 5.40 が導入される
RHEL 10 には Perl 5.40 が含まれており、以前のバージョン 5.32 に比べてさまざまな機能拡張が提供されています。
コアの機能拡張:
- Perl は Unicode 15.0 をサポートするようになりました。
-
umask オプション
-0777のエイリアスである新しい-gコマンドラインオプションを使用できるようになりました。 -
-Mコマンドラインオプションでスペースが受け入れられるようになりました。 -
新しい
builtinモジュールでは、常に存在する新しい関数のドキュメントが提供されるようになりました。 -
新しい
try/catch機能が追加されました。 - 非推奨の警告には、よりきめ細かい制御を可能にする特定のサブカテゴリーが追加されました。単一のステートメントで引き続きすべての非推奨警告を無効化できることに注意してください。
-
@INCフックが強化され、$INC変数と新しいINCDIRメソッドが追加されました。 -
deferおよびfinallyモジュールからの禁止された制御フローがコンパイル時に検出されるようになりました。 -
パターン内で
(?{ … })と(??{ … })を使用すると、そのパターン内のさまざまな最適化がグローバルに無効になります。 -
REG_INF正規表現エンジン数量詞の制限が 65,536 から 2,147,483,647 に増加されました。 -
新しい正規表現変数
${^LAST_SUCCESSFUL_PATTERN}を使用すると、現在のスコープ内で一致した最後の成功したパターンにアクセスできます。 -
新しい
__CLASS__キーワードが導入されました。 -
Perl は新しい
^^論理 XOR 演算子をサポートするようになりました。
互換性のない変更:
-
物理的に空の
sort関数は、コンパイル時エラーをトリガーするようになりました。 -
readline()関数は、ストリームエラーと EOF フラグをクリアしなくなりました。 -
INITブロックは、BEGINブロック内のexit()関数の後に実行されなくなりました。 -
不明なパッケージで
importメソッドを呼び出すと、警告が生成されるようになりました。 -
return関数では、間接オブジェクトが許可されなくなりました。 - エラーや警告の変更により、テストが失敗する可能性があります。
-
物理的に空の
非推奨:
-
パッケージ名の区切り文字として
'文字を使用することは非推奨となりました。 -
switch機能とスマートマッチ Operator~~は非推奨となりました。 -
goto関数を使用して、外部スコープから内部スコープにジャンプすることは非推奨となりました。
-
パッケージ名の区切り文字として
内部の変更:
- 複数の非推奨の C 関数が削除されました。
-
対応するプラットフォームでは、内部の C API 関数が
__attribute__((hidden))属性によって非公開となりました。つまり、これらのプラットフォーム上の XS モジュールからは呼び出せなくなります。
モジュール:
-
Term::TableおよびTest2::Suiteモジュールが Perl Core に追加されました。 - ほとんどのモジュールが更新されました。
-
詳細は、perl5340delta、perl5360delta、perl5380delta、および perldelta man ページを参照してください。
Jira:RHELDOCS-18869[1]
RHEL 10 で Ruby 3.3 が導入される
RHEL 10 には Ruby 3.3.7 が含まれています。このバージョンでは、パフォーマンスの改善、バグとセキュリティーの修正、および新機能がいくつか提供されています。
主な機能拡張は、次のとおりです。
-
Ripperの代わりに新しいPrismパーサーを使用できます。Prismは、移植可能で、エラー耐性があり、メンテナンス性に優れた Ruby 言語の再帰下降パーサーです。 - Ruby の just-in-time (JIT) コンパイラー実装である YJIT は、もはや実験的機能ではなく、大幅なパフォーマンスの向上をもたらします。
-
Regexp一致アルゴリズムが改善され、潜在的な正規表現サービス拒否 (ReDoS) の脆弱性の影響が軽減されました。 - 新しい実験的な RJIT (純粋な Ruby の JIT) コンパイラーが MJIT を置き換えます。実稼働環境では YJIT を使用してください。
- 新しい M:N スレッドスケジューラーが利用可能になりました。
その他の主な変更点:
-
今後は、
Bisonの代わりにLramaLALR パーサージェネレーターを使用する必要があります。 - いくつかの非推奨のメソッドと定数が削除されました。
-
Raccgem はデフォルトの gem からバンドルされた gem に昇格しました。
Ruby 3.3 をインストールするには、次のように入力します。
dnf install ruby
# dnf install ruby
Ruby 3.3 のサポート期間は、Red Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
Jira:RHELDOCS-19658[1]
RHEL 10.0 では Node.js 22 が提供される
RHEL 10 には Node.js 22 が含まれています。このバージョンでは、以前提供されていた Node.js 20 に比べて、多数の新機能、バグ修正、セキュリティー修正、パフォーマンスの改善が提供されています。
主な変更点は、以下のとおりです。
-
V8JavaScript エンジンがバージョン 12.4 にアップグレードされました。 -
V8 Maglevコンパイラーは、これを利用可能なアーキテクチャー (AMD および Intel 64 ビットアーキテクチャーと 64 ビット ARM アーキテクチャー) でデフォルトで有効になりました。 -
Maglevは、短命の CLI プログラムのパフォーマンスを向上させます。 -
npmパッケージマネージャーが、バージョン 10.8.1 にアップグレードされました。 -
node --watchモードは現在安定していると見なされます。watchモードでは、監視対象ファイルの変更によりNode.jsプロセスが再起動されます。 -
WebSocketのブラウザー互換実装は現在、安定していると見なされ、デフォルトで有効になっています。その結果、外部依存関係なしで Node.js への WebSocket クライアントが利用できるようになります。 -
Node.jsには、package.jsonからのスクリプトを実行するための実験的な機能が含まれるようになりました。この機能を使用するには、node --run <script-in-package.json>コマンドを実行します。
Node.js 22 をインストールするには、次のように入力します。
dnf install nodejs
# dnf install nodejs
RHEL 10 で PostgreSQL 16 が導入される
RHEL 10 には PostgreSQL バージョン 16 が含まれています。
主な機能拡張は、次のとおりです。
- 強化されたバルクロードによりパフォーマンスが向上します。
-
libpqライブラリーの新しいload_balance_hostsオプションは、より効率的な負荷分散をサポートします。 -
/var/lib/pgsql/data/ディレクトリー内の設定ファイルは、カスタムのpg_hba.confおよびpg_ident.confファイルのインクルードをサポートします。 -
/var/lib/pgsql/data/pg_hba.confファイルは、データベースおよびロールエントリーに対する正規表現の一致をサポートしています。
その他の変更点は次のとおりです。
-
postmasterバイナリーが存在しません。代わりにpostgresバイナリーを使用します。この変更は、postmasterを使用してサービスを開始するユーザーにのみ影響します。 - パッケージ内に PDF ドキュメントが存在しません。代わりに アップストリームのドキュメント を使用します。
詳細は、Using PostgreSQL を参照してください。
PostgreSQL 16 をインストールするには、次のように入力します。
dnf install postgresql16
# dnf install postgresql16
RHEL 10 で MySQL 8.4 が導入される
RHEL 10.0 には MySQL 8.4 が含まれています。以前に利用可能であったバージョン 8.0 からの主な変更点は、以下のとおりです。
-
非推奨の
mysql_native_password認証プラグインは、デフォルトでは有効化されなくなりました。 -
MySQL 8.4 にアップグレードすると、
BINLOG_ADMIN権限を持つユーザーアカウントまたはロールにTRANSACTION_GTID_TAG権限が自動的に付与されます。 -
MySQL 8.4 をインストールすると、サーバーのデータディレクトリーに
mysql_upgrade_historyファイルが作成または更新されます。ファイルは JSON 形式で、インストールされているバージョン、インストールの日時、リリースが長期サポート (LTS シリーズ) の一部であるかイノベーションシリーズの一部であるかに関する情報が含まれています。 -
データベース権限付与におけるワイルドカードとしての
%および_文字の使用は非推奨となり、ワイルドカード機能は今後の MySQL リリースで削除される予定です。これらの文字はリテラルとして扱われます。partial_revokesサーバーシステム変数がONに設定されている場合、これらはすでにリテラルとして扱われます。 -
権限をチェックするときに、サーバーが
%文字を localhost の同義語として扱うことは非推奨となりました。 -
非推奨の
--sslと--admin-sslサーバーオプション、およびhave_sslとhave_opensslサーバーシステム変数は削除されました。代わりに、--tls-versionおよび--admin-tls-versionサーバーシステム変数を使用してください。 -
非推奨の
default_authentication_pluginシステム変数は削除されました。代わりにauthentication_policyサーバーシステム変数を使用してください。 -
非推奨の
SET_USER_ID権限は削除されました。代わりに、定義者オブジェクトの作成にはSET_ANY_DEFINER権限を使用し、孤立したオブジェクトの保護にはALLOW_NONEXISTENT_DEFINER権限を使用できます。 -
非推奨の
mysql_upgradeユーティリティーは削除されました。
詳細は、アップストリームの MySQL ドキュメント を参照してください。
RHEL 10 では pgvector エクステンションを備えた PostgreSQL 16 が提供される
RHEL 10 には PostgreSQL 16 が含まれています。pgaudit、pg_repack、および decoderbufs エクステンションに加えて、Postgresql スタックでは pgvector エクステンションも提供されるようになりました。pgvector エクステンションを使用すると、高次元ベクトル埋め込みを PostgreSQL データベース内に直接保存およびクエリーし、ベクトル類似性検索を実行できます。ベクトル埋め込みは、テキスト、イメージ、またはその他のデータタイプの意味を捉えるために機械学習や AI アプリケーションでよく使用されるデータの数値表現です。
Jira:RHEL-35993[1]
RHEL 10 で MariaDB 10.11 が導入される
RHEL 10 には MariaDB 10.11 が含まれています。主な変更点は、以下のとおりです。
- 新しい 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 など) が強制されるようになりました。
Jira:RHELDOCS-19550[1]