【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

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

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

关注

评论

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

谈谈控制感(4):损失的后果很严重

史方远

职场 心理 成长

阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南

古时的风筝

Java规范 Java开发手册

高仿瑞幸小程序 09 云数据库初体验

曾伟@喵先森

小程序 微信小程序 大前端 移动

谈谈双亲委派模型的第四次破坏-模块化

寻筝

Java JVM

Java实现Base64

Java

经历过疫情,你懂得了什么

Winann

疫情 个人成长 生活 成长

初次见面

KAMI

Azure App 部署Django 和 PostgrSQL

yann [扬] :曹同学

Python azure

JVM源码分析之Object.wait/notify实现

猿灯塔

JVM

数列找规律的问题

oldj

数学

“四个维度” 讲明白什么是微服务!

周果

微服务 单体系统 架构设计 团队组织 康威定律

Leetcode 556. Next Greater Element III

隔壁小王

算法

游戏发行中学到的重要经验(严肃长文)

谢锐 | Frozen

独立开发者 游戏开发 游戏出海 移动互联网

elasticsearch源码解析(一)——restapi

罗琦

elasticsearch 源码分析 RESTful

为什么软件开发很难外包

刘华Kenneth

外包 DevOps 风险 背锅

一篇文章搞定Java处理Excel的各种疑难杂症

知春秋

Java Excel POI

Web3极客日报#140

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

网站系统架构演进

Janenesome

读书笔记 程序员 架构 系统设计

决战下半场:小程序技术助力金融APP重回C位

FinClip

小程序 数字化转型 app重构

零基础如何学架构

兆熊

架构

记一次MHA切换故障踩的坑

一个有志气的DB

MySQL 高可用 复制 主从同步 故障分析

游戏夜读 | Scikit-learn的2018自述

game1night

奔腾吧,“后浪”李子柒!

无量靠谱

网红

浅析 - CocoaLumberjack 3.6 之 DatabaseLogger

Edmond

ios sqlite log4j CocoaLumberjack DDLog

看完这篇HTTP,跟面试官扯皮就没问题了

cxuan

https okhttp

找一个更好的理由

史方远

职场 成长 工作

如何在 Mac 上优雅的截图和录屏

Winann

macos 效率 效率工具 Mac

战略懒惰有多可怕

Neco.W

创业 重新理解创业 初创公司

服务发现:ZooKeeper vs etcd vs Consul

Tux Hu

Docker 容器 微服务 etcd Consul

回“疫”录(17):返宁的前一天

小天同学

疫情 回忆录 现实纪录 纪实

程序员的晚餐 | 5 月 15 日 如果不写代码了,那就开个饺子店

清远

美食

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