動的プログラミング言語、Webサーバーとデータベース・サーバー

このOracle Linux 8リリースでは、プログラミング言語、Webサーバーおよびデータベース・サーバーに関連する次の機能、拡張機能、および変更が導入されています。

Pythonバージョン3.12の可用性

このリリースのOracle Linux 8.10では、Python 3.12の最新リリースを使用できます。Python 3.12の主な拡張機能(3.11との比較)は次のとおりです:

  • 構文機能の更新には、type文、および汎用クラスと汎用関数のタイプ・パラメータ構文が含まれています。

  • 文法機能の更新には、パーサーに直接統合できるf文字列の構文形式化が含まれています。

  • インタプリタごとの独自のグローバル・インタプリタ・ロック(GIL)を使用します。この機能により、Pythonプログラムは複数のCPUコアを最大限に活用できます。このリリースでは、この機能はC-APIでのみ使用できます。

  • Pythonデータ・モデルの更新には、Pythonコードからバッファ・プロトコルを使用する方法が含まれています。__buffer__()メソッドを実装するクラスをバッファ・タイプとして使用できるようになりました。

  • セキュリティの改善には、SHA1、SHA3、SHA2-384、SHA2-512、およびMD5の組込みhashlib実装を、HACL*プロジェクトから正式に検証されたコードに置き換えることが含まれています。これらの組込み実装は、OpenSSLによって提供されない場合にのみ使用されるフォールバックとして残ります。

  • CPythonのディクショナリ、リストおよびセット理解がインライン化されました。この拡張により、理解実行の速度が向上します。

  • CPythonを、Linuxのperfプロファイラで使用できます。

  • スタック保護が、サポートされているプラットフォームでCPythonによって提供されます。

Python 3.12シリーズ・パッケージは、同じシステム上のPython 3.9およびPython 3.11と並行してインストールできます。

次に例を示します:

  • python3.12スタックからパッケージをインストールするには、次のように入力します:
    # dnf install python3.12
    # dnf install python3.12-pip
  • インタプリタを実行するには、次のように入力します:
    $ python3.12
    $ python3.12 -m pip --help
詳細は、Oracle Linux 8 Pythonのインストールと管理を参照してください。

ノート:

Python 3.12シリーズのドキュメントは、python3.12-docsパッケージにあります。

Python言語バージョンの製品サポートの詳細は、『Oracle Linux: 製品ライフ・サイクル情報』を参照してください。

メール・アドレス解析を制御するためのPythonの改善

CVE-2023-27043に関連する修正により、email.utilsモジュールのgetaddresses関数およびparseaddr関数でPython 3の電子メール・アドレスのより厳密な解析を有効にする機能が追加されました。ただし、この修正は古い解析動作と互換性がないため、この改善には、既存のコードに新しいコード変更を実装することなく、古い動作を優先して新しい動作を無効にする2つの方法が含まれています。

最初の方法は、新しい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

ノート:

新しい関数がコードに実装されている場合、これらを設定しても、関数はより厳密な動作を有効にできます。

Rubyバージョン3.3の可用性

Ruby 3.3.0が、次の重要な拡張機能を備えた新しいruby:3.3モジュール・ストリームに含まれています:

  • 新しいPrismパーサー。Prismは、Ruby言語の移植可能でエラー許容性が高い、メンテナンス可能な再帰的下降パーサーです。Prismは、Ripperスクリプト・パーサーの代替パーサーです。

  • RubyジャストインタイムYJITコンパイラでは、パフォーマンスが大幅に向上しています。

  • Regexp照合アルゴリズムが更新され、正規表現によるサービス拒否(ReDoS)の潜在的な脆弱性の影響が軽減されました。

  • 新しいpure-Ruby JITコンパイラ(RJIT)は、x86-64アーキテクチャUNIXプラットフォームで使用できます。RJITコンパイラはMJITコンパイラに置き換わります。
  • 新しいM:Nスレッド・スケジューラが使用可能です。

その他の主な変更点は次のとおりです:

  • BisonのかわりにLrama LALRパーサー・ジェネレータを使用します。
  • 非推奨のメソッドおよび定数がいくつか削除されました。

  • Racc gemが、デフォルトのgemからバンドルされたgemに昇格されました。

ruby:3.3モジュール・ストリームを有効にしてインストールするには、次のように入力します:

sudo dnf module enable ruby:3.3
sudo dnf module install ruby:3.3

以前のrubyモジュール・ストリームからアップグレードする場合は、『Oracle Linux: Oracle Linuxでのソフトウェアの管理』を参照してください。

Rubyモジュールの製品サポートの詳細は、『Oracle Linux: 製品ライフ・サイクル情報』を参照してください。

バージョン2.62に更新されたperl-DateTime-TimeZoneモジュール

perl-DateTime-TimeZoneモジュールがバージョン2.62に更新されました。特に、name()メソッドは、別名値ではなくメイン・タイム・ゾーン名を返すように変更されています。

PHPバージョン8.2の可用性

PHP 8.2が新しいphp:8.2モジュール・ストリームに含まれており、次の重要な変更点があります:

  • クラスに読取り専用修飾子をマークする機能。

  • null、falseおよびtrueをスタンドアロン型として使用する機能。

  • randomという名前の新しいRandom拡張子。この拡張機能は、乱数生成に関連する既存のPHP機能を編成および統合するのに役立ちます。

  • 特性に定数を定義する機能。

php:8.2モジュール・ストリームをインストールするには、次のコマンドを使用します:

sudo dnf module install php:8.2

Oracle Linux内のphp:8.1ストリームからアップグレードする場合は、『Oracle Linux: Oracle Linuxでのソフトウェアの管理』を参照してください。

