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

返回本页常规视图.

WebAssembly规范

WebAssembly规范

1 - 规范概述

Wasm规范概述

Wasm规范内容:

为了支持将WebAssembly嵌入到不同的环境中,它的规范被分割成不同的层,并在不同的文档中指定。

核心规范

定义了独立于具体嵌入的WebAssembly模块的语义。WebAssembly核心在一个单独文档中指定了WebAssembly Core。

嵌入器规格

定义应用程序编程接口(API),使WebAssembly模块能够在具体的嵌入环境中使用。目前,制订了两个API:

  1. JavaScript Embedding:定义了从JavaScript中访问WebAssembly的JavaScript类和对象,包括用于验证、编译、实例化的方法,以及作为JavaScript对象表示和操作导入和导出的类。

    https://webassembly.github.io/spec/js-api/index.html

  2. Web Embedding:定义了专门在Web浏览器中提供的JavaScript API的扩展,特别是一个用于流式编译和从源绑定的Response类型实例化的接口。

    https://webassembly.github.io/spec/web-api/index.html

2 - 核心规范

Wasm核心规范

2.1 - 核心规范概述

Wasm核心规范概述

https://webassembly.github.io/spec/core/

内容

WebAssembly Specification

Release 1.1 (Draft, May 08, 2020)

Editor: Andreas Rossberg

3 - WASM Image规范

WASM Image规范

3.1 - WASM Image规范概述

Wasm镜像规范概述

简介

WASM OCI映像规范定义了如何将WASM模块打包成OCI镜像。WASM OCI镜像由一个WASM二进制文件、配置文件和目标WASM运行时的元数据组成。

该规范是通用的,允许任何类型的WASM模块,无论它是用来扩展任何Envoy、OPA还是浏览器。

该规范可以被认为是OCI Image Spec的扩展,专门为生产和消费WASM模块(相对于应用容器而言)的应用程序而设计。它旨在提供一个标准机制来管理WASM模块的构建和运行。

本文档将WASM Envoy过滤器考虑为OCI镜像存储的主要用例。

描述

WASM OCI镜像规范定义了一种存储WASM模块的方法,它使WASM模块易于构建、拉取、发布和执行。

由于WASM模块的每个执行环境(运行时)可能有运行时特定的配置参数,因此WASM镜像由内容层(WASM模块本身)和配置层(包含描述模块的元数据)组成,这些元数据与目标运行时相关。

分层

内容层总是由WASM模块二进制组成。

配置层由JSON格式化的字符串组成,其中包含目标运行时的元数据。通过解析config层可以推导出镜像的运行时和ABI版本。

根据目标运行时的不同,config层还可能包含额外的数据。例如,WASM Envoy过滤器的config包含过滤器上可用的root_ids。

为了简单起见,本规范只支持每个映像的单个模块。

使用Envoy运行OCI镜像

Envoy支持通过本地磁盘上的文件或 “Http datasource “加载和运行WASM模块。

Envoy WASM过滤器可以按照规范存储,并在本地缓存的帮助下,从远程注册中心中拉取镜像,从而运行Istio和Gloo。

然后控制平面配置Envoy实例通过本地缓存加载过滤器,如果可用的话,使用镜像配置中提供的必要的root_id参数来加载。

4 - 代理规范

WebAssembly for Proxies (ABI specification)

https://github.com/proxy-wasm/spec