[关闭]
@Rays 2016-12-27T00:52:18.000000Z 字数 1359 阅读 1597

Rust 1.14提供对WebAssembly的实验性支持以及Rustup 1.0

未分类


摘要: Rust 1.14中引入了实验性的新WebAssembly编译目标,并扩展了模式识别操作符“..”的语法。此外,Rustup现已达到稳定,成为由源文件构建Rust的推荐方法。

作者: Sergio De Simone

正文:

据Rust核心开发团队在博客中所写,Rust 1.14中引入了实验性的新WebAssembly编译目标,并扩展了模式识别操作符“..”的语法。此外,Rustup现已达到稳定,成为由源文件构建Rust的推荐方法。

WebAssembly是一种可移植的底层字节码,能够使用多数平台具有的通用硬件能力让执行达到近原生的速度。Rust现在使用了新的“wasm32-unknown-emscripten”编译目标支持WebAssembly,开发人员可以通过执行如下的命令,将Rust编译为WebAsembly:

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

运行如上的命令将输出Node可运行的hello.js文件。正如前面所提及的,现在Rust对WebAssembly支持依然是实验性的,部分Rust Runtime依然完全不可用,例如Rust的I/O栈。WebAssembly的支持需要emscripten,可运行如下命令进行安装:

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

在语言前端上,Rust 1.0扩展了模式匹配操作符“..”的语法,实现了对使用了该操作符的部分上下文进行选择性的忽略。例如,现可使用如下代码正确地匹配Point元组中的x并忽略其中的y和z元素:

  1. struct Point(i32, i32, i32);
  2. let p = Point(0, 1, 2);
  3. match p {
  4. Point(x, ..) => println!("x is {}", x),
  5. }

先前“..”操作符只能用做忽略全部元素,例如:

  1. let p = Point(0, 1, 2);
  2. match p {
  3. Point(..) => println!("found a point"),
  4. }

Rust 1.14的另一个显著特性是Rustup 1.0,它现在已经相当稳定。Rustup是一个命令行应用,可为一些支持平台下载不同版本的Rust工具链(即编译器rustc和标准库)并做切换。

Rust 1.14的发布中具有超过1200个补丁,详细信息参见官方发行说明

查看英文原文:Rust 1.14 Brings Experimental WebAssembly Support and Rustup 1.0

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注