报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

面试侃集合 | LinkedBlockingQueue篇

码农参上

队列 Queue 8月日更

是时候封装限制 UITextField、UITextView 的最大字符长度了

fuyoufang

swift iOS 知识体系 8月日更

fil挖矿的规则是什么?fil挖矿收益如何?

区块链 分布式存储 IPFS fil收益 fil挖矿

快手处罚恶意炒作、审丑卖惨类账号,不良自媒体违背公序良俗

石头IT视角

Vue进阶(四十八):Vue.js 2.0 移动端拍照压缩图片预览及上传

No Silver Bullet

Vue 8月日更

Linux之alias命令

入门小站

Linux

【Flutter 专题】62 图解基本 Button 按钮小结 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

[灵魂拷问]MySQL面试高频100问(工程师方向)

编程菌

Java 编程 程序员 面试 计算机

前端之算法(九)回溯算法

Augus

算法 8月日更

Vue进阶(四十七):面试必备:2021 Vue经典面试题总结(含答案)

No Silver Bullet

面试 Vue 8月日更

ASCII对照表

入门小站

工具

数字化为企业带来哪些价值?

boshi

数字化转型

Springboot+quartz源码探索

4ye

Java 后端 springboot quartz 8月日更

图解:为什么非公平锁的性能更高?

王磊

Java 8月日更

Flink 和流式应用运维(十-下)

Databri_AI

flink 监控 Web UI

【前端 · 面试 】TCP 总结(一)—— 概述

编程三昧

8月日更

vue入门:element组件与动画使用

小鲍侃java

8月日更

网络攻防学习笔记 Day110

穿过生命散发芬芳

网络安全 8月日更

【微积分的力量】芝诺悖论

LeifChen

8月日更 微积分 芝诺悖论

微博评论高性能高可用架构设计

tjudream

高可用架构 微博评论 高性能计算架构 多级负载均衡 多级缓存

手撸二叉树之二叉树的层平均值

HelloWorld杰少

数据结构与算法 8月日更

Python代码阅读(第14篇):列表求并集

Felix

Python 编程 Code Programing 阅读代码

MySQL中FROM_UNIXTIME与UNIX_TIMESTAMP

一个大红包

8月日更

【设计模式】模板方法模式

Andy阿辉

C# 后端 设计模式 8月日更

SpringBoot 自动装配源码解析

Rubble

8月日更

获取自己的公网 IP 地址

耳东@Erdong

IP地址 8月日更

心态炸了!我的join查询多加了个过滤条件性能就崩了

林一

MySQL 查询优化 多表join

sql task2 基础查询与排序

橙橙橙橙汁丶

数据传输过程的序列化,你了解吗

卢卡多多

序列化 8月日更

埋土灰

箭上有毒

8月日更

LeetCode题解:2. 两数相加,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

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