第5章 Rust 1.84.1 Toolset の変更点
RHEL は、バージョン 1.84.1 で Rust Toolset を提供します。以前提供されていたバージョン 1.79.0 以降の主な機能拡張は次のとおりです。
-
新しい
LazyCell
およびLazyLock
タイプは、最初の使用時まで初期化を遅延します。これらは、各インスタンスに初期化関数が含まれた以前のOnceCell
およびOnceLock
タイプを拡張します。 - 標準ライブラリーの新しいソート実装により、実行時のパフォーマンスとコンパイル時間が向上します。また、コンパレーターが完全な順序を生成していない場合を検出し、ソートされていないデータを返す代わりにパニックを発生させるようにしています。
-
不透明な戻り値の型の正確なキャプチャーが追加されました。新しい
use<..>
構文は、impl Trait
戻り値の型で使用されるジェネリックパラメーターと有効期間を指定します。 const
コードに多くの新機能が追加されました。以下に例を示します。- 浮動小数点サポート
-
インラインアセンブリーの
const
immediate - 静的なものへの参照
- ミュータブルな参照とポインター
unsafe
コードに対する多くの新機能が追加されました。次に例を示します。- 厳密な履歴管理 API
-
&raw
ポインター構文 - 静的なものを安全に処理する
-
安全でない
extern
ブロック内で安全な項目を宣言する
-
Cargo 依存関係リゾルバーはバージョンを認識するようになりました。依存関係クレートがサポートされる最小 Rust バージョンを指定している場合、Cargo は依存関係グラフを解決するときに、最新の
semver
互換のクレートバージョンを使用する代わりに、この情報を使用します。
互換性に関する注意事項:
-
WebAssembly System Interface (WASI) ターゲットが
rust-std-static-wasm32-wasi
からrust-std-static-wasm32-wasip1
に変更されました。コマンドラインで--target wasm32-wasip1
パラメーターを使用して WASI ターゲットを選択することもできます。詳細は、アップストリームブログ投稿 Changes to Rust’s WASI targets を参照してください。 -
分割されたパニックフックとパニックハンドラー引数
core::panic::PanicInfo
とstd::panic::PanicInfo
は異なる型になりました。 -
extern "C"
関数は、キャッチされていないパニック時にプロセスを中止します。ABI 境界を越えてアンワインドできるようにするには、代わりにextern "C-unwind"
を使用します。
Rust Toolset は Rolling Application Stream であり、Red Hat は最新バージョンのみをサポートします。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。