2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Java之static关键字的应用【工具类、代码块和单例】

Fire_Shield

static 9月月更 实际应用

SQL为什么历经半个世纪却经久不衰?

雨果

sql

MobTech短信验证ApiCloud端SDK

MobTech袤博科技

API 短信验证

2022年8月中国网约车领域月度观察

易观分析

网约车

SAP Cloud Application Programming 编程模型(CAP)的设计准则

汪子熙

CAP Cloud SAP Cloud Studio 9月月更

中国的时区为什么是Asia/Shanghai,而不是Asia/Beijing?

Sher10ck

过等保是浪费钱吗?一定要过等保吗?

行云管家

等级保护 过等保 等保2.0

新书上市|一位家长的忠告:长大后不成才的孩子,父母都忽视了这个点!

图灵教育

育儿 教育 脑科学 基因

面了个阿里拿38k出来的,让我见识到了基础顶端

程序知音

Java java面试 后端技术 秋招 八股文

【微信小程序】页面导航详解

陈橘又青

9月月更

年轻一代程序员:社牛、不卷、玩开源

腾源会

开源 腾源会

信用卡市场发展洞察:浦大喜奔APP探索大零售融合经营体系

易观分析

金融 银行 信用卡

常见堡垒机小知识汇总-行云管家

行云管家

安全 IT 堡垒机 IT运维

马蹄链Dapp系统开发(智能合约)

薇電13242772558

提高数据可视化效果的五个原则

博文视点Broadview

TiFlash 源码阅读(九)TiFlash 中常用算子的设计与实现

PingCAP

#TiDB TiDB 源码解读

区块链追溯:让冷链物流“热”起来!

旺链科技

区块链 产业区块链 企业号九月金秋榜 冷链物流

技术分享| 分布式系统中服务注册发现组件的原理及比较

anyRTC开发者

音视频 分布式系统

ApacheCon Asia 2022 精彩回顾 | 如何让更多人从大数据中获益?

白鲸开源

漏洞管理流程

SEAL安全

漏洞修复 漏洞管理 企业号九月金秋榜

如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?

OpenHarmony开发者

OpenHarmony

新书上市|一位家长的忠告:长大后不成才的孩子,父母都忽视了这个点!

图灵社区

育儿 教育 脑科学 基因

工赋开发者社区 | 从零开始的新跨平台浏览器:Ladybird 正式起飞

工赋开发者社区

聊聊数据库主键那点事儿

Steven

DataLeap的Catalog系统近实时消息同步能力优化

字节跳动数据平台

大数据 kafka 数据治理 实时同步 数据研发

融云云盘,不止于存储

融云 RongCloud

云盘 云存储

云原生底座之上,顺丰智慧供应链领跑的秘密

华为云开发者联盟

云计算 云原生 后端 企业号九月金秋榜

如何进行 Apache Doris 集群 Docker 快速部署

SelectDB

数据库 Doris Docker 镜像 安装 & 部署 企业号九月金秋榜

QA如何高效参与技术设计评审

转转技术团队

质量管理 测试 技术设计质量把控

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