Rust and WebAssembly 先导篇

2024-02-29 10:08
文章标签 rust webassembly 先导

本文主要是介绍Rust and WebAssembly 先导篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址: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)。

这篇关于Rust and WebAssembly 先导篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758403

相关文章

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

【Rust光年纪】Rust 机器人学库全景:功能、安装与API概览

机器人学+Rust语言=无限可能:六款库带你开启创新之旅! 前言 随着机器人技术的快速发展,对于机器人学领域的高效、可靠的编程语言和库的需求也日益增加。本文将探讨一些用于 Rust 语言的机器人学库,以及它们的核心功能、使用场景、安装配置和 API 概览,旨在为机器人学爱好者和开发人员提供参考和指导。 欢迎订阅专栏:Rust光年纪 文章目录 机器人学+Rust语言=无限可能:

第二十二章 rust数据库使用:sea-orm详解

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust数据库使用:sea-orm详解 目录 注意一、前言二、项目管理三、迁移文件四、实体文件五、业务使用 一、前言 只要开发稍微大型一点的项目,数据库都是离不开的。 rust目前并没有特别成熟的数据库框架,sea-orm这个框架是我目前所看到的成熟度最高的一个,并且仍在积极开发中。 所以本文将以sea-orm框

Rust使用之【宏】

一、简单使用clap clap = { version = "4.5.17", features = ["derive"] } 其中,什么是features = ["derive"]:表示你希望在添加 clap 依赖时启用 derive 特性。这通常意味着你希望使用 clap 的派生(derive)宏功能,这些功能可以简化创建命令行接口的代码。例如,derive 特性可以让你使用 #[der

第二十一章 rust与动静态库的结合使用

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust与动静态库的结合使用 目录 注意一、前言二、库生成三、库使用四、总结 一、前言 rust中多了很多类型的库,比如前面章节中我们提到基本的bin与lib这两种crate类型库。 如果你在命令行执行下列语句: rustc --help 那么你将能找到这样的内容: --crate-type [bin|li

Rust的常数、作用域与所有权

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一  -CSDN博客 Rust到底值不值得学,之二-CSDN博客 Rust的数据类型-CSDN博客 3.7  常数的数据类型 在Rust语言中,变量有类型,常量也有类型。我们知道,在定义const常量的时候,就要

搭建Rust的开发环境

目标 我没有使用过Rust,但我听说它是一个可靠的语言,可以保证内存安全和线程安全。我对此很有兴趣,就想试一试这个语言。 在官网上有介绍他们所推荐的编辑器: 我将选择 Visual Studio Code (关于 【Visual Studio】和【Visual Studio Code】的区别:【VS】是完整的集成开发环境,而【VSCode】只算的上是一个相对轻量级的文本编辑器,并附带一些便捷

Rust的数据类型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一  -CSDN博客 Rust到底值不值得学,之二-CSDN博客 3.5  数据类型的定义和分类 在Rust编程中,所谓数据类型,就是对数据存储的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的