这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

Wasmer文档

Wasmer文档

1 - Wasmer Runtime

Wasmer Runtime文档

https://docs.wasmer.io/ecosystem/wasmer

Wasmer允许您运行WebAssembly模块,无论是独立嵌入式内其他语言,如 C/C++, Rust, Python, Go, PHP, Ruby…

根据设计,WebAssembly模块运行所在的环境与底层主机系统的原生功能完全隔离(或沙盒化)。这意味着默认情况下,Wasm模块被设计为仅执行纯计算。

因此,通常无法从WASM访问“ 操作系统”级资源,例如文件描述符,网络套接字,系统时钟和随机数。

但是,在许多情况下,Wasm模块需要执行的工作不仅仅是执行纯计算。它们必须与原生“ OS”功能交互。

Wasmer旨在提供三个关键功能:

  1. 使程序能够在任何编程语言中运行
  2. 使极其便携的二进制文件能够在Wasmer支持的任何“ OS”(例如,Linux,macOS,Windows和FreeBSD)上运行,且无需修改。
  3. 充当Wasm模块的安全桥梁, 通过诸如 WASIEmscripten(版本1.38.43和更早版本)这样的的应用二进制接口(Application Binary Interfaces/ABI)与原生“ OS”功能交互。

对于第一种情况,我们提供了多种语言集成,允许从任何编程语言中运行相同的Wasm模块。

对于第二种情况,我们提供了独立运行时以在任何平台和芯片组上运行Wasm二进制文件。

重要提示:

上面使用的术语“ OS”用引号引起来,表明被调用的原生功能实际上可能不是由主机的操作系统提供的。

实际上,原生函数始终属于运行WebAssembly模块的主机环境,并且可以是主机语言的运行时环境(例如JavaScript,Python或Ruby),也可以是实际的操作系统。 。

无论哪种方式,从WebAssembly的角度来看,我们都不必太在乎这个细节。我们需要知道的是:

  • 主机可以为WebAssembly模块提供“导入”功能
  • 通过Wasmer附带的ABI,WebAssembly模块可以使用不同级别的沙箱访问一组类似于操作系统的功能

2 - Wasmer文档概述

Wasmer文档概述

文档来自 https://docs.wasmer.io/

3 - Wasmer Feature

Wasmer Feature文档

https://docs.wasmer.io/ecosystem/wasmer/wasmer-features

Wasmer WebAssembly运行时为用户和开发人员提供了各种功能:

  • 后端: Wasmer支持多个编译器后端:SinglepassCraneliftLLVM。这些中的每一个在编译速度与运行速度之间都有不同的权衡。
  • 缓存:可以重复使用已编译的WebAssembly模块,因此后续运行Wasm文件的启动时间很短
  • 计量:可以监视计算时间和其他资源,并可以设置限制来控制Wasm代码的运行方式。这也称为“gas metering/气体计量”
  • WebAssembly功能
    • 多值返回:从函数返回多个值,使host和guest之间的数据传输更加简单
    • SIMD:单指令,多数据:更快地执行重数运算和/或以更低的功耗使用
  • ABI:它允许使用ABI运行编译到WebAssembly的不同类型的程序,例如:
    • Emscripten
    • WASI

详细支持情况看原文。

备注:Rust 的支持还是挺好的。

4 - Wapm

Wasmer WAPM文档

https://docs.wasmer.io/ecosystem/wapm

WAPM = WebAssembly Package Manager

WAPM 是WebAssembly模块的包管理器,可以被任何WebAssembly运行时(如Wasmer运行时)独立使用。

WAPM生态系统使WebAssembly更易于开发人员使用。该系统起始于以下几个工具:

  • 用于存储和提供服务的 WAPM包注册中心 wapm.io

  • WAPM 打包客户端(称为 wapm CLI)用于安装和管理软件包 WAPM-CLI GitHub仓库

wax

https://docs.wasmer.io/ecosystem/wapm/wax

wax = The WebAssembly package Runner

Wax允许直接在shell中运行wamp中可用的任何命令,而无需进行会污染目录的全局安装。

Manifest