写点什么

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

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

关注

评论

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

代码质量与安全 | 想在发布竞赛中胜出?Sonar来帮你

龙智—DevSecOps解决方案

代码质量 代码安全

万字详解JVM,让你一文吃透

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

专业移动办公解决方案!远程控制软件RayLink内测火热进行中!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

docker-compose下的java应用启动顺序两部曲之一:问题分析

程序员欣宸

Java Docker Docker-compose 11月月更

如何准备好一场vue面试

bb_xiaxia1998

Vue

python中私有成员和公有成员

乔乔

11月月更

谈谈企业级前端应用中客户端渲染和服务器端渲染的区别

汪子熙

前端开发 SSR SAP Spartacus 11月月更

vue面试之Composition-API响应式包装对象原理

bb_xiaxia1998

Vue

在Dubbo中,模板方法模式 用得真6

小小怪下士

Java 程序员 dubbo 阿里

软件测试面试真题 |你用过哪些用例设计方法?

测试人

软件测试 面试题 测试用例

React源码分析7-state计算流程和优先级

goClient1992

React

React源码分析6-hooks源码

goClient1992

React

谈谈vue面试那些题

bb_xiaxia1998

Vue

React源码解读之任务调度

flyzz177

React

DevUI开源经验分享:从0到1开始运营你的开源项目

华为云开发者联盟

开源 华为云 企业号十月 PK 榜

EMQ荣获“2022中国移动创客马拉松OneOS物联网专题赛”三等奖

EMQ映云科技

物联网 IoT emqx 云边协同 车路协同

2022年中国汽车OTA行业发展洞察

易观分析

汽车 OTA

梁胜博士:软件供应链安全两手抓,既要安全左移也要全链路防护丨活动回顾

SEAL安全

DevOps DevSecOps 软件供应链 安全左移 软件供应链安全

我把分布式音乐播放器适配了Stage模型

OpenHarmony开发者

OpenHarmony

React源码解读之更新的创建

flyzz177

React

【GitHub60K+Star】12W字Java后端技术总结,助力2023年春招

程序知音

程序员 java面试 面试技巧 后端技术 Java面试八股文

业界首个!快手提出亿级别多模态短视频百科体系——快知Kuaipedia

Geek老T

短视频 快手 泛知识

AI 模型编译器 MegCC 开源,解决推理引擎体积问题

MegEngineBot

深度学习 开源 MegEngine MegCC AI 模型编译器

react hook 源码完全解读

flyzz177

React

云原生系列四:Yelp 如何在 Kubernetes 上运行 Kafka

叶秋学长

kafka Kubernetes 11月月更 Yelp

vue2项目搭建-使用VUE CLI3.0搭建项目vue2+scss+element简易版

肥晨

脚手架 11月月更 vue2项目搭建

HDC 2022精彩继续,多重亮点进来看!

HarmonyOS开发者

HarmonyOS

vue这些原理你都知道吗?(面试版)

bb_xiaxia1998

Vue

什么是 HTML 语义化,有什么好处

肥晨

11月月更 HTML语义化 语义化标签

SAP 电商云的 Spartacus Storefront 如何配置多个 JavaScript Application

汪子熙

angular SAP commerce 电商云 11月月更

认证升级 | 秒云再次获评软件企业认证

MIAOYUN

双软认证 软件企业认证 软件产品认证

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