全网最火的5+优秀 WebAssembly 运行时!

今天给大家带来的主题是全网最火的运行时,话不多说,直接开始!浏览器和其他运行时环境高效执行。模块,包括服务器、命令行工具和浏览器扩展。它可以用作独立的运行时或集成到其他应用程序和环境中,适用于广泛的用例,包括服务器端执行、命令行工具和浏览器

大家好,很高兴又见面了,我是”高级前端‬进阶‬”,由我带着大家一起前端前沿、深入前端底层技术,大家一起进步,也欢迎大家、、收藏、转发!

高级前端‬进阶

今天给大家带来的主题是全网最火的运行时,话不多说,直接开始!

前言

是除了 以外,另一种可以在网页中运行的编程语言。过去如果开发想在浏览器中运行代码来对网页中各种元素进行控制,只有 这一种选择。

所以当人们谈论 的时候,往往会拿 来进行比较。但是它们其实并不是“二选一”的关系,即并不是只能用 或者 。

实际上,浏览器鼓励开发者将这两种语言一起使用,即使不亲自实现 模块,也可以学习它现有的模块打开浏览器cpu占用过高怎么办,用它的优势来实现功能。

图片来自:

模块定义的一些功能可以通过 来直接调用。所以就像开发者通过 npm 下载 模块并通过 API 使用它一样,现在开发者也可以直接下载 模块并且使用其提供的功能。

总之, 是一种偏底层、可移植的二进制格式,旨在由现代 Web 浏览器和其他运行时环境高效执行。 它旨在成为高级编程语言的编译目标,用于构建在不同平台和设备之间共享的应用程序和库。

接下来,带着大家一起来看看目前最火的几个运行时。

1..1 是什么

是一个轻量级、高性能和可扩展的 运行时, 它是当今号称最快的 Wasm VM。

是由 CNCF 托管的官方沙箱项目,而CNCF 是一个开源的、供应商中立的云原生计算中心,托管 和 等项目,使云原生具有普遍性和可持续性。

的用例包括现代 Web 应用程序架构(同构和 应用程序)、边缘云上的微服务、无服务器 SaaS API、嵌入式功能、智能合约和智能设备等方方面面。

是世界上第一个正式的 CNCF 运行时项目,可以设想它将作为边缘云的关键任务轻量级运行时,在 CNCF 的开源云计算领域发挥重要作用。

1.2 的主要特征

可以运行从 C/C++、Rust、Swift、 或 源代码编译的标准 字节码程序。同时,它还受到标准语言和编译器工具链的支持,例如 LLVM、Rustc 和 。

在安全、快速、轻量、可移植和容器化的沙箱中运行 ,包括第 3 方 ES6、CJS 和 NPM 模块。 它还支持混合使用这些语言(例如,使用 Rust 实现 API)、Fetch API 和边缘服务器上的服务器端渲染 (SSR) 功能。

目前支持所有标准的 功能和扩展提案,例如:WASI 规范、引用类型、批量内存操作和 SIMD,同时也在积极探索 wasi- 提案以支持 程序中的网络访问。 它还支持许多为云原生和边缘计算量身定制的扩展。例如, 网络套接字和 扩展。

还支持针对特定应用场景设计的非标准扩展。

由C++编写,目前在上有5.6K的star、500+ fork、确实有一定的热度。

2..1 是什么

是在非浏览器上下文中运行 Wasm 的一种方式,提供基于 的超轻量级容器。专注于支持在任何平台上运行 WASM 代码,为其他跨平台运行时(例如 Java)提供了潜在的替代方案。

在 上将自己描述为“一个快速且安全的 运行时,它使超轻量级容器可以在任何地方运行:从桌面到云、边缘和物联网IOT设备”。

使用熟悉的工具和喜欢的语言,将所有内容编译为 。可以在任何操作系统上运行它或将其嵌入到其他语言中。

2.2 主要特征

有以下明显特点:

是一个 开源的编译器,可以将 C/C++ 的代码编译成 胶水代码或者 代码

尝试可以从运行 开始,这是一个编译为 模块 (qjs.wasm:查看文末资料下载) 的小型可嵌入 引擎:

$ wasmer qjs.wasmQuickJS - Type "h" for helpqjs > const i = 1 + 2;qjs > console.log("hello " + i);hello 3

由Rust编写,目前在上有14.6K的star、600+ fork、超过4.9K的项目使用它。

3.WAVM3.1 什么是WAVM

WAVM( 虚拟机)是 (WASM) 的高性能、可移植运行时,可以在独立环境中或作为主机应用程序的一部分执行 WASM 模块。 它的设计轻量、高效,可用于在各种上下文中执行 WASM 模块,包括服务器、命令行工具和浏览器扩展。

WAVM 是可以执行 WASM 模块的几个运行时环境之一,并且以其对性能和灵活性的而著称。

WAVM 在 C++ 中实现,并在 MIT 许可证下发布。 它是开源的并且积极开发,非常注重安全性、可移植性和与 WASM 规范的兼容性。 它可以用作独立的运行时或集成到其他应用程序和环境中,适用于广泛的用例,包括服务器端执行、命令行工具和浏览器扩展。

3.2 WAVM特点快速

WAVM 使用 LLVM 将 代码编译为机器代码,性能接近原生。 在某些情况下,它甚至可以超越本机性能,这要归功于生成特定CPU运行机器代码的能力。

WAVM 还利用虚拟内存和信号处理程序来执行 的边界检查内存访问,其成本与本机未经检查的内存访问相同。

安全

WAVM 阻止 代码访问 虚拟机之外的状态,或调用您未明确链接到 模块的本机代码。

WAVM 容易受到某些边信道攻击(Side- ),例如 变体 2。WAVM 可能会为特定的边信道攻击添加进一步的缓解措施,但要防范所有此类攻击是不切实际的。

您应该使用另一种隔离形式,例如操作系统进程,以保护敏感数据免受不受信任的 代码的影响。

便携

WAVM 是用可移植的 C/C++ 编写的,带有少量特定于体系结构的汇编和 LLVM IR 生成代码。

WAVM 在 X86-64 、MacOS 和 Linux 上经过测试并完全支持。 它旨在在任何 POSIX 兼容系统上运行,但并未在其他系统上进行例行测试。

对 的支持正在进行中。 WAVM 主要在 Linux 上运行,但在处理 堆栈溢出和部分越界存储方面存在一些已知错误。

WAVM 的运行时需要 64 位虚拟地址空间,因此不能移植到 32 位主机。 然而,WAVM 的汇编器和反汇编器在 32 位主机上工作。

完全支持 1.0+可扩展

WAVM 完全支持 1.0,并加上许多扩展:

WAVM由C++编写,目前在上有2.4K的star、200+ fork。

4..1 什么是

是一个字节码联盟项目,它是一个独立的 wasm-only 优化运行时,用于 和 WASI。 它可以在 Web 环境之外运行 代码,既可以用作命令行程序,也可以用于嵌入到更大应用程序中的库。

致力于成为一个高度可配置和可嵌入的运行时,以在任何规模的应用程序上运行,不过目前许多功能仍在开发中。

4.2 特点

如果已经安装了 Rust 编译器,那么可以获取一些 Rust 源代码:

fn main() {    println!("Hello, world!");}

然后通过编译和执行:

$ rustup target add wasm32-wasi$ rustc hello.rs --target wasm32-wasi$ wasmtime hello.wasmHello, world!

由Rust编写、目前在上有11.7K的star、900+ fork,超过16.5K的项目使用它。

5.其他Wasm运行时5.1 Wasm3

快速的 解释器和最通用的 WASM 运行时。

A fast , and the most WASM .

Wasm3 可以用作的库包含: 、 Rust 、 C/C++ 、、Zig 、Perl Swift 、 .Net 、Nim 、 、 、 、等等

wasm3 通过了 规范测试套件,能够运行诸多 WASI 应用程序。最低系统要求:~64Kb 代码和~10Kb RAM。wasm3 可在多种架构(x86、、ARM、RISC-V、、MIPS、、ARC32 等)和平台上运行:

Wasm3由C语言编写、目前在上有5.9K的star、360+ fork。

5.3 wasm-micro-

Micro (WAMR) 是一个轻量级的独立 (WASM) 运行时,具有占用空间小、高性能和高度可配置的特性。适用于从嵌入式、物联网、边缘到可信执行环境 (TEE)、智能合约、云原生等应用程序 。 它包括以下几个核心组成部分:

Micro 由C语言编写、目前在上有3.6K的star、450+ fork,代码贡献者超过100+。

6.本文总结

本文主要和大家介绍前端最火的几个运行时,包括:、、WAVM、、Wasm3、WAMR等等以及它们的特点,其中和由Rust编写打开浏览器cpu占用过高怎么办,而和WAVM由C++编写,Wasm3、WAMR由C语言编写。关于六个运行时到底哪个最好,文章并没有给出答案,大家可以在实际项目中探索。

针对每一个运行时,后续都会单独出文进行详细介绍。如果有兴趣,可以直接在我主页继续阅读,但是文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家、评论、转发、收藏!

参考资料

本文到此结束,希望对大家有所帮助。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/79018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
软文友链广告合作联系站长qq81118366