BT

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

| 作者: Sergio De Simone フォローする 12 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年8月27日. 推定読書時間: 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に関する詳細は,リリースノートで確認することができる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

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

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

あなたの意見をお聞かせください。

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

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

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

このスレッドのメッセージについてEmailでリプライする

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

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT