【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

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

关注

评论

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

彻底理解JavaScript执行上下文

Walker

Java 大前端 this指针 函数执行

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

大头星

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

区块链技术与我们的生活将并存

CECBC

区块链 数字经济

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

E科讯

如何让知识图谱告诉你“故障根因”

华为云开发者联盟

华为云 知识图谱 图谱

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

微服务 身份认证 Go 语言

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

区块链交易系统开发,期货合约平台搭建

区块链合约层是一种自动执行的数字协议

CECBC

区块链 智能合约

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者联盟

gpu caffe

服务质量分析:腾讯会议&腾讯云Elasticsearch玩出了怎样的新操作?

腾讯云大数据

大数据

所见即所得的用户增长技术背后是如何实现的

代立冬

大数据 用户增长 用户增长技术 ad-hoc技术

LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

开源决策树工具xDecision简介

赫杰辉

决策树 可视化 简化代码

USDT跑分承兑系统开发,区块链支付平台搭建

Netty之旅三:Netty服务端启动源码分析,一梭子带走!

一枝花算不算浪漫

Netty

架构师期末作业

傻傻的帅

知识点总结

Acker飏

区块链技术最重要价值所在

CECBC

区块链 数字经济 互联网革命

我写了一个TypeScript虚拟机。

渔子长

Java typescript 大前端 deno Node

在Ubuntu 20.04 搭建 Django 开发环境 以及 快速构建一个简单的 Blog

Matrix Chan

Python django 后端 Ubuntu20.04

介绍

剑心

学习

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者联盟

命令行 游戏 斗地主

SpringBoot写后端接口,看这一篇就够了!

华为云开发者联盟

后端 swagger pringboot

滴滴基于 Flink 的实时数仓建设实践

Apache Flink

flink

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

如何正确设置Java.home

谷鱼

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