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

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

バージョン3.12でリリースされたPython

Oracle Linux 10には、Python 3.12がデフォルトのPython実装として含まれています。Pythonは、非モジュラpython3パッケージとしてBaseOSリポジトリに配布され、通常はデフォルトでインストールされます。Python 3.12には、Oracle Linux 10での完全なライフサイクル・サポートが含まれています。ライフサイクルが短い他のバージョンのPython 3は、AppStreamリポジトリから入手でき、並行してインストールできます。/usr/bin/pythonpipなどの他のPython関連のコマンドは、バージョン番号のない形式で提供され、デフォルトのPython 3.12バージョンを指しています。Python 3.11と比較して重要な拡張機能は次のとおりです:
  • 汎用クラスおよび汎用関数の新しいタイプの文および型パラメータ構文。
  • 書式設定された文字列リテラル(f-strings)が構文で形式化され、パーサーに直接統合できるようになりました。
  • インタプリタごとの一意のグローバル・インタプリタ・ロック(GIL)。
  • Pythonコードからバッファ・プロトコルを使用できるようになりました。
  • セキュリティを改善するために、SHA1、SHA3、SHA2-384、SHA2-512およびMD5暗号化アルゴリズムの組込みhashlib実装が、HACL*プロジェクトから正式に検証されたコードに置き換えられました。組込み実装は、OpenSSLによって提供されない場合はフォールバックとして、引き続き使用できます。
  • CPythonのディクショナリ、リストおよび設定の包含は、包含実行の速度を上げるためにインライン化されるようになりました。
  • CPythonは、Linuxのperfプロファイラと連携するようになりました。
  • CPythonは、サポートされているプラットフォームでスタック・オーバーフローの保護を提供するようになりました。
  • Python 3.12は、GCCの-O3最適化フラグを使用してコンパイルされます。このフラグは、アップストリームでデフォルトで使用され、パフォーマンスが向上します。
Python 3.12スタックからパッケージをインストールするには、次のコマンドを使用します:
# dnf install python3
# dnf install python3-pip
インタプリタを実行するには、次のコマンドを使用します:
$ python
$ python3
$ python3 -m pip --help

バージョン5.40でリリースされたPerl

Perlバージョン5.40には、5.32バージョンからの次の変更が含まれています:
  • コア機能の拡張:
    • Unicode 15.0が使用可能です。
    • -gコマンドラインのオプション、umaskのオプション-0777の別名。
    • -Mコマンドライン・オプションは空白を受け入れます。
    • 組込みモジュールに、新しい常時表示機能に関するドキュメントが含まれるようになりました。
    • 例外処理のためのtry/catch機能。
    • 非推奨警告に、より詳細な制御を提供する特定のサブカテゴリが含まれるようになりました。1つの文ですべての非推奨警告を無効にできます。
    • @INCフックは、新しい$INC変数およびINCDIRメソッドで拡張されています。
    • deferモジュールとfinallyモジュールからの禁止された制御フローが、コンパイル時に検出されるようになりました。
    • パターンで(?{ … })および(??{ … })を使用すると、そのパターンでグローバルに様々な最適化が無効になるようになりました。
    • REG_INF正規表現エンジン数量詞の制限は、65,536から2,147,483,647に増加します。
    • 新しい正規表現変数${^LAST_SUCCESSFUL_PATTERN}では、現在のスコープで一致した最後の成功したパターンにアクセスできます。
    • 新しい__CLASS__キーワード
    • Perlでは、^^論理XOR演算子が提供されるようになりました。
  • 互換性のない変更:
    • 物理的に空のソート関数によって、コンパイル時のエラーがトリガーされるようになりました。
    • readline()関数は、ストリーム・エラーおよびEOFフラグをクリアしなくなりました。
    • INITブロックは、BEGINブロック内のexit()関数の後に実行されなくなりました。
    • 不明なパッケージでimportメソッドをコールすると、警告が生成されるようになりました。
    • return関数は、間接オブジェクトを許可しなくなりました。
    • エラーおよび警告での変更により、テストが失敗する可能性があります。
  • 非推奨:
    • パッケージ名セパレータとしての'文字の使用は推奨されません。
    • switch機能およびsmartmatch演算子~~は非推奨です。
    • 外部スコープから内部スコープにジャンプするためのgoto関数の使用は推奨されません。
  • 内部変更:
    • 非推奨のC関数が複数削除されました。
    • 内部C API関数は、それをサポートするプラットフォームの__attribute__((hidden))属性で非表示になりました。これは、これらのプラットフォーム上のXSモジュールからコールできなくなったことを意味します。
  • モジュール:
    • Term::TableおよびTest2::SuiteモジュールがPerlコアに追加されました。
    • ほとんどのモジュールが更新されました。

