BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ブートストラップ,panic処理などが改善されたRust 1.10

ブートストラップ,panic処理などが改善されたRust 1.10

ブックマーク

原文(投稿日:2016/07/11)へのリンク

新たにリリースされたRust 1.10では,オープンソースのディストリビューションをより容易にするため,ブートストラップに新しいアプローチが導入された。他にも,コンパイラのパフォーマンス向上とバイナリサイズ削減を実現したpanicのための新たなcargoオプション,共有ライブラリの新フォーマット,多数のパフォーマンス向上が実現されている。

バージョン1.10では,Rustのブートストラップ,つまりRustコンパイラ自体によるRustコンパイラのビルドに関するアプローチが変更され,以前のように不安定なRust機能に依存することがなくなった。不安定な機能を利用することの最大のデメリットは,特定のナイトリービルド版のRustコンパイラを使用する必要があることだ。これはLinuxディストリビューションにとって望ましいことではない。実際に多くのLinuxディストリビューションでは,信頼性の低いバイナリを避けて,以前にパッケージ化されたバージョンを使用してパッケージの構築を行なうのが通常である。アプローチが変更された結果,Rust 1.10はRust 1.9でビルド可能になった。今後の新バージョンについても,その時点での安定版リリース,例えばRust 1.11はRust 1.10でビルドされるようになる予定だ。

前述のようにRust 1.10では,panic!の動作を定義する新しいビルドオプションが導入されている。デフォルトでは,panic!はスタックの巻き戻しをトリガするが,これにはコンパイラのパフォーマンス,バイナリサイズの両面で一定のコストを伴う。しかしながら,大部分のアプリケーションにとって予想しない問題の処理として適当なのは,完全に合理的な方法でアボートする方法だ。巻き戻しに代えてアボートを実行するために,コマンドラインオプションとして-C panic=abortを指定するか,あるいはCaogo.tomlにpanic=abortを追加することにより,バイナリサイズとコンパイル時間ともに10%の改善が実現する。

同じく,Rust 1.10で新たに導入されたのが,ライブラリが他の言語に組み込まれて使用されることを指定するcdylib crateタイプである。cdylibと既存のdylibとの大きな違いは,Rustプロジェクトで使用するライブラリの推奨フォーマットが維持される点にある。具体的には次のようなものだ。

  • cdylibは静的リンク用である
  • メタデータが含まれない
  • 実行可能ファイルと同様に,参照可能なextern関数のみがシンボルとして公開される
  • -Cフラグによるリンク時最適化が可能

その他にもRust 1.10では,多数のパフォーマンス向上が実現されている。例えば,

Rust 1.10には他にも多数の変更があり,その内容はリリースノートで確認することができる。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT