Rust Core Teamは,Rust 1.2安定版と1.3ベータリリースの提供開始を発表した。Rust 1.2ではツーリングとコンパイラのパフォーマンス向上,並列コード生成などを中心に,MSVCツールチェーンのサポートも追加されている。
重要な変更点は次のようなものだ。
-
コンパイルの高速化: Rust 1.2では,ベンチマークコンパイルで約30%という,コンパイル時間のスピードアップを実現している。Rustのパッケージリポジトリである“Creates”から選んだ実際のプロジェクトでは,ターゲットプロジェクトによって1.16~1.62倍の改善が確認できた。
-
並列コード生成: デバッグビルドで特に有用なのが,並列コード生成によって,4コアマシン上のブートストラップ時で33%のスピードアップが実現したことだ。ただし並列コード生成を有効にすると,いくつかの最適化が無効になり,
-O1
フラグを使用した場合と同程度となる。 -
Cargo: Rustのパッケージマネージャも,主に2つのケースでパフォーマンスが向上した。再コンパイルが必要のない状態でのビルド時と,大規模なプロジェクトで共有ターゲットディレクトリを使用する場合で,いずれも共通の依存関係をキャッシュすることで実現している。
-
MSVCツールチェーンのサポート: Rust 1.2から,コンパイラは,それまでのバージョンで使用していたmingwに加えて,Windowsネイティブなツールチェーンを使ったリンクが可能になった。さらに,MSVCプラットフォームが最優先のプラットフォームとなった。Rust言語のクレートは今後,すべてそこでテストされる。
-
言語の変更: 最も関係するのは,動的サイズ型が,動的サイズの型強制(type coercion)と合わせて完全にサポートされたことだ。動的サイズ型とは,コンパイラにとってサイズが未知の型である。Tをシーケンシャルにレイアウトした
[T]
や,Trait
トレートを実装したタイプTを表すTrait
などがその例だ。動的サイズ型はRust 1.0の頃から存在したが,Rust 1.2では,[T]
やTrait
のような存在型(existential type)に適用可能なスマートポインタを可能にすることで,実装が完全なものになった。
Rust 1.3ベータ版については,さらにパフォーマンスが向上すると同時に,主として標準ライブラリの改善が図られている。さらにRust 1.3では,Windows XPの暫定サポートが追加される。ただしXPは”最優先”の対象としては扱われない。
Rust 1.2に関する詳細は,リリースノートで確認することができる。