写点什么

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

  • 2016-12-29
  • 本文字数:956 字

    阅读完需:约 3 分钟

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

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

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

运行如上的命令将输出 Node 可运行的 hello.js 文件。正如前面所提及的,现在 Rust 对 WebAssembly 支持依然是实验性的,部分Rust Runtime 依然完全不可用,例如Rust 的I/O 栈。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 元组中的 x 并忽略其中的 y 和 z 元素:

复制代码
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 工具链(即编译器 rustc 和标准库)并做切换。

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

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


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-29 18:002261
用户头像

发布了 227 篇内容, 共 82.8 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营模块4作业

En wei

架构实战营

小谈音视频质量检测

箭上有毒

音视频 5月日更

你习惯写注释吗?

ES_her0

5月日更

IOS端音频的采集与播放

floer rivor

音视频

cri-o技术探秘3

xumc

Docker 容器 cri-o pinns

数据挖掘从入门到放弃(三):朴素贝叶斯

数据社

机器学习 5月日更

用 Python 打印九九乘法表 - DAY7

Qien Z.

Python 5月日更

架构实战训练营 - 模块4 - 作业

Presley

缓存数据一致性 - 架构师峰会演讲实录

万俊峰Kevin

缓存 微服务 cache 分布式缓存 Go 语言

zstd c++ string 压缩&解压

hashyong

c++ 程序员 架构 5月日更 zstd

🍃【Spring原理系列】让你知道真正的“AOP”

码界西柚

spring aop 面向切面 spring aop 5月日更

Python 正则表达式

若尘

正则表达式 正则 Python编程 5月日更

网络攻防学习笔记 Day16

穿过生命散发芬芳

5月日更 网络攻防

Golang 别名类型

escray

学习 极客时间 Go 语言 5月日更

Python 之父爆料:明年至少令 Python 提速 1 倍!

Python猫

Python

K8s二开之 client-go 初探

雪雷

Kubernetes Go 语言

系统思考力建立3个简单操纵方法

风翱

系统性思考 5月日更

模块四:课后作业

黄先生

架构训练营

我的Serverless实战—玩转腾讯云Wordpress

liuzhen007

Serverless 5月日更

MySQL 数据库学习笔记(2)

lenka

5月日更

垄断

小天同学

商业 市场垄断 5月日更

模块四作业

c

架构实战营

一文看懂 slice

Rayjun

Go 语言

<精益创业>读后感

Bruce Talk

敏捷 随笔 Agile

重学Scrum三大支柱 《Scrum指南》重读有感(1)

Bruce Talk

Scrum 敏捷 随笔 Agile

perf + 火焰图用法 小结

hashyong

程序员 架构 5月日更 perf

图像灰度与灰阶的纠结:gray level/scale译文释义

老猿Python

灰度 图形图像处理 数字图像处理 灰阶 gray scale

模块4作业

Geek_2e7dd7

架构训练

SaaS的前世、今生与未来[下篇]

LigaAI

SaaS

下周极客时间课程学习计划

IT蜗壳-Tango

5月日更

SimpleDateFormat线程不安全的5种解决方案!

王磊

Java 后端 5月日更

Rust 1.14提供对WebAssembly的实验性支持以及Rustup 1.0_语言 & 开发_Sergio De Simone_InfoQ精选文章