Rustコアチームが1.5の安定版をリリースした。700に近い変更点には,cargo install
とメタデータサイズの20%縮小化が含まれている。
ブログ記事“Announcing Rust 1.5”の中で,コアチームはcargo install
を,“Cargoアプリケーションパッケージをローカルシステムにインストールするための新しいサブコマンド”である,と説明している。
cargo install
のメリットは,Rustコードをフォーマットするツールとして開発中のrustfmtなど,アプリケーションのインストールを通じてすでに提供されていますが,それだけではなく,Cargo自身に新たなサブコマンドをインストールするためにも使用できるのです。
例えば,
cargo-check
: プロジェクトのバイナリのビルドは実施せずに,静的チェックのみを行う。cargo-edit
: コマンドラインからプロジェクトの依存関係の追加あるいは削除を行う。cargo-graph
: プロジェクトの依存グラフをGraphVizを使用して構築する。cargo-watch
: プロジェクト更新時にCargoコマンドを自動的に再実行する。
今回のリリースでの注目すべき点は,crates.ioでホストされたRustアプリケーションを,cargo install
コマンドを使って˜/.cargo/bin
にローカルインストールできるようになったことだ。これは特に,Cargoを新しいサブコマンドで強化する場合に有効である。例えばcargo-foo
という名称のバイナリが$PATH
にあれば,cargo foo
で実行することができる。
1.5安定版には互換性のない変更も含まれている。ライフタイムが特定の値より大きくなくてはならない場合を決定するルールが変更されたため,それらをパラメータ指定することができなくなった。これにより,チームが“clever”として記述したルールは,“fragile and unproven”としても参照されることになる。
今回のアップデートによってRustでは,“struct Parametri
<c>
のように定義されたデータ型のデストラクタにおいて,これまではfn dropがCに関してパラメトリックであると表されていたのが,Cパラメータが保持する値を参照できるように”なった。これに伴い,以前は受け入れられていたコードがrustc
にリジェクトされる可能性がある。
Rust 1.5はまた,生成するメタデータを20%縮小している。コントリビュータであるarielb1のコメントによると,“libcore.rlibが19121kiBから15394kiBに削減”された。
Hacker Newsでのディスカッションでは,ユーザの“Cshelton”がリリースについて意見を述べている。
まずは何よりも,おめでとう!
Rustを愛用しています。使う機会もどんどん増えています。‘cargo watch’は特にいいですね。パッケージマネージャに組み込まれたこれらのツールは,Rustを初めて経験する人にはとても役に立つでしょう。私がこれまで使ってきた言語のパッケージ管理システムの中で,Rustが最高のものだと言っていいと思います。
Rust 1.5に関する詳細は,リリースノートで確認することができる。