Rustの新しいバージョン「Rust 1.88.0」が公開された。「let chains機能」「naked関数」「Cargoの自動キャッシュクリーニング」などが利用可能になっている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
プログラミング言語「Rust」を開発するRustプロジェクトは2025年6月26日(米国時間)、Rustの新しいバージョン「Rust 1.88.0」を発表した。旧バージョンのRustをrustupコマンドで導入している場合、以下のコマンドを実行することで、Rust 1.88.0を入手できる。
$ rustup update stable
Rust 1.88.0のハイライトは以下の通り。
「if」や「while」の条件式内で「let」文を「&&」で連結できるようになった。条件式に「boolean」型を組み合わせることも可能だ。これによって、「if/if let」と「while/while let」の違いをあまり意識せずに使えるようになった。
letの中で使うパターンは、反駁不可能(必ず一致するもの)と反駁可能(値によってはマッチしないもの)のどちらも利用できる。letで取り出した変数(バインディング)は、その後に続く条件やifやwhileの本体の中でも使える。
例えば、以下のスニペットは複数の条件を組み合わせており、以前のバージョンではif/if letブロックをネストする必要があった。
なお、この機能はRust 2024エディションでのみ利用できる。
Rustのコンパイラが、関数の開始時や終了時に自動的に挿入する処理(プロローグとエピローグ)を生成しない「naked関数」を記述できるようになった。これによって、特定の関数に対してどんなアセンブリ命令が生成されるかを開発者が制御できるようになった。従来のバージョンでは「global_asm!」ブロックで関数を定義していたが、それよりも容易に同じことができるようになった。naked関数は「#[unsafe(naked)]」属性でマークされ、その本体は単一の「naked_asm!」呼び出しで構成される。以下に例を示す。
Rustの条件付きコンパイルで使われる「cfg」述語言語がbooleanリテラルである「true」と「false」をサポートした。それぞれ「常に有効」(必ずコンパイルされる)または「常に無効」(コンパイルされない)の設定として機能する。従来は、空の述語リストを使って「cfg(all())」が有効、「cfg(any()))」が無効といったようにしていたが、「cfg(true)」と「cfg(false)」とできるようになったため、意図した内容をより直接的に表現できる。
これらのサポートは、「cfg」「cfg_attr」属性、組み込み「cfg!」マクロ、Cargoの「[target]」テーブルなど、Rustの条件付きコンパイルが使える部分で利用できる。
Cargoが、ホームディレクトリのキャッシュでガベージコレクションを自動実行するようになった。
ビルド時に、Cargoは依存関係として必要なクレート(外部ライブラリ)をダウンロードしてキャッシュするが、従来は、これらのダウンロードファイルは自動削除されず、PCに残り続けていた。Rust 1.88.0では、そういった古いファイル(「.crate」ファイルなど)を自動的に削除する。
Rust 1.88.0ではこれらの新機能が導入された他、多数のAPIが安定化されている。また、「i686-pc-windows-gnu」ターゲットが「Tier 2」に降格した。このターゲット向けのコンパイラと標準ライブラリツールは引き続きrustupの仕組みで配布されるが、Tier 2では、Tier 1よりもテストが簡略化されている。
Copyright © ITmedia, Inc. All Rights Reserved.