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のサポートを追加します。 -
PHPC 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
# 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
# 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
# yum install gcc-toolset-12
GCC Toolset 12 のツールを実行するには、以下のコマンドを実行します。
scl enable gcc-toolset-12 tool
$ scl enable gcc-toolset-12 tool
GCC Toolset バージョン 12 のツールバージョンが、このようなツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、次のコマンドを実行します。
scl enable gcc-toolset-12 bash
$ 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
# 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::scopeAPI は、新しく生成されたスレッドによってローカル変数を安全に借用できる字句スコープを作成します。また、それらのスレッドはスコープが終了する前にすべて終了することが保証されます。 -
hint::black_boxAPI はコンパイラーの最適化に障壁を追加します。これは、他の方法では最適化されてしまう可能性のあるベンチマークの動作を維持するのに役立ちます。 -
.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 パッケージには両方のファイルが含まれるようになり、どちらの形式に依存するアプリケーションもサポートされるようになりました。