phpモジュール・ストリームのサポート期間の詳細は、『Oracle Linux: 製品ライフ・サイクル情報』を参照してください。

PostgreSQLバージョン16の可用性

Oracle Linux 8.10では、PostgreSQL 16をpostgresql:16モジュール・ストリームとして使用できます。PostgreSQL 16には、バージョン15よりも多くの新機能および拡張機能が含まれています。

主な拡張機能は次のとおりです:

  • データベース操作の一括ロードのパフォーマンスが向上しました。

  • libpqライブラリが接続レベルのロード・バランシングを処理します。クライアントが使用可能なホストおよびアドレスへの接続を試みる順序を制御するために、新しいload_balance_hosts = disable | randomオプションを使用できます。

  • カスタム構成ファイルを作成し、pg_hba.confおよびpg_ident.confファイルに含める機能。

  • pg_hba.conf内のユーザー名とデータベース名、およびpg_ident.confファイル内のユーザー名の正規表現照合が拡張されました。

その他の変更点は次のとおりです:

  • PostgreSQLがpostmasterバイナリとともに配布されなくなりました。指定されたsystemdユニット・ファイル(systemctl start postgresコマンド)を使用してpostgresqlサーバーを起動するユーザーは、この変更の影響を受けません。postmasterバイナリを介してpostgresqlサーバーを直接起動する場合は、かわりにpostgresバイナリを使用する必要があります。

  • PostgreSQLでは、パッケージ内でPDF形式のドキュメントが提供されなくなりました。かわりに、PostgreSQLオンライン・ドキュメントを使用してください。また、「Using PostgreSQL」も参照してください

postgresql:16ストリームをインストールするには、次のコマンドを使用します:

sudo dnf module install postgresql:16

Oracle Linux内の以前のpostgresqlストリームからアップグレードするには、『Oracle Linux: Oracle Linuxでのソフトウェアの管理』で説明されている手順に従います。

postgresqlモジュール・ストリームのサポート期間の詳細は、『Oracle Linux: 製品ライフ・サイクル情報』を参照してください。

NGINXバージョン1.24の可用性

NGINX 1.24 Webおよびプロキシ・サーバーは、新しいnginx:1.24モジュール・ストリームに含まれており、次の重要な変更があります:

Transport Layer Security (TLS)に関連する新機能および変更:

  • ssl_session_cacheディレクティブで共有メモリーを使用する場合、暗号化キーがTLSセッション・チケットに対して自動的にローテーションされます。

  • Secure Sockets Layer (SSL)プロキシを使用した構成でのメモリー使用の最適化が改善されました。

  • ipv4=offパラメータを使用して、IPアドレスの解決中にIPv4アドレスの検索を無効にできるようになりました。

  • 新しい$proxy_protocol_tlv_*変数を使用できます。これらの変数を使用して、PROXY v2 TLVプロトコルに表示されるType-Length-Value (TLV)フィールドの値を格納できます。
  • 新しいbyte range機能がngx_http_gzip_static_moduleに追加されました。

その他の変更点:

  • ヘッダー行が、リンクされたリストとして内部APIに表示されるようになりました。

  • NGINXが、ngx_http_perl_module$r->header_in()メソッドのFastCGI、SCGIおよびuwsgiバックエンドに渡され、$http_...$sent_http_...$sent_trailer_...$upstream_http_...および$upstream_trailer_...変数のルックアップ中に、任意のヘッダー行を同じ名前付きヘッダー文字列と結合できるようになりました。

  • リスニング・ソケットのプロトコル・パラメータを再定義すると、警告メッセージが表示されます。

  • クライアントがパイプライン・リクエストを使用した場合、NGINXは接続を長引かせて閉じます。

  • 様々なSSLエラーのロギング・レベルがCriticalからInformationalに低下しました。

nginx:1.24ストリームをインストールするには、次を使用します:

sudo dnf module install nginx:1.24

Oracle Linux内のnginx 1.22ストリームからアップグレードするには、『Oracle Linux: Oracle Linuxでのソフトウェアの管理』を参照してください。

phpモジュール・ストリームのサポート期間の詳細は、『Oracle Linux: 製品ライフ・サイクル情報』を参照してください。

バージョン2.43.0に更新されたGit

Gitバージョン2.43が次の拡張機能とともにこのリリースに含まれています。

  • git check-attrコマンドには、現在の作業ディレクトリではなく、指定されたツリー・オブジェクトから.gitattributesファイルを読み取るために使用できる新しい--sourceオプションがあります。

  • Gitが1つ以上のWWW-Authenticateヘッダーを含むHTTPレスポンスを受信すると、各WW-Authenticateヘッダーの値がGitによって資格証明ヘルパーに渡されます。

  • 空のコミットの場合、git format-patchコマンドを使用して、空のファイルを作成するかわりに、コミットのヘッダーを含む出力ファイルに書き込むことができます。

  • git blame --contents=*<file>* *<revision>* -- *<path>*コマンドを使用して、*<revision>*につながる履歴を介して*<file>*から始まる行の起点を調べることができます。

  • git log --formatコマンドが、さらにカスタマイズするために%(decorate)プレースホルダーを受け入れ、--decorateオプションによって提供される機能を拡張するために更新されました。

バージョン3.4.1に更新されたGit LFS

Git Large File Storage (LFS)バージョン3.4.1には、次の重要な変更が含まれています:

  • git lfs pushコマンドが標準入力から参照およびオブジェクトIDを読み取るようになりました。

  • Git LFSが、Gitに依存することなく代替のリモートを処理するようになりました。

  • Git LFSがWWW-Authenticateレスポンス・タイプ・ヘッダーを資格証明ヘルパーとして処理するようになりました。