詳細は、perl5340deltaperl5360deltaperl5380deltaおよびperldeltaのマニュアル・ページを参照してください。

バージョン3.3.7でリリースされたRuby

Rubyバージョン3.3.7には、パフォーマンスの拡張、修正、および次のようないくつかの新機能が含まれています:

  • 新しいPrismパーサーがRipperの代替手段を提供しています。詳細は、https://github.com/ruby/prismを参照してください。
  • Rubyジャストインタイム(JIT)コンパイラであるYJITは安定しており、パフォーマンス向上のために更新されました。このコンパイラは本番環境で使用します。
  • Regexp照合アルゴリズムには、セキュリティの拡張機能が含まれています。
  • M:Nスレッド・スケジューラを使用できます。
  • BisonのかわりにLrama LALRパーサー・ジェネレータを使用します。
  • Racc gemはバンドルされたgemになりました。

バージョン22でリリースされたNode.js

Node.jsバージョン22には、バージョン20からの次の変更が含まれています:
  • V8 JavaScriptエンジン・バージョン12.4。
  • V8 Maglevコンパイラは、使用可能なアーキテクチャでデフォルトで有効になっています。たとえば、AMD/Intel 64ビット・アーキテクチャと64ビットARMアーキテクチャなどです。
  • Maglevは、短期間のCLIプログラムのパフォーマンスを向上させます。
  • npmパッケージ・マネージャのバージョン10.8.1。
  • node --watchモードが安定しているとみなされるようになりました。監視モードでは、監視済ファイルの変更によってNode.jsプロセスが再起動されます。
  • WebSocketのブラウザ互換実装が安定しているとみなされ、デフォルトで有効になっています。したがって、Node.jsに対するWebSocketクライアントは、外部依存性なしで使用できます。
  • Node.jsには、package.jsonからスクリプトを実行するための実験的な機能が含まれています。この機能を使用するには、node --run <script-in-package.json>コマンドを実行します。

バージョン8.4でリリースされたMySQL

MySQLバージョン8.4には、8.0以降の次の重要な変更が含まれています:
  • mysql_native_password認証プラグインは非推奨になり、デフォルトで有効にならなくなりました。
  • BINLOG_ADMIN権限を持つユーザー・アカウントまたはロールは、MySQL 8.4へのアップグレード後にTRANSACTION_GTID_TAG権限を自動的に受け取ります。
  • mysql_upgrade_historyファイルは、MySQL 8.4のインストール時にサーバーのデータ・ディレクトリで作成または更新されます。このファイルはJSON形式であり、インストールされているバージョン、インストール日時、およびリリースが長期サポート(LTSシリーズ)の一部であったかイノベーション・シリーズの一部であったかに関する情報が含まれています。
  • %および_文字をデータベース権限でワイルドカードとして使用することは非推奨です。これらの文字はリテラルとして処理されます。partial_revokesサーバー・システム変数がONに設定されている場合は、すでにリテラルとして扱われます。
  • 権限のチェック時に、サーバーによる%文字をlocalhostのシノニムとして処理することは非推奨です。
  • --tls-versionおよび--admin-tls-versionサーバー・システム変数を使用します。非推奨の--ssl--admin-sslサーバー・オプション、およびhave_sslhave_opensslサーバー・システム変数が削除されました。
  • authentication_policyサーバー・システム変数を使用します。非推奨のdefault_authentication_pluginシステム変数が削除されました。
  • 定義者オブジェクトの作成にはSET_ANY_DEFINER権限を使用し、孤立オブジェクトの保護にはALLOW_NONEXISTENT_DEFINER権限を使用します。非推奨のSET_USER_ID権限は削除されました。
  • 非推奨のmysql_upgradeユーティリティが削除されました。

詳細は、MySQLのドキュメントを参照してください。