Rustは、その機能と業界での採用の両方に関して、ここ数年にわたって着実なペースで成長している。現在、バージョン6で、Rustは、Rustエコシステムの安定性を妨げることなく新しい構文を導入する新しいエディションに近づいている。
Rustエディションは、安定性を維持しつつ、言語を成長させるのに役立つメカニズムである。エディションは2~3年ごとにリリースされる。以前はパッケージ内で利用できる機能を収集していた。そして、ドキュメントおよびツールレベルで適切にサポートされていた。しかし、他のエディションとソース互換性がない可能性がある。
新しいエディションがコンパイラで利用できるようになると、クレートを最大限に活用するには、明示的にオプトインする必要があります。このオプトインにより、コード内の識別子と競合する可能性のある新しいキーワードを追加したり、警告をエラーに変えたりするなど、互換性のない変更をエディションに含めることができます。
エディションについて理解するために重要なことは、async
やawait
の導入など、構文レベルでいくつかの非互換性をもたらす機能を除いて、ほとんどの機能がすべてのエディションで利用可能になるということである。Rustコンパイラは、異なるエディションの言語を使って、クレートを使用しリンクすることができる。
Rust 2021 Editionに追加される変更のリストには、std::convert::TryInto
、std::convert::TryFrom
、std::iter::FromIterator
など、標準ライブラリプレリュードのいくつかの新しいメソッドが含まれている。他にも、配列参照に加えて、配列値の反復をサポートするIntoIterator
や、構造体全体ではなく、使用する構造体のフィールドのみをキャプチャする新しいクロージャ動作が含まれる。また、panic
が改善され、println
との一貫性を保つために、常に最初の引数をフォーマット文字列として必要とし、解釈される。さらに、新しいキーワード予約構文なども含まれている。
Rustは、言語および関連ツールとして進化するだけでなく、実稼働環境での採用も増えているとRustチームは言っている。主なハイライトは、MicrosoftとAmazonの両方による、クラウド上でのRustのサポートである。また、HTTP/sとTLS通信にRustライブラリを使うためのオプトインサポートを提供するcURL
もである。
同時に、Rustの採用はいくつか課題がある環境で検討されている。たとえば、RustはLinuxドライバーを安全に開発するための言語と見なされている。そして、Androidプロジェクトは、セキュリティの向上を目的として、RustでOSの低レベルコンポーネントを作成できるようにするための取り組みをすでに開始している。
他にも、Rustの進化と成長に関連する興味深いプロジェクトとしてrust-gpuやFerroceneがある。rust-gpu
は、Rustでグラフィックシェーダーを作成するコンパイラバックエンドである。Ferrocene
は、Rustをミッション・セーフティクリティカルシステム用の第一言語にすることを目的としている。
Rustチームは、Rust 2021 Editionの準備が9月までに整うと言っている。そして、10月21日にリリースが予定されているRust 1.56.0に含めることを目指している。