BT

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

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

.NETエコシステムの紹介

David Pine 2019年11月7日 午後7時48分

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。