Rust and WebAssembly 先导篇

51 篇文章 6 订阅

原文地址:Rust 🦀 and WebAssembly 🕸

为什么是Rust和WebAssembly?

  • 更底层的控制与高等级的工学设计
  • 更小的 .wasm 体积
  • 不需要重写任何东西
  • 良好的兼容性

更底层的控制与高等级的工学设计

JavaScript网络应用着力于获得更加可靠的性能和表现。但是JavaScript的动态类型和垃圾回收造成的卡顿会产生反面的影响。如果你不小心偏离了JIT的最佳路径,看似很小规模的代码的改动都可能造成性能的急剧下降。

更小的 .wasm 体积

代码大小很重要,因为对于许多JavaScript Web application,相关的文件都是通过网络下载的。并且Rust的运行时很小,因此 .wasm 文件也比较小。因为不需要垃圾收集器这种额外的机制。您只需要为实际使用的功能支付时间代价。

不需要重写任何东西

不需要丢弃现有的代码库。您可以首先将您对性能最敏感的 JavaScript 函数移植到 Rust,以获得直接的好处。

良好的兼容性

Rust 和 WebAssembly 与现有的 JavaScript 工具集成。它支持 ECMAScript 模块,您可以继续使用您喜欢的工具,例如 npm 和 Webpack。

相关背景概念

什么是 WebAssenbly

WebAssembly (wasm) 是一种简单的机器模型和可执行格式,具有广泛的规范。它旨在便携、紧凑,并以或接近原生速度执行。

作为一种编程语言,WebAssembly 由两种表示相同结构的格式组成,尽管方式不同:

  1. .wat 文本格式(称为wat for “WebAssembly Text”)使用 S-expression,并且与 Scheme 和 Clojure 等 Lisp 语言家族有一些相似之处。
  2. .wasm 二进制格式是更低级的,旨在提供wasm虚拟机直接使用。它在概念上类似于 ELF 和 Mach-o。

线性内存

WebAssembly 有着非常简单的内存模型。 wasm 模块可以访问单个“线性内存”,它本质上是一个扁平的字节数组。此内存可以增加页面大小 (64K) 的倍数。它不能缩小。

WASM 只能用于Web吗?

虽然它目前在 JavaScript 和 Web 社区中引起了广泛的关注,但 wasm 对其宿主环境没有任何假设。因此,推测 wasm 将成为一种“可移植的可执行”格式,在未来用于各种上下文是有道理的。然而,截至今天,wasm 主要与 JavaScript (JS) 相关,它有多种风格(包括 Web 和 Node.js)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值