写点什么

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:002420
用户头像

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

关注

评论

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

架构师训练营第六周作业

一剑

1. react起始 | 2020年前端再入门系列连载

chaozh

大前端 React

架构设计篇之中台战略思想与落地

小诚信驿站

架构设计 刘晓成 中台战略 服务化改造

架构师训练营 Week 06 作业

Wancho

CAP Theorem

dongge

week6.课后作业

个人练习生niki👍

极客大学架构师训练营

redis系列之——数据类型bitmaps:今天你签到了吗?

诸葛小猿

redis bitmaps bloomfilter

java 后端博客系统文章系统——No5

猿灯塔

Java

分布式系统架构作业

qihuajun

2020-07-11-第六周作业

路易斯李李李

用Roslyn做个JIT的AOP

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

用“实例化需求”,让需求澄清更高效

小隐乐乐

你要的《Spring系列源码解读》PDF它来了

z小赵

Java spring

面向对象编程学习

一叶知秋

第六周作业

秦宝齐

学习 极客大学架构师训练营

第六周总结

秦宝齐

作业

记一次Apache的代码导致生产问题

root

Java Apache spring BeanUtils

400GE燎原前夜,智能IP网络的核心路由器巅峰际会

脑极体

Rust所有权,可转可借

袁承兴

rust 指针 函数调用 引用 内存管理

架构师训练营第六周总结

一剑

CAP原理

chenzt

架构师训练营第 6 周作业二

不谈

架构师训练营第六周作业

R20114

极客大学架构师训练营

对CAP的理解

朱月俊

区块链扩张路径变局:从技术比拼转向生态落地

CECBC

架构师训练营 Week 06 总结

Wancho

React与前端开发发展史

LeetCode题解:15. 三数之和,JavaScript双循环+HashMap,详细注释

Lee Chen

大前端 LeetCode

分布式系统架构学习总结(分布式数据库和NoSQL)

qihuajun

Week 6 作业

Shawn

架构师第六周作业及总结

傻傻的帅

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