写点什么

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

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

关注

评论

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

码农远程办公指北

大伟

Vol.6 几个数据库相关的词

pyfn2030

数据库 大数据 新手指南

绝了!Dataway让Spring Boot不再需要Controller、Service、DAO、Mapper

哈库纳

StringBoot DataQL

如何用一台电脑制作一部动画短片?

zhoo299

动画 CG

Gartner 【RPA市场竞争格局】:中国厂商首次进入国际视野

人称T客

完美兼容老项目!Dataway 4.1.6 返回结构的全面控制

哈库纳

spring Spring Boot Dataway Hasor

无需代码!通过 Dataway 配置一个带有分页查询的接口

哈库纳

spring springboot Dataway Hasor

Anaconda与虚拟环境

halapano

Python virtualenv Anaconda

那些会阻碍程序员成长的细节[1]

MavenTalker

程序员 职业规划

Vol.5 Go初探,新手必看!

pyfn2030

编程语言 新手指南

使用SpreadJS 开发在线问卷系统,构筑CCP(云数据采集)平台

葡萄城技术团队

数据挖掘 大数据 SpreadJS CCP

ARTS-WEEK01

子路无倦

ARTS 打卡计划

【快点查查】微信小程序使用流程

tomatocc

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十)在项目中准备测试环境

编程道与术

Java 编程 软件测试 TDD 单元测试

Vol.4 了解一下渗透测试

pyfn2030

黑客 网络安全

《程序员的数学》笔记

Rex

读书笔记

Dataway 4.1.5 以上版本升级指南

哈库纳

string StringBoot Dataway Hasor

系统服务化构建-两方OAuth

图南日晟

微服务 软件工程 身份认证 架构设计

Dataway 整合 Swagger2,让 API 管理更顺畅

哈库纳

Spring Boot DataQL Dataway Hasor

Vol.2 谷歌不只有搜索

pyfn2030

谷歌Google

从 0 到 1 搭建技术中台之技术文化篇

伴鱼技术团队

企业文化 技术管理

AB 测试平台的设计与实现

伴鱼技术团队

架构 系统设计 后端 A/B

Vol.3 人工智能这么热,你必须知道一点儿!

pyfn2030

人工智能

自己常用的一些快捷键 windows10

halapano

Windows技巧

免费领课的活动你错过了么?

池建强

极客时间

Dataway 配置数据接口时和前端进行参数对接

哈库纳

Spring Boot DataQL Dataway Hasor

代码简洁之路 [持续更新]

hq

Java 大前端 编程习惯

计算机的时间

伴鱼技术团队

分布式 服务器 技术交流

说到做到

Yukun

拖延症

Wi-Fi p2p & ap 共存

贾献华

wifi p2p ap

艺术生,我劝你Mac

zhoo299

Mac CG 艺术

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