コンパイル時間短縮,並列コード生成などを実現したRust 1.2
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に関する詳細は,リリースノートで確認することができる。
特集コンテンツ一覧
Raspberry Piの今
太田昌文(日本Raspberry Pi ユーザーグループ代表) 2015年7月23日 午前1時17分
子どもの創造的活動のための環境としてのScratchおよびRasberryPiの可能性
阿部和広(青山学院大学/津田塾大学 非常勤講師)+InfoQ編集 2015年7月9日 午後9時15分
デザイン思考とMVPを統合し、製品開発を改善する方法
Dmytro Svarytsevych 2015年7月9日 午後8時51分
簡潔なJavaコード
Casimir Saternos 2015年5月24日 午後7時57分
こんにちは
コメントするには InfoQアカウントの登録 または ログイン が必要です。InfoQ に登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。
あなたの意見をお聞かせください。