概要

Rustチームは2026年4月16日、Rust 1.95.0を正式にリリースした。今回のリリースでは、コンパイル時の設定条件に基づいてコードを分岐できる新マクロcfg_select!の安定化、match式内でif-letガードを使えるようにする改善、そして多数のAPIの安定化が行われた。アップデートはrustup update stableコマンドで適用できる。

cfg_select!マクロとif-letガードの安定化

最大の目玉となるcfg_select!マクロは、コンパイル時に設定条件に基づいてコードパスを分岐する機能を提供する。従来のエコシステムでは「cfg-if」クレートが同様の目的で広く使われていたが、cfg_select!は異なる構文で標準ライブラリに組み込まれ、Unix環境やターゲットポインタ幅、プラットフォーム別など複数の条件分岐に対応する。

もう一つの重要な改善がmatch式でのif-letガード対応だ。これはRust 1.88で導入された「let chains」機能をmatch式に拡張したもので、パターンマッチに基づく条件判定が可能になり、マッチした値と条件結果の両方に同時にアクセスできるようになった。コードの表現力が向上し、ネストを減らしてより直感的なパターンマッチが書けるようになる。

安定化されたAPI群

今回のリリースでは多数のAPIが安定化された。メモリ操作関連では、MaybeUninitと配列間の相互変換メソッド群やCell型の参照変換機能が追加された。アトミック操作では、AtomicPtrAtomicBoolAtomicIsizeAtomicUsizeupdateおよびtry_updateメソッドが追加され、compare-and-swapループをより簡潔に書けるようになった。

コレクション操作では、Vec::push_mutVec::insert_mutなどミュータブル参照を返す新メソッドが追加されたほか、VecDequeLinkedListにも同等のメソッドが用意された。またbool型への整数からの変換や、ポインタの安全でない参照変換メソッド、レイアウト計算の拡張機能なども安定化されている。

注目の破壊的変更

今回のリリースでは、カスタムJSONターゲット仕様をrustcに渡す機能が安定版ツールチェーンから削除された点も注目される。これはカスタムターゲット仕様ファイルを使って独自プラットフォーム向けのビルドを行っていたユーザーに影響する可能性がある。ただし、nightlyツールチェーンを使用するユーザーや完全に標準ターゲットのみを使うユーザーには影響しない。Rustチームはトラッキングイシューでカスタムターゲットのユースケースを収集しており、何らかの形での将来的な安定化を検討している。