BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース コンパイル時間短縮,並列コード生成などを実現したRust 1.2

コンパイル時間短縮,並列コード生成などを実現したRust 1.2

原文(投稿日:2015/08/09)へのリンク

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に関する詳細は,リリースノートで確認することができる。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT