4.11. コンパイラーおよび開発ツール
新しいモジュールストリーム: swig:4.1
RHEL 8.8 では、新しいモジュールストリーム swig:4.1
として利用できる、SWIG (Simplified Wrapper and Interface Generator) バージョン 4.1 が導入されました。
RHEL 8.4 でリリースされた SWIG 4.0
と比較すると、SWIG 4.1
は次のとおりです。
-
Node.js
バージョン 12 - 18 のサポートを追加し、Node.js
バージョン 6 より前のサポートを削除します。 -
PHP 8
のサポートを追加します。 -
PHP
C API を通じて完全にPHP
ラッピングを処理し、デフォルトでは.php
ラッパーを生成しなくなりました。 -
Perl 5.8.0
以降のバージョンのみをサポートします。 -
Python
バージョン 3.9 から 3.11 のサポートを追加します。 -
Python 3.3
以降のPython 3
バージョンとPython 2.7
のみをサポートします。 -
Python
で生成されたコードにおけるさまざまなメモリーリークの修正を提供します。 - C99、C++11、C++14、および C++17 標準のサポートが向上し、C++20 標準の実装が開始されます。
-
C++
std::unique_ptr
ポインタークラスのサポートを追加します。 - C++ テンプレートの処理に複数の小さな改善が含まれています。
- さまざまなケースでの C++ 宣言の使用法を修正しました。
swig:4.1
モジュールストリームをインストールするには、以下を使用します。
# yum module install swig:4.1
以前の swig
モジュールストリームからアップグレードするには、後続のストリームへの切り替え を参照してください。
swig
モジュールストリームのサポート期間の詳細は、Red Hat Enterprise Linux Application Streams のライフサイクル を参照してください。
新しいモジュールストリーム: jaxb:4
RHEL 8.8 では、新しい jaxb:4
モジュールストリームとして Jakarta XML Binding (JAXB) 4 が導入されています。JAXB は、開発者が Java クラスを XML 表現にマッピングしたり、XML 表現からマッピングしたりできるようにするフレームワークです。
jaxb:4
モジュールストリームをインストールするには、以下を使用します。
# yum module install jaxb:4
Bugzilla:2055539
GCC Toolset 12 の更新
GCC Toolset 12 は最新バージョンの開発ツールを提供するコンパイラーツールセットです。このツールセットは、AppStream
リポジトリーにおいて、Software Collection の形式で、Application Streams として利用できます。
RHEL 8.8 で導入された注目すべき変更点は次のとおりです。
- GCC コンパイラーがバージョン 12.2.1 に更新され、アップストリームの GCC で利用可能なバグ修正および機能拡張が数多く追加されました。
-
annobin
がバージョン 11.08 に更新されました。
以下のツールおよびバージョンは、GCC Toolset 12 で利用できます。
ツール | バージョン |
---|---|
GCC | 12.2.1 |
GDB | 11.2 |
binutils | 2.38 |
dwz | 0.14 |
annobin | 11.08 |
GCC Toolset 12 をインストールするには、root で以下のコマンドを実行します。
# yum install gcc-toolset-12
GCC Toolset 12 のツールを実行するには、以下のコマンドを実行します。
$ scl enable gcc-toolset-12 tool
GCC Toolset バージョン 12 のツールバージョンが、このようなツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、次のコマンドを実行します。
$ scl enable gcc-toolset-12 bash
詳細は、GCC ツールセット 12 を参照してください。
glibc
のセキュリティー強化が追加されました。
SafeLinking
機能が glibc
に追加されました。その結果、アロケーターのスレッドローカルキャッシュなど、特定の単一リンクリストの破損に対する malloc
ファミリー関数の保護が向上します。
glibc
動的ローダーのアルゴリズムが改善されました。
共有オブジェクトの依存関係が深くネストされている場合、共有オブジェクトを処理するための glibc
動的ローダーの O(n3) アルゴリズムにより、アプリケーションの起動時間とシャットダウン時間が遅くなることがありました。この更新により、動的ローダーのアルゴリズムが改善され、深さ優先検索 (DFS) が使用されるようになりました。その結果、共有オブジェクトの依存関係が深くネストされている場合、アプリケーションの起動時間とシャットダウン時間が大幅に改善されます。
動的ローダーの O(n3) アルゴリズムは、glibc
ランタイム調整可能パラメーター glibc.rtld.dynamic_sort
を使用して選択できます。調整可能パラメーターのデフォルト値は 2 です。この値は新しい DFS アルゴリズムを表します。互換性のために以前の O(n3) アルゴリズムを選択するには、調整可能パラメーターを 1 に設定します。
# GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1 # export GLIBC_TUNABLES
Bugzilla:1159809
LLVM Toolset がバージョン 15.0.7 にリベースされました。
LLVM Toolset がバージョン 15.0.7 に更新されました。主な変更点は、以下のとおりです。
-
-Wimplicit-function-declaration
および-Wimplicit-int
警告は、C99 以降ではデフォルトで有効になっています。これらの警告は、Clang 16 以降ではデフォルトでエラーになります。
Rust Toolset がバージョン 1.66.1 にリベースされました。
Rust Toolset がバージョン 1.66.1 に更新されました。主な変更点は、以下のとおりです。
-
thread::scope
API は、新しく生成されたスレッドによってローカル変数を安全に借用できる字句スコープを作成します。また、それらのスレッドはスコープが終了する前にすべて終了することが保証されます。 -
hint::black_box
API はコンパイラーの最適化に障壁を追加します。これは、他の方法では最適化されてしまう可能性のあるベンチマークの動作を維持するのに役立ちます。 -
.await
キーワードは、for
とIntoIterator
の関係と同様に、IntoFuture
特性を使用して変換を行うようになりました。 - ジェネリック関連型 (GAT) を使用すると、特性にジェネリックパラメーターを持つ型エイリアスを含めることができ、型と有効期間の両方にわたる新しい抽象化が可能になります。
-
新しい
let
-else
ステートメントでは、条件付きパターンマッチングでローカル変数をバインドし、パターンが一致しない場合に分岐else
ブロックを実行できます。 -
ラベル付きブロックを使用すると、オプションで式の値を追加して、
break
ステートメントはブロックの末尾にジャンプできます。 -
rust-analyzer
は言語サーバープロトコルの新しい実装であり、多くのエディターで Rust のサポートを可能にします。これは以前のrls
パッケージを置き換えますが、rust-analyzer
に移行するにはエディターの設定を調整する必要がある場合があります。 -
Cargo には、
Cargo.toml
から依存関係を削除するための新しいcargo remove
サブコマンドがあります。
Go Toolset がバージョン 1.19.4 にリベースされました。
Go Toolset がバージョン 1.19.4 に更新されました。主な変更点は、以下のとおりです。
次のパッケージに対するセキュリティー修正:
-
crypto/tls
-
mime/multipart
-
net/http
-
path/filepath
-
バグ修正:
-
go
コマンド - リンカー
- ランタイム
-
crypto/x509
パッケージ -
net/http
パッケージ -
time
パッケージ
-
Bugzilla:2174430
tzdata
パッケージには /usr/share/zoneinfo/leap-seconds.list
ファイルが含まれるようになりました。
以前は、tzdata
パッケージには、/usr/share/zoneinfo/leapseconds
ファイルのみが同梱されていました。一部のアプリケーションは、/usr/share/zoneinfo/leap-seconds.list
ファイルによって提供される代替形式に依存しているため、エラーが発生する可能性があります。
今回の更新により、tzdata
パッケージには両方のファイルが含まれるようになり、どちらの形式に依存するアプリケーションもサポートされるようになりました。