BT

Rust 1.8、Cargoベースの新しいビルドシステムなどを導入

| 作者: Sergio De Simone フォローする 13 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2016年5月10日. 推定読書時間: 3 分 |

原文(投稿日:2016/04/19)へのリンク

Rust 1.8では、2つの新しい言語機能と多数の標準ライブラリの改善が追加された。加えて、rustcのためのCargoベースの新しいビルドシステムが導入された。これはRustのブートストラッピングに向けた最初のステップのように見える。

1つ目の新機能は、+=-=などの等号オペレーターファミリーに関係するもので、トレイトを使ったオーバーロードが可能になる。次のようなコードを書くことで、Countのための+=を定義できる。

use std::ops::AddAssign;

#[derive(Debug)]
struct Count {
    value: i32,
}

impl AddAssign for Count {
    fn add_assign(&mut self, other: Count) {
        self.value += other.value;
    }
}

2つ目はマイナーな構文変更で、フィールドのないstructを定義する際、中括弧を付けてもエラーにならなくなる。(訳注:原文に誤り、訂正済み)例:

struct Foo {}; // 正しい。以前は {} を省略する必要があった。

この変更によりマクロが少し書きやすくなるだろう。structが空か空でないかで切り替える必要がなくなる。

大きなものは、Rust 1.8がCargoをベースとする新しいビルドシステムを導入したことだ。最終的にMakeを置き換えることになる。Rustの開発者でこの変更を実装するプルリクエストを出したAlex Crichton氏によると、新しいビルドシステムの導入にはいくつかの理由があるという。

  • Makefileは不可解なことが多い。したがって、必要に応じて変更を加えるのがとても大変だ。
  • makeはかなりポータブルだが、「非常に」ポータブルというわけではない。注目すべきは、Windowsシステムにデフォルトのmakeがないことだ。
  • Rustコンパイラと標準ライブラリがCargoに移行することは、Rustプログラマーの開発プロセスに一貫性をもたらす。また、crates.ioパッケージマネージャーのようなツールも共通で使えるようになる。

だが、こうしたメリットを得るには、非常にコストがかかる。Rustのmakeベースのビルドシステムは、何年もかけて注意深く丹念に作られてきたものだ。makeの置き換えは「長い道のり」になるだろう。Crichton氏は語る。

100%-Rustのビルドシステムが利用可能になることは、完全なRustのブートストラッピングに向けた第一歩のように見える。これはRust 1.10で実現される予定だ。

最後に、標準ライブラリはさらに安定になっている。特に、UTF–16関連メソッド、各種time関連API、先に述べたオペレーターのオーバーロードに必要なトレイトなど。

なお、まだベータ品質だと見なされて、明記されていない新機能にrustupがある。これを使うことで、開発者は異なるプラットフォームのための追加のstdlibバージョンをインストールできるようになる。例えば、依存関係のあるものを自動的に処理することで、クロスコンパイルの扱いが簡単になるだろう。

$ rustup target add x86_64-unknown-linux-musl
  info: downloading component 'rust-std' for 'x86_64-unknown-linux-musl'
  13.77 MiB / 13.77 MiB (100.00%) 1.47 MiB/s ETA: 0s
  info: installing component 'rust-std' for
  'x86_64-unknown-linux-musl'

Rust 1.8はインストールページからダウンロードできる。GitHubに詳細なリリースノートがある。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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