BT

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

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年8月24日. 推定読書時間: 2 分 |

原文(投稿日: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には他にも多数の変更があり,その内容はリリースノートで確認することができる。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション

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


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

Follow

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

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

Like

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

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

Notifications

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

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

BT