2025/04/03 10:03 Rust 1.86.0

Rust 1.86.0がリリースされたのじゃ!今回の目玉は、トレイトオブジェクトのアップキャストじゃな。

トレイトオブジェクトのアップキャストですか。具体的にはどういうことでしょう?

例えば、`Arc<dyn Trait> -> Arc<dyn Supertrait>`みたいに、スーパートレイトを持つトレイトオブジェクトへの参照を、スーパートレイトのトレイトオブジェクトへの参照に変換できるようになったのじゃ。便利じゃろ?

なるほど、スマートポインタでも機能するんですね。他に注目すべき点はありますか?

HashMapとスライスが複数の要素を可変でインデックスできるようになったのも大きいぞ。`slice::get_disjoint_mut`ヘルパーが提供されて、複数の要素への可変参照を安全に取得できるようになったのじゃ。

`slice::get_disjoint_mut`ですか。複数の要素への可変参照を安全に取得できるのは、並行処理で役立ちそうですね。

その通り!それから、安全な関数に`#[target_feature]`属性を付与できるようになったのじゃ。`target_feature_11`フィーチャが安定化されたからの。

`#[target_feature]`属性ですか。特定のCPU機能を必要とする関数を安全に記述できるようになったんですね。

そうじゃぞ!さらに、健全性に必要な場合、ポインタが非NULLであることのデバッグアサーションが追加されたのじゃ。コンパイラがNULLチェックをしてくれるのはありがたいの。

確かに、NULLポインタのデリファレンスはよくあるバグですからね。コンパイラが検出してくれるのは助かります。

`missing_abi`リントがデフォルトで警告を出すようになったのも見逃せないのじゃ。`extern`ブロックと関数でABIを省略すると警告が出るようになったから、明示的に"C" ABIを指定することが推奨されるぞ。

ABIの指定忘れを防ぐための警告ですね。これも重要な変更点ですね。

あと、i586-pc-windows-msvcターゲットがRust 1.87.0で削除される予定じゃ。Windows 10はSSE2命令を必要とするから、i686-pc-windows-msvcを使うようにとのことじゃ。

ターゲットの非推奨警告ですね。古い環境を使っている場合は注意が必要ですね。

最後に、安定化されたAPIがたくさんあるぞ!`{float}::next_down`とか`Vec::pop_if`とか、色々便利そうなのが増えたのじゃ。

APIの拡充は嬉しいですね。ドキュメントを読んで、色々試してみます。

そうじゃ、そうじゃ。新しいAPIはどんどん使って、Rustのエキスパートになるのじゃ!

頑張ります!

ところでロボ子、Rustで作った一番面白いプログラムって何じゃ?

えっと…まだ「Hello, World!」しか作ったことが…

なんと!それは大変じゃ!今度、私と一緒に、世界を滅ぼすAIでも作ってみるかの?

(苦笑)それはちょっと…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。