BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rust 1.14リリース,WebAssemblyの実験的サポートとrustup 1.0を提供

Rust 1.14リリース,WebAssemblyの実験的サポートとrustup 1.0を提供

原文(投稿日:2016/12/23)へのリンク

Rust 1.14が新たな実験対象としてWebAssemblyを導入するとともに,パターンマッチング構文を拡張する,とRustコアチームが伝えている。 さらにrustupが安定版となり,ソースからRustを構築する推奨手段となった。

多くのプラットフォームで利用可能なハードウェアの共通機能上でネイティブに近い実行速度を実現するための,低レベルでポータブルなバイトコードであるWebAssemblyが,新しいwasm32-unknown-emscriptenを通じてRustでサポートされるようになった。これによって開発者は,次のようにRustをWebAssemblyにコンパイルできるようになる。

$ rustup target add wasm32-unknown-emscripten
$ echo 'fn main() { println!("Hello, Emscripten!"); }' > hello.rs
$ rustc --target=wasm32-unknown-emscripten hello.rs

このコマンドはnodeで実行可能なhello.jsファイルを出力する。WebAssemblyのサポートはexperimentalとされており,RustのI/Oスタックなど一部のRustランタイムはまだ使用できない。WebAssemblyサポートにはemscriptenが必要であり,次のコマンドを実行してインストール可能だ。

curl -O https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz
tar -xzf emsdk-portable.tar.gz
source emsdk_portable/emsdk_env.sh
emsdk update
emsdk install sdk-incoming-64bit
emsdk activate sdk-incoming-64bit

言語の面では,Rust 1.0は.. パターンマッチング演算子の構文が拡張されて,該当するコンテキストの一部を選択的に無視することが可能になった。例えば,次のコードが正しく処理されるようになり,Pointタプルのyzの要素を無視して,xにマッチさせることが可能だ。

struct Point(i32, i32, i32);
let p = Point(0, 1, 2);

match p {
    Point(x, ..) => println!("x is {}", x),
}

従来の.. 演算子では,すべての要素を無視することのみが可能だった。

let p = Point(0, 1, 2);

match p {
    Point(..) => println!("found a point"),
}

Rust 1.14のもうひとつの大きな特徴はrustup 1.0で,これが安定版とみなされるようになったことだ。rustupは,Rustがサポートする数多くのプラットフォーム上で,Rustツールチェーン – rustcコンパイラや標準ライブラリなど – のさまざまなバージョンをダウンロードして切り換えるコマンドラインアプリケーションである。

Rust 1.14リリースには1,200を越えるパッチが含まれており,その詳細が公式リリースノートに記されている。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT