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タプルのyとzの要素を無視して,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を越えるパッチが含まれており,その詳細が公式リリースノートに記されている。
この記事を評価
- 編集者評
- 編集長アクション